PubSubHubbub协议详解(PUSH)
2015-01-03 12:58
218 查看
PubSubHubbub协议是一个简单、开放、服务器对服务器的,基于Web-hook的发布/订阅(pubsub)协议,是Atom和RSS的扩展。遵守PubSubHubbub协议的参与者(servers)能够(通过webhook callbacks)几乎实时地获取到自己感兴趣的主题(feed URL)更新信息。
协议概述内容如下:
(1)一个feed URL(一个"主题")通过<link rel="hub"…>标签在其Atom或者RSS的XML文件中声明其Hub server(枢纽服务器)。这个Hub(s)可以有feed的发布者运行,也可以由任何人都可以使用的群体Hub。(Atom和RSS都被支持)
(2)一个订阅者(对某个主题感兴趣的服务器),首先如正常一样的获取Atom URL。如果Atom文件声明了它的Hubs,那么订阅者就可以避免不完全的,重复的轮询(lame,repeated polling)URL,而是在feed的Hub注册和订阅更新。
(3)订阅者通过主题URL声明的Hub(s)上订阅这个主题。
(4)当发布者(Publisher)下一步更新这个主题URL,发布者的软件会ping其Hub(s),告知这里有一项更新了。
(5)Hub能够高效的获取已发布的feed,并且广播最新/更改的内容给所有注册的订阅者。
PubSubHubbub 只是一个协议而不是服务,这个协议是分散管理的(去中心化)且免费的。没有一家公司在其中进行控制。任何人都可以运行一个Hub,或者任何人都可以使用开放的hubs进行发布或者订阅内容。
目前,Google提供了一个开源的Hub参考实现(协议最复杂的部分),运行在Google的App Engine上,同时开放给所有人使用。(实例:Live,Demo
Hub)
下面是对订阅流(Subscription flow)的详解图。
1、 订阅者请求发布者的Feed。Feed返回其Hub的链接。
2、 订阅者发送订阅请求到Hub。请求中包含Hub需要发送更新的终端URL。
3、 Hub发送给终端确认请求是否是真实的;订阅者回复确认给Hub。
4、 发布者通过post其Feed URLs给Hub通知Hub其有更新;Hub会重新获取Feed找到其中新的条目内容。
5、 如果发布者没有主动通知Hub,Hub会定期的抓取发布者的Feed以获得更新内容。
6、 当Hub接收到Feed X的更新,它会把更新post给所有订阅者的终端URL。
7、 如果Feed X有多个订阅者,Hub会把更新发送给所有人。这大大降低了发布者的负载。
8、 未来是分布式的:包含一些大Hubs,许多小Hubs,无数的发布者和订阅者。发布者、订阅者和Hub都可以扮演多种功能角色。
最后是一张完整的功能需求表,PuSH协议对三者功能的基本描述如下图所示。
本文参考的资料都是官网的英文资料,以翻译为主。详细资料和实现都可以参考这里:
http://code.google.com/p/pubsubhubbub/
转载请注明出处:互联网旁观者~黄言之 http://blog.sina.com.cn/netreview/
协议概述内容如下:
(1)一个feed URL(一个"主题")通过<link rel="hub"…>标签在其Atom或者RSS的XML文件中声明其Hub server(枢纽服务器)。这个Hub(s)可以有feed的发布者运行,也可以由任何人都可以使用的群体Hub。(Atom和RSS都被支持)
(2)一个订阅者(对某个主题感兴趣的服务器),首先如正常一样的获取Atom URL。如果Atom文件声明了它的Hubs,那么订阅者就可以避免不完全的,重复的轮询(lame,repeated polling)URL,而是在feed的Hub注册和订阅更新。
(3)订阅者通过主题URL声明的Hub(s)上订阅这个主题。
(4)当发布者(Publisher)下一步更新这个主题URL,发布者的软件会ping其Hub(s),告知这里有一项更新了。
(5)Hub能够高效的获取已发布的feed,并且广播最新/更改的内容给所有注册的订阅者。
PubSubHubbub 只是一个协议而不是服务,这个协议是分散管理的(去中心化)且免费的。没有一家公司在其中进行控制。任何人都可以运行一个Hub,或者任何人都可以使用开放的hubs进行发布或者订阅内容。
目前,Google提供了一个开源的Hub参考实现(协议最复杂的部分),运行在Google的App Engine上,同时开放给所有人使用。(实例:Live,Demo
Hub)
下面是对订阅流(Subscription flow)的详解图。
1、 订阅者请求发布者的Feed。Feed返回其Hub的链接。
2、 订阅者发送订阅请求到Hub。请求中包含Hub需要发送更新的终端URL。
3、 Hub发送给终端确认请求是否是真实的;订阅者回复确认给Hub。
4、 发布者通过post其Feed URLs给Hub通知Hub其有更新;Hub会重新获取Feed找到其中新的条目内容。
5、 如果发布者没有主动通知Hub,Hub会定期的抓取发布者的Feed以获得更新内容。
6、 当Hub接收到Feed X的更新,它会把更新post给所有订阅者的终端URL。
7、 如果Feed X有多个订阅者,Hub会把更新发送给所有人。这大大降低了发布者的负载。
8、 未来是分布式的:包含一些大Hubs,许多小Hubs,无数的发布者和订阅者。发布者、订阅者和Hub都可以扮演多种功能角色。
最后是一张完整的功能需求表,PuSH协议对三者功能的基本描述如下图所示。
本文参考的资料都是官网的英文资料,以翻译为主。详细资料和实现都可以参考这里:
http://code.google.com/p/pubsubhubbub/
转载请注明出处:互联网旁观者~黄言之 http://blog.sina.com.cn/netreview/
相关文章推荐
- PubSubHubbub协议详解(PUSH)
- PubSubHubBub协议发力 实时Web即将到来
- 实时的RSS推送 PubSubHubbub协议
- SR采用PubSubHubbub协议实时接收GReaderSharedItems更新
- 基于PubSubHubBub的RSS Feed实时同步Twitter服务
- 对康爷PubSubHubbub教程的一些补充
- 基于PubSubHubBub的RSS Feed实时同步Twitter服务
- 03-PubSubHubbub 和 twisted 的 Persistent connections 能力 | 07.杂项 | Python
- 别太相信 PubSubHubbub
- redis命令详解与使用场景举例——Pub与Sub(发布订阅)
- PubSubHubbub的价值
- Google Reader支持PubSubHubbub
- Google Reader支持PubSubHubbub
- 超越轮询?考虑PubSub、Push和MOM
- 网络编程基础:对HTTP协议的头信息详解
- Server Push详解
- 路由器原理和路由协议、算法详解(3)
- Server Push详解
- 网络编辑基础:对HTTP协议的头信息详解
- Google SiteMap的作用及协议格式详解