使用 Google PubSubHubbub 协议实现即时通知

阅读数:2195 2009 年 9 月 8 日

话题:Google架构

PubSubHubbub是一个“开放的、服务器对服务器、基于 Web-hook 的发布 / 订阅协议,是 Atom 和 RSS 的扩展”。凭借该协议,感兴趣的参与者在 feed 有更新时会收到即时通知。该协议由 Google 开发,在 Google Code 中可以找到同名的项目

PubSubHubbub 协议将“拉”机制转变成了“推”机制,客户端不用再定时轮询服务器以查看 feed 是否有更新。客户端订阅一个 Hub,当 feed 有更新时 Hub 会即时通知客户端。项目主页上描述的处理过程如下:

  • feed URL(“主题”)在 Atom 或 RSS 的 XML 文件中使用 <link rel="hub" ...> 描述自己的 Hub 服务。Hub 可以由 feed 的发布者运行,也可以作为任何人都能使用的公有 Hub。(它支持 Atom 和RssFeeds
  • 订阅者(对主题感兴趣的服务器)最初仍照常提取 Atom URL。如果 Atom 文件声明了其 Hub,订阅者就不用轮询 URL 了,而是注册 feed 的 Hub 并订阅更新。
  • 订阅者从主题 URL 声明的 Hub 中订阅主题 URL。
  • 发布者下次更新主题 URL 时,发布者软件会给 Hub 发送信息,告知 Hub 有更新了。

Google 已经在他们的几个服务中实现了该协议,包括 FeedBurner、Reader(共享条目)、Blogger,还有不久前推出的 Alerts。该协议是开放的,遵循 Apache License 2.0 许可。此外,Hub 可以在任何服务器上运行而并非限制在 Google App Engine 上。

Google 已经发布了一个Hub 的参考实现,可用来测试发布 / 订阅过程以了解其工作方式。这个视频演示了一个实际使用该协议的例子。

查看英文原文:Instant Notifications Using Google’s PubSubHubbub Protocol