用新浪微博登录

只需一步,快速搞定

 找回密码
 立即注册

用新浪微博登录

只需一步,快速搞定

查看: 3122|回复: 1
打印 上一主题 下一主题

[技术] 浅谈Facebook的服务器架构

[复制链接]

签到天数: 88 天

[LV.6]常住居民II

1461

主题

1万

帖子

3万

积分

管理员

游戏青春

Rank: 9Rank: 9Rank: 9

积分
37898

社区居民工蜂业余写手偶尔光临最爱沙发社区平民兵蜂做个有钱人认证用户在线达人略有小成渐入佳境常驻会员忠实会员常坐沙发蜂王小有名气知名人物沙发如床友好人士游聚十周年

跳转到指定楼层
楼主
发表于 2011-8-19 15:38:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 |          
  大体层次划分:Facebook的架构可以从不同角度来换分层次。

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

  

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

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



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

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

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

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

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

  NewsFeed的架构

  写:

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

  读:

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

  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集群服务。

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

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

180

主题

2852

帖子

7598

积分

LV 12.会员

我是喷子我骄傲

积分
7598

社区居民偶尔光临工蜂最爱沙发业余写手常坐沙发沙发如床社区平民做个有钱人常驻会员忠实会员略有小成渐入佳境兵蜂蜂王在线达人

沙发
发表于 2011-8-25 10:11:32 | 只看该作者
一直玩不了,郁闷,彻底的被封杀,谁告诉我该怎么去玩到了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

     
    Archiver|手机版|小黑屋|( 沪ICP备12034951号 )

GMT+8, 2024-12-27 10:30 , Processed in 0.151193 second(s), 32 queries .

© 2001-2011 Powered by Discuz! X3.1

快速回复 返回顶部 返回列表