hpfeeds是一个轻量级的验证发布-订阅协议(authenticated publish-subscribe protocol)。
发布-订阅协议:发布/订阅协议定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。它是为了解决这样一种情况的发生,一个对象的改变需要同时改变其他对象,而且它不知道具体有多少对象需要改变。这就类似于发传单,目标发送通知,没有指定特定的对象,通知会自动传播,观察者自己决定是否需要看传单,发送者对于传单是否被看一无所知。
hpfeeds把不同的数据用频道来划分,支持传送任意的二进制数据。由频道的使用者决定传送数据结构的形式。通道的验证通过Authkey来完成,它由两部分组成:ident和secret,相当于身份和密码。把密码和每次连接的一个随机数进行hash摘要算法然后一起发送给服务器,这样保证不会被窃听,所以它可以运行在SSL、TLS下。
整个协议实现了三方的功能独立。使用这种方式降低了应用与业务逻辑之间的耦合,统一一个对外的发布接口,只需要关心监听的类型,不关心监听的具体处理人。频道的发布者只管发,不管订阅者有没有收到,很方便的建立一种一对多的依赖关系。在当一个对象的改变需要同时改变其他对象,而且它不知道具体有多少对象需要改变时,就可以使用订阅发布模式。