使用OpenID、OAuth和Facebook Connect武装你的站点

March 15, 2010 by SLJ | Category:Web Structure | No Comment 1,049

如果你正在盘算着如何为你的新网站创建身份管理系统(通常也称为用户管理系统或权限管理系统)的话,在动手之前你一定要看看Dion Hinchcliffe写的这篇题为《现代Web身份:为什么你的Web应用应该支持OpenID、OAuth,以及可能应该支持Facebook Connect》的文章,你或许会在读完之后改变你的主意。在他看来,使用这些新一代Web身份管理系统是完成这一工作更快的做法,而且功能更强且更好。他认为通过这种方法:

  • 可以更容易、更快捷和更安全地让使用者在你的站点建立他们身份。
  • 可以让业务可以单点登录到你的应用。
  • 把你的站点转变成为一个针对于第三方应用的平台,让这些应用可以安全地访问用户数据。
  • 可以将你的站点或应用集成到使用者及其关系网的社交体验(social experience)中。

在简要回顾企业单点登录和Web身份管理的历史之后,Dion给出了当今实现Web单点登录的新思路:使用OpenIDOAuth和(可选的)Facebook Connect
More »

[译]Facebook是如何设计的

October 6, 2009 by SLJ | Category:Web Structure | No Comment 7,745

最近,Facebook设计团队在其位于加州帕罗奥多市(Palo Alto)的总部,提到了他们为2.5亿用户设计的原理和方法。 他们特别强调了编写代码的重要性、较早并经常分享设计、从开始到结束都参与到一个项目中、以及不要爱上你的作品等,并多次提到要确保设计师有足够的技术来写代码。

 

  • Facebook设计团队致力于产品设计、市场、UI模式、品牌以及前端开发。团队由15名产品设计是、5个UI工程师、5个用户体验设计师、4个交互设计师、以及一个1个内容策划。在这家1000人的公司中,共有25位设计师。
  • 通过写前端代码将设计融入到公司的工程文化中去。
  • 一个团队是如何为2.5亿用户设计的?4个前提:贯穿始终、早分享勤分享、自己动手、不爱上自己的设计。

1) 设计师需要从开始就参与进来:从策划到发布。这与其它公司不同。

  • Facebook 花费很多时间以确保设计师能够自始至终参与到项目中。
  • 比如:新版首页在3月份发布。需求简化和提高网站中信息传输方式的效率。同时涉及数据结构和视觉结构。
  • 确定视觉效果后,开始写代码制作原型。边编码边设计允许你看到布局内的真实数据是如何工作的。
  • 平衡权重——在主页设计中做一系列的探索,包括不断的在交互和视觉细节上。
  • 让不同的团队在一起——使用了一个静态的模型以传达设计。通常并不提倡静态设计。
  • 拥有一个能写代码的设计师能够了解细节并快速执行。

More »

Facebook 如何存储150亿张、1.5PB的照片

May 1, 2009 by SLJ | Category:Web Structure | No Comment 1,920

Facebook 的照片分享很受欢迎,迄今,Facebook 用户已经上传了150亿张照片,加上每张照片有四个不同尺寸的缩略图,就共有600多亿张图片,总容量超过1.5PB,而每周新增的照片为2亿2000万张,约25TB,高峰期,Facebook 每秒处理55万张照片,这些数字让如何管理这些数据成为一个巨大的挑战。本文由 Facebook 工程师撰写,讲述了他们是如何管理这些照片的。

旧的 NFS 照片架构

老的照片系统架构分以下几个层:

  • 上传层接收用户上传的照片并保存在 NFS 存储层。
  • 照片服务层接收 HTTP 请求并从 NFS 存储层输出照片。
  • NFS存储层建立在商业存储系统之上。

因为每张照片都以文件形式单独存储,这样庞大的照片量导致非常庞大的元数据规模,超过了 NFS 存储层的缓存上限,导致每次招聘请求会上传都包含多次I/O操作。庞大的元数据成为整个照片架构的瓶颈。这就是为什么 Facebook 主要依赖 CDN 的原因。为了解决这些问题,他们做了两项优化:

  • Cachr: 一个缓存服务器,缓存 Facebook 的小尺寸用户资料照片。
  • NFS文件句柄缓存:部署在照片输出层,以降低 NFS 存储层的元数据开销。

新的 Haystack 照片架构

新的照片架构将输出层和存储层合并为一个物理层,建立在一个基于 HTTP 的照片服务器上,照片存储在一个叫做 haystack 的对象库,以消除照片读取操作中不必要的元数据开销。新架构中,I/O 操作只针对真正的照片数据(而不是文件系统元数据)。haystack 可以细分为以下几个功能层:

  • HTTP 服务器
  • 照片存储
  • Haystack 对象存储
  • 文件系统
  • 存储空间

More »

↑ Top