第二章.FaceBook的技术构架
2.1 FaceBook 使用的技术
Facebook使用LAMP(Linux、 Apache、 MySQL、 PHP)作为技术构架.
为什么我们不选择其他语言架构.
我们知道,Facebook 平均每个用户每天要访问超过 50 个页面,我们需要更性能的响应时间.
其实语言并不是最重要,重要的是优化的架构.无疑,LAMP架构是最能适合我们的.它具有高效架构的资本, Apache在Linux运行稳定,速度快. PHP采用cache构架速度惊人.Mysql具有高效的查询速度.总体结合起来,我们采用LAMP系统.
2.2 Facebook开放平台解析
下面我将以我们的照片程序为例介绍每一个组件.应该注意的是这种结构并不是强制要求的,但是包含的组件越多用户体验就越丰富.
2.2.1 产品目录
大部分的用户都是在Facebook程序目录看到你的产品的,这就是为什么你需要用形象、生动的文字来描述你的程序.
2.2.2 产品介绍
点击Facebook程序目录中的链接会进入程序的介绍页面,这里告诉用户这个程序的相关信息.你应该通过对程序的介绍吸引用户安装它.
2.2.3 左侧边栏
程序应该有自己的图标和名字,可以显示在左侧的Facebook导航栏中.点击左侧边栏中的链接会进入该程序的主页.
2.2.4 Facebook主面板
a.程序首页
程序的首页通过点击左侧边栏的链接进入.这个首页应该包含好友最新创建的页面,以吸引好友经常访问.例如,照片程序的首页显示了好友最近创建的相册.
b.用户管理面板
用户可以通过用户资料页面右上角的下拉菜单进入管理面板.在管理面板中,用户可以管理他们的内容或者查看其他用户在通过该程序创建的内容的相关信息.
2.2.5 用户信息
Facebook中的用户信息应该是他们在现实世界中的真实信息,在用户信息中包含许多项目.用户可以通过自己的信息来展示自己.
a.用户活动信息栏
用户活动信息栏中显示了该用户最近更新的信息或者最近的活动.用户可以利用在这里的个人信息展示自己的身份.
b.个人链接
你可以在用户信息的照片下面设置一些用户个人链接,指向用户在你的程序中的更多信息.你甚至可以为没有安装你的程序的用户设置这些链接(在照片程序中,所有的浏览者都可以看到安装了该程序的用户的个人信息).
2.2.6 隐私设置
用户可以通过Facebook隐私设置页面来决定谁可以看到自己的活动信息栏.你可以在程序的隐私设置页面中放置更多的隐私选项.
2.2.7 新闻
你的程序应该包含新闻功能,可以显示该用户的好友的最新消息.每个用户的新闻数目有一个上限,达到上限以后,如果用户不进行清理,他将无法看到更多的新闻.例如,在照片程序中,新闻栏可以显示该用户的好友最近上传的照片.
2.2.8 提醒
你的程序应该能够通过电子邮件给用户发送提醒信息.用户比如同意通过电子邮件发送才能激活该功能,并且用户可以随时停止任何程序的电子邮件提醒.
2.2.9 消息附件
用户可以通过消息输入框下面的一个下拉菜单来创建消息的附件.用户添加了附件之后,该功能将提取内容并显示在消息输入框下面.
2.2.10
你的程序应该能够在首页的右上角显示请求信息.这些请求通常由该用户的好友发出,并且要求该用户对其进行处理.例如在照片程序中,给照片添加标签的请求信息.
2.3 FaceBook核心技术构架
2.3.1 Cache
任何一个成功的站点都有一套最合适自己的Cache策略.
Facebook 平均每个用户每天要访问超过 50 个页面,PHP的页面载入时间的优化就比较重要了.在 PHP Cache 层,Facebook 采用了 APC.
2.3.2 分布式服务器
为了能快速响应用户的请求,以及大容量的数据我们采用分布式服务器部署.这也保证了网站的稳定性.
CORBA是Common Object Request Broker Architecture(通用对象代理体系)的缩写.它是一个软件架构,定义了软件对象如何能互相影响,而不管这些软件对象是用什么编程语言书写,运行在什么样的机器和操作系统上.要实现这些,CORBA定义了一系列对象之间进行通信的协议,如IIOP和GIOP.通信的中介是ORB (Object Request Broker),由ORB来管理对象之间的通信.CORBA的基本架构如图所示.
2.3.3 Facebook的域模型
下图用UML类图的形式,显示了Facebook系统所管理的信息.它提炼出了Facebook数据库中的实体、关系、字段.