18

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

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

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

4

3 回答 3

26

由于您的问题是用 C#、ASP.NET 标记的,因此您应该使用很棒的SignalR库。基本上SignalR使您能够向客户端发送推送通知。它使用哪种确切的底层技术受服务器和客户端功能的影响。

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

http://jabbr.net/

这里还有一些可以帮助您入门的链接。

于 2012-07-10T09:16:53.353 回答
8

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

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

说起来容易做起来难,尤其是当您有 8 亿潜在用户登录时!

于 2012-07-10T08:43:41.943 回答
0

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

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

于 2012-07-10T10:32:43.967 回答