分布式消息广播通知实现方法技术

技术编号:23608768 阅读:69 留言:0更新日期:2020-03-28 08:54
本发明专利技术提供一种分布式消息广播通知实现方法,包括以下步骤:加入集群中的节点请求消息中心订阅公共主题;节点再次请求消息中心订阅属于每个节点的私有主题;消息发送者在发送消息前请求消息中心,获取当前订阅公共主题的客户端数量,请求数据中心发送到公共主题;消息发送者将消息体发送后,等待来自私有主题上的消息,其中等待到至少M条消息,如果在指定时间内未等到预期数量的消息,判定为执行超时;集群内的节点接收到来自公共主题的消息后,根据消息中的标识信息以发出响应或者不做响应。本发明专利技术基于长连接的通信,并且解耦节点与节点间的依赖,可实现节点上下线状态可以快速被消息中心感知到,不影响消息到达。

Implementation of distributed message broadcast notification

【技术实现步骤摘要】
分布式消息广播通知实现方法
本专利技术涉及消息广播与处理领域,具体而言涉及一种分布式消息广播通知实现方法。
技术介绍
在应用开发过程中,经常会遇到向集群内的其他节点或者服务发送消息通知,并且需要同步等待接收方处理结果的业务需求,例如节点本地某个人员信息的缓存,当在另一个节点删除该人员时需要通知其他节点删除本地缓存。目前,针对此类业务需求,在一些实施方式中,主要通过注册中心获取到集群内的所有节点,然后进行遍历定向通知,通知方式有HTTP、RPC(如dubbo)协议,如图1所示,其流程如下:节点加入集群后,向注册中心发起请求,将节点注册到注册中心;节点定时向注册中心发起心跳请求,汇报在线状态;节点需要发起广播通知时,需要从注册中心拉取当前在线的所有节点信息;遍历所有在线的节点,发起通知,例如请求其他的http接口;等待所有节点通知完毕,完成本次消息广播通知。但我们现有技术的消息通知实现过程来看,以上通知方式属于短连接方案,建立连接的成本较高,效率较低;而且节点之间会直接产生依赖,如果节点数量较多,通信成本会大幅提高;同时还存在注册中心对节点的上线和下线感知存在延迟,导致节点实际上线后,可能不能立刻收到通知消息的缺陷,因此需要降低因为注册中心感知节点状态的延迟,导致消息不能有效到达节点的概率。
技术实现思路
本专利技术目的在于提供使用长连接通信并降低节点与节点之间通信成本和依赖的分布式消息广播通知实现方法,包括:步骤1、加入集群中的节点请求消息中心订阅公共主题;步骤2、节点再次请求消息中心订阅属于每个节点的私有主题;步骤3、消息发送者在发送消息前请求消息中心,获取当前订阅公共主题的客户端数量,记为client_count,如果订阅公共主题的客户端数量小于或等于1,则取消发送消息;如果订阅公共主题的客户端数量大于1,则由消息发送者组装消息体,包含消息内容和发送者标识,请求数据中心发送到公共主题;步骤4、消息发送者将消息体发送后,等待来自私有主题上的消息,其中等待到至少M条消息,其中M=client_count-1,如果在指定时间内未等到预期数量的消息,判定为执行超时;步骤5、集群内的节点接收到来自公共主题的消息后,根据消息中的标识信息以发出响应或者不做响应。进一步地,在所述步骤5中,接收到来自公共主体的消息的节点首先根据消息体中发送者标识判断消息是否来自于自身,如果是,则不做处理,如果发送消息来自于其他节点,对消息处理后,根据发送者标识,向对应的发送者私有主题发送响应消息。进一步地,在所述步骤4中,如果执行超时,则重发消息或者结束消息发送流程。应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的专利技术主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的专利技术主题的一部分。结合附图从下面的描述中可以更加全面地理解本专利技术教导的前述和其他方面、实施例和特征。本专利技术的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本专利技术教导的具体实施方式的实践中得知。附图说明附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本专利技术的各个方面的实施例,其中:图1是现有技术中消息发布和响应的示例。图2是根据本专利技术的实施例的分布式消息广播通知实现方法的主题订阅的流程图。图3是根据本专利技术的实施例的消息发送和响应的流程示意图。具体实施方式为了更了解本专利技术的
技术实现思路
,特举具体实施例并配合所附图式说明如下。在本公开中参照附图来描述本专利技术的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定意在包括本专利技术的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本专利技术所公开的构思和实施例并不限于任何实施方式。另外,本专利技术公开的一些方面可以单独使用,或者与本专利技术公开的其他方面的任何适当组合来使用。根据本专利技术示例性实施例的分布式消息广播通知实现方法的过程示意,针对现有的消息广播与响应过程中,节点与节点间的通信成本和依赖较大、同时注册中心对节点的上线和下线感知存在延迟,因此导致节点实际上线后,可能不能立刻收到通知消息的问题,提出一种基于长连接的通信,并且解耦节点与节点间的依赖,实现节点上下线状态可以快速被消息中心感知到,不影响消息到达。结合图2-图3所示,作为示例的方案的分布式消息广播通知实现方法包括:步骤1、加入集群中的节点请求消息中心订阅公共主题;步骤2、节点再次请求消息中心订阅属于每个节点的私有主题;步骤3、消息发送者在发送消息前请求消息中心,获取当前订阅公共主题的客户端数量,记为client_count,如果订阅公共主题的客户端数量小于或等于1,则取消发送消息;如果订阅公共主题的客户端数量大于1,则由消息发送者组装消息体,包含消息内容和发送者标识,请求数据中心发送到公共主题;步骤4、消息发送者将消息体发送后,等待来自私有主题上的消息,其中等待到至少M条消息,其中M=client_count-1,如果在指定时间内未等到预期数量的消息,判定为执行超时;步骤5、集群内的节点接收到来自公共主题的消息后,根据消息中的标识信息以发出响应或者不做响应。优选地,在所述步骤5中,接收到来自公共主体的消息的节点首先根据消息体中发送者标识判断消息是否来自于自身,如果是,则不做处理,如果发送消息来自于其他节点,对消息处理后,根据发送者标识,向对应的发送者私有主题发送响应消息。优选地,在所述步骤4中,如果执行超时,则重发消息或者结束消息发送流程。优选地,在步骤3中,消息发送者通过主题从消息中心获取到订阅该主题的客户端的数量。优选地,在步骤1和/或步骤2中,消息中心对订阅相应主题的客户端进行计数。优选地,在步骤2的订阅过程中,每个节点订阅的主题不相同。本专利技术的实施例中,消息中心也称为消息中心节点,为一种分布式消息处理设施,支持消息发布和订阅功能,会将消息发布到订阅响应主题的所有客户端;会对订阅响应主题的客户端进行计数,客户端可以通过主题从消息中心获取到订阅该主题的客户端的数量。如此,本专利技术的分布式消息广播通知方案,保持各个节点与消息中心的长连接方式,提高效率,同时解耦节点与节点间的依赖,更容易扩展。同时,在可选的实施例中,还可以通过横向扩展消息中心节点的方式,提高消息处理能力。虽然本专利技术已以较佳实施例揭露如上,然其并非用以限定本专利技术。本专利技术所属
中具有通常知识者,在不脱离本专利技术的精神和范围内,当可作各种的更动与润饰。因此,本专利技术的保护范围当视权利要求书所界定者为准。本文档来自技高网
...

