Facebook的网站框架LAMP
来源:互联网 发布:高中刷题软件 编辑:程序博客网 时间:2024/05/22 14:55
原文作者:chwshuang javaeye
了解facebook网站框架技术-LAMP:
一、设计原则:
尽可能的使用开源软件,并且在需要优化的时候进行优化
Unix 哲学。包括,模块化原则;整合化原则;清晰化原则等
任何组件具备扩展性
最小化故障影响
简化,简化,简化!
二、架构概览
Facebook 是 LAMP 的坚定支持者,也差不多是用 LAMP (或许用 LAM2P 更适合) 实现的最大的动态站点。
基础组件加上服务,中间用自己实现的一些工具进行粘合。其中关于运维细节的事情基本不会说出来的,这是很多公司的软实力所在。
三、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 搜索功能的架构示意图
- Facebook的网站框架LAMP
- facebook网站框架技术
- facebook网站框架技术
- facebook网站框架技术
- Facebook的网站架构
- LAMP架构的网站
- facebook开放的源码,框架。
- Facebook框架
- 在你的网站中整合facebook
- 基于LAMP的网站搭建介绍
- Facebook POP框架的简单使用
- 开源动画框架Facebook的Pop
- Facebook最新的深度学习框架
- Facebook 网站架构总结
- Facebook 网站架构总结
- Facebook 网站架构
- 【案例分析】通过Facebook说社交网站扩张的隐患
- 为何有如此多的网站模仿facebook?
- LPC1768简述
- 使用stringstream转换类型
- 树状数组
- 关于RTP时间戳及多媒体通信同步的问题
- dialog module (5)屏幕上显示某个表的内容(Table Control)
- Facebook的网站框架LAMP
- VS2005下CLAPACK的安装(批注版)
- 前端必备:jQuery 1.7.1API手册
- 流行的jquery 提示插件
- 关于WIN32,MFC,数据库
- ZipInputStream解压含有中文名称文件的zip包
- Unable to get view server version from device emulator-5554 解决办法
- 结合回调函数介绍下泛型函数
- Android MonkeyRunner 工具回放讲解