设计原则

  • 尽可能的使用开源软件,并且在需要优化的时候进行优化
  • Unix 哲学。包括,模块化原则;整合化原则;清晰化原则等
  • 任何组件具备扩展性
  • 最小化故障影响
  • 简化,简化,简化!

架构概览

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

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

PHP 经验

参见《Facebook 的 PHP 性能与扩展性》

MySQL 经验

  • 主要用于做 Key-Value 类型的存储操作,数据随机分布在多台逻辑实例上,访问多数基于全局 ID 。
  • 逻辑实例分散在多台物理主机上(超过1800台),负载均衡在物理层进行。
  • 不做读复制。
  • 尽量不做逻辑数据迁移(成本太高)。
  • 不做 JOIN 操作 (豆瓣在 QCon 上也阐述了这一点)。数据是随机分布的,关联操作反而带来了极大的复杂度。
  • 对于数据访问,主要的操作集中在最新的数据上,针对这部分做优化,旧的数据进行归档。
  • 在中心 DB 绝不存储非静态数据。
  • 使用服务或者 Memcached 进行全局查询。

Memcached 经验

参见我以前的笔记:Facebook 的 Memcached 扩展经验。Facebook 对 Memcached 做了不小的改进。另外,顺便说一下,前两天 Memcached 刚在 1.2.7 发布几天之后又发布了新版本 1.2.8,修正了一些问题。

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

  • 获取个人信息数据:通过Cache,隐性通过用户所在的 DB 获取(基于 User-ID 获知 DB)
  • 获取朋友连接信息:通过Cache,否则的话通过DB(基于 User-ID 获知 DB)
  • 并行抓取每个朋友的 10个照片相册 ID ,从Cache抓取,如果失效,再从 DB 抓取(基于相册 ID)
  • 并行抓取最近相册中的照片数据
  • 运行PHP 把整个业务逻辑跑出来
  • 返回数据给用户

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

Facebook NewsFeed 的架构示意图

Facebook 搜索功能的架构示意图

管中窥豹,盲人摸象而已。

facebook网站框架技术相关推荐

  1. 大数据开源框架技术汇总

    主要基于对现阶段一些常用的大数据开源框架技术的整理,只是一些简单的介绍,并不是详细技术梳理.可能会有疏漏,发现再整理.参考得太多,就不一一列出来了.这只是作为一个梳理,对以后选型或者扩展的做个参考. ...

  2. BSV Planaria框架技术总结二 Bitquery

    BSV Planaria框架技术总结二 Bitquery 此文是变形虫技术总结的第二篇,阅读此文之前建议先阅读关于变形虫的前两篇文章. Bitcoin SV的开发哲学--变形虫框架 BSV Plana ...

  3. J2ee分布式框架--技术介绍文档

    1.      项目核心代码结构截图 jeesz-utils jeesz-config jeesz-framework jeesz-core-cms jeesz-core-gen jeesz-core ...

  4. 网站建设技术――智能建站系统

    2019独角兽企业重金招聘Python工程师标准>>> 第一代网站建设技术 运用一般的网页制作软件,把一些平面页面效果转化成网页,然后把网页链接起来成为一个企业网站.采用" ...

  5. ZKWeb网站框架的动态编译的实现原理

    ZKWeb网站框架是一个自主开发的网页框架,实现了动态插件和自动编译功能. ZKWeb把一个文件夹当成是一个插件,无需使用csproj或xproj等形式的项目文件管理,并且支持修改插件代码后自动重新编 ...

  6. Java开发必须掌握的8种网站攻防技术

    转载自 Java开发必须掌握的8种网站攻防技术 XSS攻击 XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),是WEB应用程序中最常见到的攻击手段之一.跨站脚本攻击指的是攻击 ...

  7. 搭建视频网站的技术方案

    一.视频网站和普通网站的区别 搭建视频网站和搭建普通网站,在技术实现方案上有很大的差别,因此,当有人问我是否可以采用搭建普通网站的方法搭建视频网站时,我会明确的告诉他们不可以,否者就贻笑大方了. 视频 ...

  8. 《大型网站架构技术》系列分享专栏

    在这里整理一些大型网站架构方面的技术文章,包括大型网站存储,架构,静态化处理,高并发,高性能方面的问题处理,解决方案等知识 <大型网站架构技术>已整理成PDF文档,点击可直接下载至本地查阅 ...

  9. 转载:如何开发高性能低成本的网站之技术选择

    如何开发高性能低成本的网站之技术选择 每个企业都是慢慢发展起来的,在起步阶段成本是一个不得不考虑的重大问题 .直接入正题: 前台框架:  ASP.NET MVC + Jquery + Json + F ...

最新文章

  1. jenkins安装插件一直不动
  2. 人生第一份Offer,国企、私企、外企该选择哪一个?
  3. APUE(7)---进程环境
  4. 小程序功能模块-在线考试2.10.3源码
  5. 阿里回应被列为被执行人;Linus Torvalds:我已经不是程序员;Ant Design 4.4.1 发布 | 极客头条
  6. Java编程:获取用户是否输入回车符
  7. python线性拟合numpypolyfit_python – 具有适配参数的numpy.polyfit
  8. PowerDesigner 下载地址
  9. VSEARCH:最简单易学的扩增子分析流程
  10. 扒一扒那些叫欧拉的定理们(八)——欧拉公式和自然对数的底e
  11. 识人 用人 激人 留人 斩人
  12. Unity游戏开发:3D冒险游戏项目实战
  13. 男人最喜欢女人说的五句话
  14. 医学影像dcm格式转jpg运行慢解决方案
  15. PCL(Point Cloud Library)的第三方库简介(boost,eigen,flann,vtk,qhull)
  16. 永磁直驱风力发电机结构图_干货丨永磁直驱式风力发电工作原理
  17. Exception from HRESULT: 0x80004004 (E_ABORT) 的错误
  18. 【获得学位条件】绩点计算与要求
  19. Cocos2d-x 小试牛刀五子连珠游戏
  20. 利用深度学习的智能决策支持系统:实现智能化决策的关键要素

热门文章

  1. 无法抓取的视频,暴力破解之路
  2. 【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯
  3. 渗透测试工具:Burpsuite简略介绍4---Intruder
  4. 转自51CTO的帖子——宅男程序员给老婆的计算机课程
  5. 关于nginx容器日志按天保存的配置
  6. 2022081班李亚楠20220927
  7. linux下eclipse汉化包,Archlinux KDE 添加中文语言包
  8. python 抓包与解包
  9. 使用PerformanceCounter,提示找不到网络
  10. CodeMix使用教程:智能感知