教你识透Facebook的网站框架LAMP
创始人
2024-07-22 19:01:06
0

  了解facebook网站框架技术-LAMP:

  一、设计原则:

  尽可能的使用开源软件,并且在需要优化的时候进行优化

  Unix 哲学。包括,模块化原则;整合化原则;清晰化原则等

  任何组件具备扩展性

  最小化故障影响

  简化,简化,简化!

  二、架构概览

  Facebook 是 LAMP 的坚定支持者,也差不多是用 LAMP (或许用 LAM2P 更适合) 实现的最大的动态站点。

  

Facebook Arch Overview.png

 

  基础组件加上服务,中间用自己实现的一些工具进行粘合。其中关于运维细节的事情基本不会说出来的,这是很多公司的软实力所在。

  三、MySQL 经验

  主要用于做 Key-Value 类型的存储操作,数据随机分布在多台逻辑实例上,访问多数基于全局 ID 。

  逻辑实例分散在多台物理主机上(超过1800台),负载均衡在物理层进行。

  不做读复制。

  尽量不做逻辑数据迁移(成本太高)。

  不做 JOIN 操作 (豆瓣在 QCon 上也阐述了这一点)。数据是随机分布的,关联操作反而带来了极大的复杂度。

  对于数据访问,主要的操作集中在最新的数据上,针对这部分做优化,旧的数据进行归档。

  在中心 DB 绝不存储非静态数据。

  使用服务或者 Memcached 进行全局查询。

  四、Memcached 经验

  一个比较有价值的是关于个人页面数据的获取的描述。这个就完全是需要做单页面 Benchmark 的细致活儿了,可能还需要产品经理能够理解工程师的"抵抗"。

  获取个人信息数据:通过Cache,隐性通过用户所在的 DB 获取(基于 User-ID 获知 DB)

  获取朋友连接信息:通过Cache,否则的话通过DB(基于 User-ID 获知 DB)

  并行抓取每个朋友的 10个照片相册 ID ,从Cache抓取,如果失效,再从 DB 抓取(基于相册 ID)

  并行抓取最近相册中的照片数据

  运行PHP 把整个业务逻辑跑出来

  返回数据给用户

  然后是对 Facebook 非 LAMP 体系的东西做了一番介绍,基本上也开源了。最后参考两个架构图。

  Facebook NewsFeed 的架构示意图

  

Facebook_NewsFeed_Arch.png

 

  Facebook 搜索功能的架构示意图

  

Facebook_Search_Arch.png

 

  

【编辑推荐】

Ubuntu下LAMP的配置

如何在Linux下安装lamp

使用yum安装LAMP的方法

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...