锁定老帖子 主题:转载:Facebook Chat的架构
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-31
from infoq.com/cn
最近在Facebook工程师博客上 ,软件工程师Eugene Letuchy写了一篇关于Facebook Chat项目的决策细节 的文章。
Eugene在文中指出了面临如此庞大的客户群会遇到的一系列挑战。首先的挑战是:
另外一个挑战是实时消息的发送。Facebook采用的是客户端直接从服务器将新消息“拉”的方式,跟Comet的XHR长时间轮询 (Comet's XHR Long Polling) 过程比较相似。
Eugene 接着又提到了“大量长时间的同步请求使得LAMP组合中Apache这一部分成为不确定的实现因素”。在在集群和分区子系统上,Facebook选择了C ++和Erlang的组合。C++模块用户用于记录聊天信息,而Erlang模块“将在线用户的对话保存在内存中并且对长时间轮询(long- polled)请求提供支持”。epoll ,Linux 2.6中出现的新系统调用,被用于驱动Erlang模块。Eugene 解释了决定选用Erlang的原因:
用于“跨语言可扩展服务部署”的开源框架Thrift (Facebook在去年愚人节发布)被用来将Facebook Chat中用到的各种技术结合起来,其中就包括Erlang的功能绑定。 启动这项服务的方式也比较有意思——利用所谓的“摸黑启动(dark launch)”
Facebook选用Erlang是对此语言认可和肯定,具有重大意义。Erlang的资深布道使Yariv Sadan 感慨道:
查看英文原文 :Facebook Chat Architecture 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1581 次