即时通知,如Facebook

我正在构建一个社交应用程序,并想知道facebook如何实现他们的通知。 如您所知,facebooks通知是即时的。 一旦有人采取行动,人们就会得到通知。

我假设他们没有一直在数据库上运行查询。

有人能指出我正确的方向。 谢谢

由于你的问题用C#标记,ASP.NET应该使用很棒的SignalR库。 基本上SignalR使您可以向客户端发送推送通知。 它使用的确切底层技术受服务器和客户端function的影响。

有一个名为jabbR的大型实时聊天网站建立在SignalR

http://jabbr.net/

以下是一些可以帮助您入门的链接。

  • 项目现场: http : //signalr.net/
  • 托管代码(开源): https : //github.com/SignalR/SignalR
  • Wiki: https : //github.com/SignalR/SignalR/wiki
  • 使用它的项目: https : //github.com/SignalR/SignalR/wiki/Projects-Using-SignalR

Facebook使用称为Thrift的消息传递协议(它设计)。 这允许从客户端到具有非常低延迟的服务器的通知。 我想会根据用户操作触发服务器上的更新,并且相同的机制会通知登录的相关用户。

使用诸如thrift之类的消息传递协议(也参见协议缓冲区 ),客户端不必轮询服务器以获取更新,而是服务器可以将通知推送到客户端。 要做到这一点,服务器需要知道谁在任何时候登录(登录,注销握手)以及谁应该接收来自特定客户端操作的通知。

说起来容易做起来难,特别是当你有8亿潜在用户登录时!

您可能想看看http://nodejs.org/ – 它是一个事件驱动模型,非常适合“社交网络”/即时通知场景。

仅供参考:您也可能会发现,使用非SQL数据库(如MongoDB(http://www.mongodb.org/))从数据库查询时会快得多,因为社交网络方案中的每个“人”对象都有他/她自己的独特属性 – 在普通的SQL数据库中很难设计。