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