百度空间 | 百度首页 
               
 
查看文章
 
Facebook chat 技术架构摘要
2008-05-22 23:47
最近看到了不少Facebook chat技术架构的介绍,如 InfoQInside Facebook。总结如下,公开的资料以概念为主,没有什么新的或特殊的亮点。

Presence notification
  • Facebook Chat 与一般的IM系统一样。最复杂之处不是消息发送,而是在线状态通知。而facebook为了提高用户体验,考虑增加的功能更增大这些处理,比如好友可以看到某个用户“idle-for-10-minutes”,用户即使不操作也有巨大负荷。
  • 处理量是:O(平均好友数 * 在线用户峰值 * 变化频率) msg /sec ?
Comet
  • Facebook 网页上是一种特殊的comet, 每打开一个页面调用一个iframe, iframe直至有消息才会输出。Polling + push?
  • Comet不适合用Apache来跑, 可参看comet server之java实现:asyncweb,jetty,tomcat
  • Facebook使用基于epoll技术的erlang web server
Erlang
  • Why Erlang? 因为erlang有天生的并发支持,不需要one thread per connection,轻量级的 "processes"
  • Erlang跟其他语言交互式是选用Erlang的最大问题,Facebook为了解决这个问题,自己开发了open source的Thrift,实现远程RPC
因暂时没计划用Erlang, 借鉴的地方不多,想试下Java7 Doug Lea 的 Fork/Join


(图片来源为 blog.rd2inc.com)


类别:高性能服务器 | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2008-05-27 11:43 | 回复
个人理解, erlang和Java7 Doug Lea 的 Fork/Join不是一个层级的东西, erlang主要做分布式, 而 Java7 Fork/Join 局限于单机
 
2
2008-06-08 21:18 | 回复
gghere, 你的观点没错,IMHO, Java里面分布式实现不是什么大问题,但one thread per client对于大型应用是比较困扰的问题。
 
3
2008-08-12 18:53 | 回复
Facebook 的在线状态比较像我现在做的这个了,呵呵
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu