【发布时间】:2012-02-07 01:18:22
【问题描述】:
有时在聊天时,如果我在一个窗口中向聊天中的朋友发送消息并切换到另一个打开 facebook 的窗口/选项卡(当然聊天窗口也打开),我的消息会自动弹出那里。
同样,如果朋友 ping 你,ping 会转到所有 facebook 加载的窗口/标签。不想要繁重的细节,但 facebook 如何管理这个。
【问题讨论】:
有时在聊天时,如果我在一个窗口中向聊天中的朋友发送消息并切换到另一个打开 facebook 的窗口/选项卡(当然聊天窗口也打开),我的消息会自动弹出那里。
同样,如果朋友 ping 你,ping 会转到所有 facebook 加载的窗口/标签。不想要繁重的细节,但 facebook 如何管理这个。
【问题讨论】:
这是 facebook 上关于该主题的博文:https://www.facebook.com/note.php?note_id=14218138919
您想知道的最有可能在本段中描述:
对于 Facebook Chat,我们推出了自己的用于记录聊天消息的子系统(在 C++ 中)以及一个 epoll 驱动的 Web 服务器(在 Erlang 中),它将在线用户的对话保存在内存中并为长期服务提供服务轮询的 HTTP 请求。两个子系统都进行了集群和分区,以实现可靠性和高效的故障转移。为什么选择二郎?简而言之,因为问题域像手套一样适合 Erlang。 Erlang 是一种面向功能并发的语言,具有极低权重的用户空间“进程”、无共享的消息传递语义、内置分发,以及在大型软件上二十年的部署证明的“崩溃和恢复”理念- 实时生产系统。
【讨论】: