`

Facebook 架构学习

阅读更多

参考:http://www.dbanotes.net/arch/facebook_arch_note.html

 

在 QCon 2008 (旧金山站) 上Facebook 做的这个技术分享有不少值得借鉴的东西。所以,暂停对 QCon 北京的回顾,临时插播一贴。

设计原则

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

架构概览

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

Facebook Arch Overview.png

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

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_NewsFeed_Arch.png

Facebook 搜索功能的架构示意图

Facebook_Search_Arch.png

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

--EOF--

 

分享到:
评论

相关推荐

    FaceBook架构设计.zip

    这个压缩包“FaceBook架构设计.zip”包含了对Facebook如何处理海量数据、提供高效服务的深入探讨。以下是对其中核心知识点的详细说明: 1. **分布式系统**:Facebook架构的基础是分布式计算,它将服务分散在...

    架构之美(face book架构)

    《架构之美:Facebook架构解析》是一本深入探讨大型互联网公司,特别是Facebook的系统架构与设计的书籍。作为架构师的必备读物,它揭示了如何构建可扩展、高可用、高性能的复杂网络服务。以下是对该主题的详细阐述:...

    著名网站架构设计(包括Facebook Google Amazon

    网站架构设计是构建高效...通过深入学习这些文章,我们可以了解到如何设计和优化大规模网站架构,以应对不断增长的用户需求和业务挑战。这些知识对任何希望在IT行业尤其是云计算和大数据领域发展的专业人士都极具价值。

    各大公司架构,豆瓣网,facebook,淘宝

    【Facebook架构】 Facebook是全球最大的社交网络平台,其架构设计以处理海量用户数据和实时交互著称: 1. **Hadoop/BigTable**:Facebook使用这些大数据存储系统处理用户产生的海量数据。 2. **Tornado**:...

    【架构与优化】从Facebook中集思广益,相互学习

    【架构与优化】从Facebook中集思广益,相互学习

    著名网站架构设计(包括Facebook Google Amazon 共计123篇).rar

    网站架构设计是构建高效、可扩展且可靠的互联网服务的核心,对于大型互联网公司如Facebook、Google和Amazon来说,其背后的技术架构至关重要。这个压缩包“著名网站架构设计(包括Facebook Google Amazon 共计123篇)....

    facebook源码

    Facebook作为全球最大的社交媒体平台,其源码无疑是许多开发者、学习者和技术爱好者关注的焦点。深入研究Facebook源码可以帮助我们理解大型分布式系统的架构设计、前端优化策略以及后端服务的实现原理。本文将从以下...

    云计算英文论文 Facebook

    最后,论文可能会展望Facebook的未来云计算战略,如在人工智能和机器学习领域的应用。Facebook已经在图像识别、语言理解和推荐系统等方面运用AI技术,云计算为这些技术提供了强大的计算能力。 总的来说,这篇...

    安卓Android源码——FaceBook.zip

    下面,我们将深入探讨这个主题,涵盖Android源码分析、Facebook应用的架构设计以及可能涉及的关键技术。 1. **Android源码分析**: Android源码是开发者了解系统底层工作原理、优化性能和定制系统的基石。在这个...

    各互联网公司的网站架构

    在本压缩包中,我们能够了解到包括Facebook、YouTube、淘宝和豆瓣等知名互联网公司的网站架构设计。这些公司的架构设计都是业界的典范,具有很强的学习和参考价值。 1. Facebook的网站架构: Facebook作为全球最大...

    架构之美(精选版)电子书

    - **案例学习的价值**:通过实际案例的学习,可以帮助读者更好地理解和应用架构设计原理。 #### 五、本书特色 - **多维度视角**:从不同角度和层面探讨架构设计,涵盖了理论基础到实战应用的各个方面。 - **实践...

    国外技术干货:facebook-performance-caching-dc.zip

    标签“facebook”,“性能”,“架构”和“学习资料”揭示了文档的主要内容将围绕Facebook的系统架构,如何提升服务性能以及作为学习材料的价值。 文件“F4mAa47GwRx1i4yztVgx0Mmw5cabQ7pU”可能是一个临时或随机...

    中外著名互联网公司架构设计

    在学习这些公司的架构设计时,我们需要关注以下几个关键点:分布式计算、数据存储解决方案、负载均衡、容错机制、性能优化、安全防护以及持续集成与持续部署(CI/CD)流程。通过深入理解这些概念和技术,我们可以为...

Global site tag (gtag.js) - Google Analytics