服务器端推送的可扩展解决方案?
我想实现一个机制,提供一个RESTful API,让客户端可以向服务器注册对某个主题的兴趣,并在注册后从服务器接收异步通知。在企业级的消息架构中,这种方式被称为发布/订阅模式。
在桌面应用程序中,这个功能比较容易实现,但在网页应用程序中,这就变得有点困难了。
有没有什么(最好是开源的)框架或库,可以让网页应用程序使用发布/订阅模式呢?
服务器端的技术可以用以下任意一种语言:C、C++、PHP、Python、Ruby。
我使用的是Linux Ubuntu 10.0.4。
3 个回答
2
如果你提前知道会有很多人(或者应用程序)想要在某个话题上收到通知,而另一方面你又只有几个不同的话题,那就考虑使用拉取技术吧。
像RSS和Atom这样的技术虽然是拉取的方式,但还是很成功。原因是:你不需要在服务器上管理订阅的人,也不用去检测谁不再感兴趣(比如某个用户长时间不在线),或者去想办法把所有数据发送给订阅者。使用推送技术的话,服务器需要做的事情很少,而客户端每次只需要拉取少量数据。
拉取方式稍微消耗一点带宽,但带宽其实很便宜,而它可以帮你节省很多CPU和软件维护的成本,这些可是相对昂贵的。
3
看看这个叫做pubsubhubbub的协议:http://en.wikipedia.org/wiki/PubSubHubbub
这是这个项目的源代码:http://code.google.com/p/pubsubhubbub/