高可用发布/订阅中间件中的订阅传播
1. 引言
内容式发布/订阅(pub/sub)消息传递是构建异步分布式应用的流行范例。在该系统中,发布者生成消息,订阅者通过内容过滤器(通常为布尔表达式)表达对消息的兴趣。系统借助路由代理确保将发布的消息及时传递给所有感兴趣的订阅者,发布者和订阅者通过连接代理获取服务,彼此解耦。
许多情况下,发布者和订阅者希望获得如有序、无间隙传递(可靠传递)等服务保证。这些服务通常由代理网络提供,并通过标准消息接口(如 Java 消息服务 JMS)提供给客户端。可靠传递保证对于每个订阅和发布的消息流,系统能找到起始消息,并按原始流的顺序传递所有匹配的消息。
商业部署要求 pub/sub 系统具有可扩展性、高可用性,并能有效利用网络带宽。为实现这一点,系统通常在代理网络中传播订阅信息。代理会为其相邻网络部分存储订阅者所需消息的信息,当新消息发布和路由时,会过滤掉那些没有订阅者感兴趣的网络部分的消息。然而,随着接近发布者,订阅信息的数量可能会变得非常大。一个可扩展的 pub/sub 系统应聚合并仅维护每个路由方向的订阅信息子集,只要该子集足以匹配该路由方向上订阅者所需的所有消息即可。
内容式路由和可靠传递的结合带来了一些独特的挑战。与基于主题或组的 pub/sub 系统不同,可靠性不能仅基于检测发布者分配的序列号中的间隙,因为每个内容订阅者可能请求完全独特的一组消息进行传递。可靠传递协议通常依赖路由路径上的代理来协助检测间隙。一个具有不正确订阅信息的路由代理可能决定不转发消息。由于无法通过检查发布者分配的序列号来检测间隙,最终订阅者可能永远不会发现消息丢失。
广域网中,由于硬件和软件故障以及网络配置错误,连接丢失很常见。因
超级会员免费看
订阅专栏 解锁全文
2578

被折叠的 条评论
为什么被折叠?