【技术保护点】
1.一种分布式消息广播通知实现方法,其特征在于,包括:/n步骤1、加入集群中的节点请求消息中心订阅公共主题;/n步骤2、节点再次请求消息中心订阅属于每个节点的私有主题;/n步骤3、消息发送者在发送消息前请求消息中心,获取当前订阅公共主题的客户端数量,记为client_count,如果订阅公共主题的客户端数量小于或等于1,则取消发送消息;如果订阅公共主题的客户端数量大于1,则由消息发送者组装消息体,包含消息内容和发送者标识,请求数据中心发送到公共主题;/n步骤4、消息发送者将消息体发送后,等待来自私有主题上的消息,其中等待到至少M条消息,其中M=client_count-1,如果在指定时间内未等到预期数量的消息,判定为执行超时;/n步骤5、集群内的节点接收到来自公共主题的消息后,根据消息中的标识信息以发出响应或者不做响应。/n

【技术特征摘要】
1.一种分布式消息广播通知实现方法,其特征在于,包括:
步骤1、加入集群中的节点请求消息中心订阅公共主题;
步骤2、节点再次请求消息中心订阅属于每个节点的私有主题;
步骤3、消息发送者在发送消息前请求消息中心,获取当前订阅公共主题的客户端数量,记为client_count,如果订阅公共主题的客户端数量小于或等于1,则取消发送消息;如果订阅公共主题的客户端数量大于1,则由消息发送者组装消息体,包含消息内容和发送者标识,请求数据中心发送到公共主题;
步骤4、消息发送者将消息体发送后,等待来自私有主题上的消息,其中等待到至少M条消息,其中M=client_count-1,如果在指定时间内未等到预期数量的消息,判定为执行超时;
步骤5、集群内的节点接收到来自公共主题的消息后,根据消息中的标识信息以发出响应或者不做响应。


2.根据权利要求1所述的分布式消息广播通知实现方法,其特征在于,在所述步骤5中,接收到来自公共主体的消息的节点首先根...

【专利技术属性】
技术研发人员:杨帆张东冬师铭
申请(专利权)人:南京甄视智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1