[发明专利]一种订阅和发布主题消息的方法有效
申请号: | 201410098109.3 | 申请日: | 2014-03-17 |
公开(公告)号: | CN103841206B | 公开(公告)日: | 2017-04-05 |
发明(设计)人: | 吴友强 | 申请(专利权)人: | 北京京东尚科信息技术有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京德琦知识产权代理有限公司11018 | 代理人: | 王一斌,王琦 |
地址: | 100080 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 订阅 发布 主题 消息 方法 | ||
技术领域
本发明涉及分布式系统技术,特别是涉及一种分布式系统中订阅和发布主题消息的方法。
背景技术
在分布式系统中,客户端与服务器端之间交互的信息是通过消息中间件进行转发的。
当消息中间件的客户端需要订阅一个主题时,客户端将随机选择一个中间件的服务端与其建立连接,并将订阅主题的消息发送给所选择的服务端。该服务端收到订阅主题的消息后,会把这条订阅信息发布给其他消息中间件服务端,以实现订阅信息在各服务端的同步。为了保证各个消息中间件服务端订阅主题的一致性和完整性,在同步订阅信息的时候需要对每一个消息中间件服务端加分布式锁,保证同步订阅主题全部成功以后才返回给客户端订阅成功。
当消息中间件的客户端需要发布一个主题的消息时,系统将为其任意选择一个消息中间件的服务端进行该主题的消息发布,然后再由所选择的服务端将主题同步到其他服务端。在进行主题发布时,消息中间件的客户端通常使用域名或者vip访问消息中间件的服务端,这样,就可以确保所选择进行发布主题的服务端的有效性,从而可以避免由于进行主题发布的服务端的不可用性而导致的主题发布失败情况的发生(即发生单点问题)。
上述传统的订阅和发布主题的方法,利用分布式通信和分布式锁实现多个消息中间件实例(即服务端)对等,从而达到横向扩展(即扩展提供服务的服务端数量,以增强系统的可靠性)以及防止单点的目的。但是随着服务端数量增多,就会导致利用分布式锁进行锁定服务端的时延增加,从而会使得不可控的场景增多,保证数据一致性的复杂度也是线性增长,进而影响系统的整体性能。由此可见,传统订阅和发布主题的方法受限于服务端的规模,不能实现横向扩展。
发明内容
有鉴于此,本发明的主要目的在于提供一种订阅和发布主题消息的方法,该方法可以在应用实例的规模较大时实现横向扩展、提高系统性能。
为了达到上述目的,本发明提出的技术方案为:
一种订阅和发布主题消息的方法,包括:
为系统中的每个消息中间件配置服务器作为该消息中间件的服务端,并为每个所述服务端配置一个哈希区间,其中,不同服务端所配置的哈希区间不相同;
当消息中间件的客户端订阅一个主题时,请求其所属消息中间件的服务端确定用于接收订阅所述主题的消息的服务端,其所属消息中间件的服务端根据所述主题的内容按照预设的哈希算法计算出相应的哈希值,将该哈希值所在的所述哈希区间对应的服务端F1以及与所述服务端F1的IP地址相邻的下一个服务端F2,作为用于接收订阅所述主题的消息的服务端并通知给所述客户端;所述客户端根据该通知将订阅所述主题的消息发送给所述服务端F1和所述服务端F2;
当消息中间件的客户端发布一个主题的消息时,请求任意一个中间件的服务端确定用于发布所述主题的消息的服务端,接收到所述请求的服务端根据所要发布的主题的内容,按照所述哈希算法计算出相应的哈希值,将该哈希值所在的所述哈希区间对应的服务端F3作为用于发布所述主题的消息的服务端,并通知给所述客户端;所述客户端根据该通知将需要发布的所述主题的消息发送给所述服务端F3。
综上所述,本发明提出的订阅和发布主题消息的方法,通过计算消息中间件中订阅主题的哈希值,来确定具体的消息中间件的服务端,使得能够订阅的消息数量可以横向的无限扩展,并且在消息中间件的客户端订阅一个主题时,为其配置两个服务端,如此,可以防止某一类主题消息的单点故障,从而可以提高消息中间件的可靠性。
附图说明
图1为本发明实施例一的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:通过计算消息中间件中订阅主题的哈希值来确定具体的消息中间件的服务端,可以使能够订阅的消息数量横向的无限扩展,并且在消息中间件的客户端订阅一个主题时,为其配置两个服务端,如此,可以防止某一类主题消息的单点故障,从而可以提高消息中间件的可靠性。
图1为本发明实施例一的流程示意图,如图1所示,该实施例主要包括:
步骤101、为系统中的每个消息中间件配置服务器作为该消息中间件的服务端,并为每个所述服务端配置一个哈希区间,其中,不同服务端所配置的哈希区间不相同。
较佳地,可以采用下述方法为每个所述服务端配置一个哈希区间:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司,未经北京京东尚科信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410098109.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种一体式帐篷连接装置
- 下一篇:一种人车共乘停放车辆的设备