浅谈Facebook的服务器架构(组图)

简介: 导读:毫无疑问,作为全球最领先的社交网络,Facebook的高性能集群系统承担了海量数据的处理,它的服务器架构一直为业界众人所关注。CSDN博主yanghehong在他自己最新的一篇博客《 Facebook的服务器架构》中分享了他的看法。

导读:毫无疑问,作为全球最领先的社交网络,Facebook的高性能集群系统承担了海量数据的处理,它的服务器架构一直为业界众人所关注。CSDN博主yanghehong在他自己最新的一篇博客《 Facebook的服务器架构》中分享了他的看法。

大体层次划分

Facebook的架构可以从不同角度来换分层次。

一种是:一边是PHP整的经典的LAMP stack;另外一个是非PHP整的各种service

lamp services

Facebook的页面从刚创立的时候扎克伯格写的,到现在,都用PHP开发。后端有用各种语言开发的service。它们之间用跨语言的thrift RPC通信(Scribe也是建立在Thrift之上)

另外一个角度划分的层次是:

layers

前面是负载局衡器(没说是用硬件的还是软件的);负责分配 前端的Web服务器, Web服务器是用PHP来聚合数据;最后面是 ServicesMemcached和数据库。

有意思的是对后面三种的定性:

Services – 快速,复杂; 自己开发的业务进程,来实现复杂的业务逻辑,速度快。

Memchached – 快速,简单;Memchached做简单的key-value缓存,服务应用快速的读请求。

数据库 缓慢,持久。数据库做持久存储,磁盘IO自然慢,不过有memcached做缓存没关系。

NewsFeed的架构

写:

Bob更新状态,Web服务器上的PHP程序除了将内容到MySQL数据库之外,也将该行为动态的ID通过Scribe发到一个Leaf Server(根据Bob的用户ID选的Leaf Server)

write

读:

另一个人Alice打开Facebook,加载主页,PHP程序向Aggregator服务器查询(Thrift调用)Aggregator从若干个Leaf Server里头读出Alice的朋友的所有行为动态/action的前四十个,aggregator做聚合和一定的排序,返回给PHP程序。

read 1

PHP程序获得这些行为动态的ID之后,从Memcached中读出这些ID对应的内容,如Memcached没有则从MySQL数据库中读,汇聚后生成HTML返回给浏览器。

Chat的架构

页面请求,仍WEB服务器处理(PHP)处理,当然也依赖web tier之后的各种Service。比如查看消息历史啊,在线用户列表啊,发送聊天消息啊。

接收聊天消息,则没通过PHP服务器,而是专用的用Erlang写的Channel服务器来处理,通过long-polling来接收聊天消息。Channel服务器是Chat服务的核心部件。发送的消息通过web tier发到Channel服务器。

后方有用C++写的chatlogger服务器来做历史记录的读写。

同样也用C++写了presence服务器来从channel服务器汇集在线状态。

系统的简化结构如下图所示:

Web tier, chatlogger, presence, channel 都是多个服务器组成的集群。

Channel服务器有根据User ID做分区,每个分区由一个高可用的Channel集群服务。

Web tier, chatlogger, presence,在公开的文章和PPT中并没说这些集群具体怎么做分布和冗余备份的。

目录
相关文章
|
11月前
|
Web App开发 安全 数据安全/隐私保护
谷歌浏览器的受欢迎之谜:探析其引人入胜的特点
谷歌浏览器的受欢迎之谜:探析其引人入胜的特点
|
数据采集 搜索推荐 安全
如何实现谷歌霸屏?
答案是:可以使用GLB外推技术实现谷歌霸屏。 理解谷歌霸屏 谷歌霸屏的含义 谷歌霸屏,即在搜索引擎结果页(SERP)上,通过各种优化手段,使得自己或自己公司的信息占据大量位置。 这种做法旨在优化网站在搜索结果中的排名,提高品牌曝光度,并从而增加网站流量和销售收入。
142 0
如何实现谷歌霸屏?
|
人工智能
一些业内有名的网站收集
丹麦Icon设计师的主页http://jonas.seph.ws/生活在澳洲的19岁中国UI设计师http://www.istartedsomething.com/韩国icon工作室http://www.
1017 0
|
Python 缓存 Apache
YouTube系统架构【YouTube如此,你应该更有信心】
上一期,和大家分享了12306架构优化思路,本期讲和大家分享YouTube架构设计,阅读了本文你将了解到YouTube初期架构是个什么样子,以此,增强自己站点架构设计的信心。
1260 0
|
存储 分布式计算 监控
揭秘全球最大网站 Facebook 背后应用软件
2010年6月,Google公布全球Top 1000网站。Facebook独占鳌头。 以Facebook现在的经营规模,诸多传统服务器的技术均将崩溃或根本无法支撑。那么面对5亿的活跃用户,Facebook的工程师们又将如何让网站平稳运转呢?这篇文章将展示Facebook的工程师完成这个艰巨任务所用到的一系列软件。
1369 0
|
存储 安全
“百度劫持者”现身网络 状似“维护”谷歌
卡巴斯基实验室近日截获到一种名为“百度劫持者”的广告软件样本。此广告软件会直接劫持用户对百度的访问,直接跳转到谷歌。这让很多受感染用户非常苦恼,因为不管用户在浏览器的地址栏怎样输入百度的网址,回车后打开的页面始终都会跳转到谷歌中文的页面。
1043 0
|
监控 NoSQL 关系型数据库
|
机器学习/深度学习 计算机视觉