CN110932874A - 分布式消息广播通知实现方法 - Google Patents
分布式消息广播通知实现方法 Download PDFInfo
- Publication number
- CN110932874A CN110932874A CN201911152452.0A CN201911152452A CN110932874A CN 110932874 A CN110932874 A CN 110932874A CN 201911152452 A CN201911152452 A CN 201911152452A CN 110932874 A CN110932874 A CN 110932874A
- Authority
- CN
- China
- Prior art keywords
- message
- topic
- sender
- node
- public
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1895—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/188—Time-out mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Telephonic Communication Services (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种分布式消息广播通知实现方法,包括以下步骤:加入集群中的节点请求消息中心订阅公共主题;节点再次请求消息中心订阅属于每个节点的私有主题;消息发送者在发送消息前请求消息中心,获取当前订阅公共主题的客户端数量,请求数据中心发送到公共主题;消息发送者将消息体发送后,等待来自私有主题上的消息,其中等待到至少M条消息,如果在指定时间内未等到预期数量的消息,判定为执行超时;集群内的节点接收到来自公共主题的消息后,根据消息中的标识信息以发出响应或者不做响应。本发明基于长连接的通信,并且解耦节点与节点间的依赖,可实现节点上下线状态可以快速被消息中心感知到,不影响消息到达。
Description
技术领域
本发明涉及消息广播与处理领域,具体而言涉及一种分布式消息广播通知实现方法。
背景技术
在应用开发过程中,经常会遇到向集群内的其他节点或者服务发送消息通知,并且需要同步等待接收方处理结果的业务需求,例如节点本地某个人员信息的缓存,当在另一个节点删除该人员时需要通知其他节点删除本地缓存。
目前,针对此类业务需求,在一些实施方式中,主要通过注册中心获取到集群内的所有节点,然后进行遍历定向通知,通知方式有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的订阅过程中,每个节点订阅的主题不相同。
本发明的实施例中,消息中心也称为消息中心节点,为一种分布式消息处理设施,支持消息发布和订阅功能,会将消息发布到订阅响应主题的所有客户端;会对订阅响应主题的客户端进行计数,客户端可以通过主题从消息中心获取到订阅该主题的客户端的数量。
如此,本发明的分布式消息广播通知方案,保持各个节点与消息中心的长连接方式,提高效率,同时解耦节点与节点间的依赖,更容易扩展。
同时,在可选的实施例中,还可以通过横向扩展消息中心节点的方式,提高消息处理能力。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
Claims (7)
1.一种分布式消息广播通知实现方法,其特征在于,包括:
步骤1、加入集群中的节点请求消息中心订阅公共主题;
步骤2、节点再次请求消息中心订阅属于每个节点的私有主题;
步骤3、消息发送者在发送消息前请求消息中心,获取当前订阅公共主题的客户端数量,记为client_count,如果订阅公共主题的客户端数量小于或等于1,则取消发送消息;如果订阅公共主题的客户端数量大于1,则由消息发送者组装消息体,包含消息内容和发送者标识,请求数据中心发送到公共主题;
步骤4、消息发送者将消息体发送后,等待来自私有主题上的消息,其中等待到至少M条消息,其中M=client_count-1,如果在指定时间内未等到预期数量的消息,判定为执行超时;
步骤5、集群内的节点接收到来自公共主题的消息后,根据消息中的标识信息以发出响应或者不做响应。
2.根据权利要求1所述的分布式消息广播通知实现方法,其特征在于,在所述步骤5中,接收到来自公共主体的消息的节点首先根据消息体中发送者标识判断消息是否来自于自身,如果是,则不做处理,如果发送消息来自于其他节点,对消息处理后,根据发送者标识,向对应的发送者私有主题发送响应消息。
3.根据权利要求1所述的分布式消息广播通知实现方法,其特征在于,在所述步骤4中,如果执行超时,则重发消息或者结束消息发送流程。
4.根据权利要求1所述的分布式消息广播通知实现方法,其特征在于,在步骤3中,消息发送者通过主题从消息中心获取到订阅该主题的客户端的数量。
5.根据权利要求1所述的分布式消息广播通知实现方法,其特征在于,在步骤1和/或步骤2中,消息中心对订阅相应主题的客户端进行计数。
6.根据权利要求1所述的分布式消息广播通知实现方法,其特征在于,在步骤2的订阅过程中,每个节点订阅的主题不相同。
7.根据权利要求1所述的分布式消息广播通知实现方法,其特征在于,前述方法更加包括:
横向扩展消息中心节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911152452.0A CN110932874B (zh) | 2019-11-22 | 2019-11-22 | 分布式消息广播通知实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911152452.0A CN110932874B (zh) | 2019-11-22 | 2019-11-22 | 分布式消息广播通知实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110932874A true CN110932874A (zh) | 2020-03-27 |
CN110932874B CN110932874B (zh) | 2022-08-16 |
Family
ID=69851513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911152452.0A Active CN110932874B (zh) | 2019-11-22 | 2019-11-22 | 分布式消息广播通知实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110932874B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN104639625A (zh) * | 2015-01-27 | 2015-05-20 | 华南理工大学 | 一种基于mqtt的数据集中器采集控制方法、装置及系统 |
CN106572146A (zh) * | 2015-10-13 | 2017-04-19 | 腾讯科技(深圳)有限公司 | 消息发送方法及消息发送装置 |
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
CN109257239A (zh) * | 2018-11-22 | 2019-01-22 | 福建福诺移动通信技术有限公司 | 一种基于tcp高可用物联网网关数据交互系统及方法 |
CN109428922A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
CN110417795A (zh) * | 2019-08-05 | 2019-11-05 | 中国工商银行股份有限公司 | 收款信息订阅方法、装置及收款系统 |
CN110417646A (zh) * | 2019-08-01 | 2019-11-05 | 北京吉旗咨询服务有限公司 | 基于rpc应用程序推送订阅消息的方法以及装置 |
-
2019
- 2019-11-22 CN CN201911152452.0A patent/CN110932874B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN104639625A (zh) * | 2015-01-27 | 2015-05-20 | 华南理工大学 | 一种基于mqtt的数据集中器采集控制方法、装置及系统 |
CN106572146A (zh) * | 2015-10-13 | 2017-04-19 | 腾讯科技(深圳)有限公司 | 消息发送方法及消息发送装置 |
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
CN109428922A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
CN109257239A (zh) * | 2018-11-22 | 2019-01-22 | 福建福诺移动通信技术有限公司 | 一种基于tcp高可用物联网网关数据交互系统及方法 |
CN110417646A (zh) * | 2019-08-01 | 2019-11-05 | 北京吉旗咨询服务有限公司 | 基于rpc应用程序推送订阅消息的方法以及装置 |
CN110417795A (zh) * | 2019-08-05 | 2019-11-05 | 中国工商银行股份有限公司 | 收款信息订阅方法、装置及收款系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110932874B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6453438B1 (en) | System and method for automatically rescheduling a data transmission to members of a group | |
WO2006107181A1 (en) | System and method for instant message transmission in mobile communication terminal | |
US20060166651A1 (en) | Method for managing duplicated arrival notification message in multimedia messaging service | |
CN106210049B (zh) | 一种基于消息队列的集群通信方法及系统 | |
CN110611691A (zh) | 一种消息推送方法、系统及存储介质 | |
CN108289055B (zh) | 一种基于Redis订阅服务的分布式实时聊天系统及方法 | |
CN106899605B (zh) | 基于stomp协议的通信方法和装置 | |
KR100955468B1 (ko) | 멀티미디어 메시징 서비스 메시지들의 멀티캐스트 배포를위한 시스템 및 방법 | |
WO2018202079A1 (zh) | 一种信息传输的方法、设备及存储介质 | |
CN111555965B (zh) | 一种适用于iOS客户端的消息推送方法及系统 | |
CN110932874B (zh) | 分布式消息广播通知实现方法 | |
US8755397B2 (en) | Asynchronous communication in an unstable network | |
CN116846959A (zh) | 一种基于mqtt协议的消息收发方法及装置 | |
WO2010009666A1 (zh) | 多媒体业务的实现方法、系统和装置 | |
US20090210425A1 (en) | Method for sending dynamic content and dynamic content delivery server | |
CN109379443B (zh) | 一种面向物联网的分布式消息队列的实现方法 | |
CN112995095B (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN110971535B (zh) | 一种通信拥塞控制方法及装置、设备和存储介质 | |
CN113424577A (zh) | 用于业务检测的方法和装置 | |
KR101969652B1 (ko) | 데이터 전달 장치, 방법과 그를 이용한 사물 인터넷 시스템, 데이터 전달 방법을 실행하기 위한 프로그램이 기록된 기록매체 및 하드웨어와 결합하여 데이터 전달 방법을 실행하기 위하여 매체에 저장된 프로그램 | |
CN110891246B (zh) | 一种组播媒体数据的处理方法 | |
CN113381990B (zh) | 一种点播终端之间互相通信的方法及系统 | |
WO2020156277A1 (zh) | 通信方法、装置及设备 | |
CN101730318A (zh) | 一种彩信业务实现方法及通讯系统以及彩信路由器 | |
CN115801716A (zh) | 一种支持多节点即时通讯的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: No.568 longmian Avenue, gaoxinyuan, Jiangning District, Nanjing City, Jiangsu Province, 211000 Patentee after: Xiaoshi Technology (Jiangsu) Co.,Ltd. Address before: No.568 longmian Avenue, gaoxinyuan, Jiangning District, Nanjing City, Jiangsu Province, 211000 Patentee before: NANJING ZHENSHI INTELLIGENT TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |