CN109379443B - 一种面向物联网的分布式消息队列的实现方法 - Google Patents
一种面向物联网的分布式消息队列的实现方法 Download PDFInfo
- Publication number
- CN109379443B CN109379443B CN201811548642.XA CN201811548642A CN109379443B CN 109379443 B CN109379443 B CN 109379443B CN 201811548642 A CN201811548642 A CN 201811548642A CN 109379443 B CN109379443 B CN 109379443B
- Authority
- CN
- China
- Prior art keywords
- message
- receiving end
- agent
- connection
- sent
- 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.)
- Active
Links
Images
Classifications
-
- 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
- H04L67/1046—Joining 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/50—Network services
- H04L67/56—Provisioning of proxy services
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)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种面向物联网的分布式消息队列的实现方法,分布式消息队列***中包括消息发送端、消息代理及消息接收端,消息发送端和消息接收端之间、消息发送端/消息接收端和消息代理之间均通过长连接混合短连接的方式通信连接,该实现方法中包括:判断是否需要发送消息请求至消息接收端,若是,根据消息接收端的地址发起P2P连接;判断P2P连接是否成功,若不成功,通过消息代理建立与消息接收端的TURN连接;通过消息代理将消息发送至消息接收端,其在能够实现消息队列功能的基础上,使***花费更少的流量费用的同时,提供了更高的终端设备接入能力,满足物联网终端数量多的需求。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向物联网的分布式消息队列的实现方法。
背景技术
分布式消息队列早已成为大规模***内部各子模块间通信和解耦的常用方法,其在***内部提供了统一的通信方式,增加***可靠性的同时增加了***设计的灵活性,为***提供了更高的峰值处理能力。分布式特性为消息队列增加了扩展性,也带来了设计难度。常见的分布式消息队列设计方案如图1所示,包含若干生产者(图示中APP)、消息代理(Broker,图示中Broker Leader为消息代理的中心节点)和消费者(图示中APP),消息代理为生产者、消费者提供了消息的转发、持久化等核心功能,生产者将消息发布到消息代理,消费者向代理订阅并消费消息,生产者/消费者与消息代理之间、消息代理间均通过TCP(Transmission Control Protocol,传输控制协议)连接。
一般来说,在现有的***中生产者、消费者和消息代理处于相同的局域网中,对带宽没有限制,能够实现生产者和消费者之间所有的消息都通过消息代理转发,但是,在物联网中,相当一部分生产者、消费者和消息代理是处于不同的局域网中,若延用现有方案,在终端设备和消息代理中无疑都会产生大量的付费带宽。
发明内容
针对上述现有技术的不足,本发明提供了一种面向物联网的分布式消息队列的实现方法,有效解决了现有技术中会产生大量付费带宽的技术问题。
为了实现上述目的,本发明通过以下技术方案实现:
一种面向物联网的分布式消息队列的实现方法,分布式消息队列***中包括消息发送端、消息代理及消息接收端,消息发送端和消息接收端之间、消息发送端/消息接收端和消息代理之间均通过长连接混合短连接的方式通信连接,所述实现方法应用于消息发送端,包括:
判断是否需要发送消息请求至消息接收端,若是,根据消息接收端的地址发起P2P连接;
判断P2P连接是否成功,若不成功,通过消息代理建立与消息接收端的TURN连接;
通过消息代理将消息发送至消息接收端。
进一步优选地,在步骤判断P2P连接是否成功中,若判断P2P连接成功,直接将消息发送至消息接收端。
进一步优选地,在将消息发送至消息接收端之后,还包括:
判断是否在预设时间段内没有与消息代理/消息接收端进行通信,若是,断开与消息代理/消息接收端的通信连接。
进一步优选地,在步骤判断是否需要发送消息请求至消息接收端中,若判断需要发送消息请求,还包括:
对发送的消息请求进行持久化处理。
进一步优选地,判断是否需要发送消息请求至消息接收端,进一步包括:
定期向消息代理查询订阅的主题是否有消息更新,若是,判定需要发送消息请求至消息接收端。
进一步优选地,在步骤定期向消息代理查询订阅的主题是否有消息更新之前,包括:
判断是否需要订阅消息,若是,将需要订阅的主题发送至消息代理。
进一步优选地,所述实现方法中还包括:
判断是否有新消息要发布,若是,将发布消息发送至消息代理。
本发明提供的面向物联网的分布式消息队列的实现方法,至少能够带来以下有益效果:
1.消息发送者(对应生产者)和消息接收者(对应消费者)之间优先使用P2P技术直接连接进行通信,在P2P连接失败时使用消息代理中转消息,相对于现有技术中全部有消息代理中转消息来说,极大地节约了消息代理的流量。在实际应用中,若P2P连接建立成功,可以节约接近一半的流量,即本发明提供的实现方法在能够实现消息队列功能的基础上,使***花费更少的流量费用的同时,提供了更高的终端设备接入能力,满足物联网终端数量多的需求;
2.发送的消息在发送消息发送端直接进行持久化,相对于现有技术中通过异地的消息代理实现持久化来说,保证了消息能够送达消息接收端的同时,大大减轻了消息代理的压力;
3.消息发送端和和消息代理之间、消息发送端和消息接收端之间,使用长连接混合短连接的方式通信,相对于现有技术中全部使用长连接来说,大大减少了消息代理的负担,同时提供了更多的终端设备接入能力。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1为现有技术中分布式消息队列***示意图;
图2为本发明中面向物联网的分布式消息队列的实现方法一种实施方式流程示意图;
图3为本发明中分布式消息队列***示意图;
图4为本发明中面向物联网的分布式消息队列的实现方法另一种实施方式流程示意图。
具体实施方式
为使本发明的内容更加清楚易懂,以下结合说明书附图,对本发明的内容作进一步说明。当然本发明并不局限于该具体实施例,本领域内的技术人员所熟知的一般替换也涵盖在本发明的保护范围内。
如图2为本发明提供的面向物联网的分布式消息队列的实现方法一种实施方式流程示意图,从图中可以看出,该实现方法中包括:
S10判断是否需要发送消息请求至消息接收端,若是,根据消息接收端的地址发起P2P连接;
S20判断P2P连接是否成功,若不成功,通过消息代理建立与消息接收端的TURN连接;
S30通过消息代理将消息发送至消息接收端。
在本实施方式中,分布式消息队列***中包括消息发送端(对应现有分布式消息队列***中的生产者)、消息代理及消息接收端(对应现有分布式消息队列***中的消费者),如图3所示,两个HOST分别对应消息发送端和消息接收端,Broker对应消息代理,Broker Leader为消息代理的中心节点,消息发送端和消息接收端之间通过长连接混合短连接的P2P方式通信连接(图示中Temporary P2P Connection),消息发送端/消息接收端和消息代理之间通过长连接混合短连接的方式通信连接(图示中Temporary OptimizedConnection)。在实际应用中,通过客户端(图示中Client)实现消息的发送和接收,通常来说,同一个客户端即可以实现消息的发送也可以实现消息的接收。客户端和具体应用(图示中APP)之间通过共享内存或TCP或HTTP(Hyper Text Transfer Protocol,超文本传输协议)方式进行通信,具体,当客户端和具体应用在同一个主机上时,通过共享内存(图示中Shared Memory)的方式进行通信,以提高数据交换的速度,且当具体应用需要发送消息时,通过客户端实现;当客户端和具体应用在不同的主机中时,使用TCP或HTTP的方式进行通信。
在消息代理集群中,通过paxos算法选举唯一的中心节点,由中心节点负责消息代理集群内部需要同步的数据,其他的消息代理间对等独立,工作内容相同;若中心节点无法正常工作,则重新选举。
在工作过程中,当消息发送端判断需要发送消息请求至消息接收端,则根据消息接收端的地址尝试发起P2P(Peer-to-Peer,点对点)连接;若P2P连接成功,则消息发送端直接将消息发送至消息接收端;若P2P连接不成功,则通过消息代理建立与消息接收端的TURN连接,进而通过消息代理将消息请求发送至消息接收端。消息接收端在接收到消息发送端发送的消息请求后,将反馈的消息发送至消息发送端。对于消息接收端地址,在消息发送端第一次通过消息代理与消息接收端通信时获取(在分布式消息队列***建立的过程中,各消息发送端/消息接收端对应的客户端分别在消息代理中注册,以此在通信过程中,消息发送端/消息接收端对应的客户端通过消息代理获取对方的地址)。
在消息发送端和消息代理/消息接收端进行通信的过程中,消息发送端还会判断是否在预设时间段内没有与消息代理/消息接收端进行通信,若是,说明消息发送端长时间没有与消息代理/消息接收端连接,则断开与消息代理/消息接收端的通信连接。预设时间段根据实际情况进行设定,如,设定为2min(分钟)、5min、10min等。类似地,消息接收端在与消息代理/消息接收端进行通信的过程中,也会进行同样的操作,以减少消息代理的负担。
对上述实施方式进行改进得到本实施方式,在本实施方式中,消息发送端端在判断需要发送消息请求时,直接对发送的消息请求进行持久化处理,相对于现有技术中通过异地的消息代理实现持久化来说,保证了消息能够送达消息接收端的同时,大大减轻了消息代理的压力。
对上述实施方式进行改进得到本实施方式,在本实施方式中,如图4所示,该实现方法中包括:
S11定期向消息代理查询订阅的主题是否有消息更新,若是,判定需要发送消息请求至消息接收端;
S12根据消息接收端的地址发起P2P连接;
S20判断P2P连接是否成功,若不成功,通过消息代理建立与消息接收端的TURN连接;
S30通过消息代理将消息发送至消息接收端。
在该实施方式中,当客户端中的具体应用需要订阅消息时,通过客户端进行操作,将需要订阅的主题(Topic)发送至消息代理;当客户端中的具体应用有新消息要发布时,通过客户端将发布消息(包括需要发布消息的主题等)发送至消息代理,此时客户端作为消息发送端。
在工作过程中,客户端定期向消息代理查询订阅的主题是否有消息更新,若消息代理反馈存在消息更新,则从消息代理中获取消息源的客户端的地址,此时,客户端作为消息发送端(以下称第一客户端),消息源的客户端作为消息接收端(以下称第二客户端)。
之后,第一客户端根据第二客户端的地址尝试发起P2P连接;若P2P连接成功,则第一客户端直接将消息发送至第二客户端;若P2P连接不成功,则通过消息代理建立与第二客户端间的TURN连接,进而通过消息代理将消息请求发送至第二客户端。第二客户端在接收到第一客户端发送的消息请求后,将反馈的消息发送至第一客户端。
此后,在第一客户端和消息代理/第二客户端进行通信的过程中,第一客户端还会判断是否在预设时间段内没有与消息代理/第二客户端进行通信,若是,说明第一客户端长时间没有与消息代理/第二客户端连接,则断开与消息代理/第二客户端的通信连接。
Claims (6)
1.一种面向物联网的分布式消息队列的实现方法,其特征在于,分布式消息队列***中包括消息发送端、消息代理及消息接收端,消息发送端和消息接收端之间、消息发送端/消息接收端和消息代理之间均通过长连接混合短连接的方式通信连接,所述实现方法应用于消息发送端,包括:
判断是否需要发送消息请求至消息接收端,若是,根据消息接收端的地址发起P2P连接;
判断P2P连接是否成功,若不成功,通过消息代理建立与消息接收端的TURN连接;
通过消息代理将消息发送至消息接收端;
在将消息发送至消息接收端之后,还包括:
判断是否在预设时间段内没有与消息代理/消息接收端进行通信,若是,断开与消息代理/消息接收端的通信连接;
在消息代理集群中,通过paxos算法选举唯一的中心节点,由中心节点负责消息代理集群内部需要同步的数据,其他的消息代理间对等独立,工作内容相同;若中心节点无法正常工作,则重新选举。
2.如权利要求1所述的实现方法,其特征在于,在步骤判断P2P连接是否成功中,若判断P2P连接成功,直接将消息发送至消息接收端。
3.如权利要求1所述的实现方法,其特征在于,在步骤判断是否需要发送消息请求至消息接收端中,若判断需要发送消息请求,还包括:
对发送的消息请求进行持久化处理。
4.如权利要求1或2或3所述的实现方法,其特征在于,判断是否需要发送消息请求至消息接收端,进一步包括:
定期向消息代理查询订阅的主题是否有消息更新,若是,判定需要发送消息请求至消息接收端。
5.如权利要求4所述的实现方法,其特征在于,在步骤定期向消息代理查询订阅的主题是否有消息更新之前,包括:
判断是否需要订阅消息,若是,将需要订阅的主题发送至消息代理。
6.如权利要求1或2或3或5所述的实现方法,其特征在于,所述实现方法中还包括:
判断是否有新消息要发布,若是,将发布消息发送至消息代理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811548642.XA CN109379443B (zh) | 2018-12-18 | 2018-12-18 | 一种面向物联网的分布式消息队列的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811548642.XA CN109379443B (zh) | 2018-12-18 | 2018-12-18 | 一种面向物联网的分布式消息队列的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109379443A CN109379443A (zh) | 2019-02-22 |
CN109379443B true CN109379443B (zh) | 2022-02-15 |
Family
ID=65374219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811548642.XA Active CN109379443B (zh) | 2018-12-18 | 2018-12-18 | 一种面向物联网的分布式消息队列的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109379443B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111740872A (zh) * | 2020-05-06 | 2020-10-02 | 北京百度网讯科技有限公司 | 消息传递测试方法、装置、电子设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221435A (zh) * | 2006-09-28 | 2008-07-16 | 洛克威尔自动控制技术股份有限公司 | 消息引擎的搜索和分类 |
CN101431464A (zh) * | 2007-11-06 | 2009-05-13 | 阿里巴巴集团控股有限公司 | 一种优选客户端之间数据传输路径的方法及其装置 |
CN102883293A (zh) * | 2012-10-12 | 2013-01-16 | 杭州东信北邮信息技术有限公司 | 一种实现移动电话来电智能管理的***和方法 |
CN103702062A (zh) * | 2013-12-27 | 2014-04-02 | Tcl集团股份有限公司 | 一种音视频通讯方法、装置及*** |
CN104363291A (zh) * | 2014-11-19 | 2015-02-18 | 中国航天科工集团第二研究院七〇六所 | 一种网络通信中间件实现方法 |
CN104486107A (zh) * | 2014-12-05 | 2015-04-01 | 曙光信息产业(北京)有限公司 | 一种日志采集装置及方法 |
CN105007313A (zh) * | 2015-07-03 | 2015-10-28 | 许继集团有限公司 | 一种终端接入方法和用于节能服务的海量数据传输*** |
CN106331115A (zh) * | 2016-08-26 | 2017-01-11 | 深圳市同为数码科技股份有限公司 | 一种支持多台设备连接的分布式可扩展服务器*** |
CN107231290A (zh) * | 2017-04-19 | 2017-10-03 | 中国建设银行股份有限公司 | 一种即时通信方法和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050160424A1 (en) * | 2004-01-21 | 2005-07-21 | International Business Machines Corporation | Method and system for grid-enabled virtual machines with distributed management of applications |
-
2018
- 2018-12-18 CN CN201811548642.XA patent/CN109379443B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221435A (zh) * | 2006-09-28 | 2008-07-16 | 洛克威尔自动控制技术股份有限公司 | 消息引擎的搜索和分类 |
CN101431464A (zh) * | 2007-11-06 | 2009-05-13 | 阿里巴巴集团控股有限公司 | 一种优选客户端之间数据传输路径的方法及其装置 |
CN102883293A (zh) * | 2012-10-12 | 2013-01-16 | 杭州东信北邮信息技术有限公司 | 一种实现移动电话来电智能管理的***和方法 |
CN103702062A (zh) * | 2013-12-27 | 2014-04-02 | Tcl集团股份有限公司 | 一种音视频通讯方法、装置及*** |
CN104363291A (zh) * | 2014-11-19 | 2015-02-18 | 中国航天科工集团第二研究院七〇六所 | 一种网络通信中间件实现方法 |
CN104486107A (zh) * | 2014-12-05 | 2015-04-01 | 曙光信息产业(北京)有限公司 | 一种日志采集装置及方法 |
CN105007313A (zh) * | 2015-07-03 | 2015-10-28 | 许继集团有限公司 | 一种终端接入方法和用于节能服务的海量数据传输*** |
CN106331115A (zh) * | 2016-08-26 | 2017-01-11 | 深圳市同为数码科技股份有限公司 | 一种支持多台设备连接的分布式可扩展服务器*** |
CN107231290A (zh) * | 2017-04-19 | 2017-10-03 | 中国建设银行股份有限公司 | 一种即时通信方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN109379443A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109327513B (zh) | 交互方法、装置及计算机可读存储介质 | |
EP2088791A1 (en) | Method, system and device for increasing multimedia messaging service system capacity | |
CN104811459A (zh) | 用于消息服务的处理方法、装置及***、消息服务*** | |
CN108683653B (zh) | 一种基于WebSocket的主动式消息推送*** | |
CN107528891B (zh) | 一种基于WebSocket的自动集群方法及其*** | |
CN113596191A (zh) | 一种数据处理方法、网元设备以及可读存储介质 | |
KR101938623B1 (ko) | 오픈 플로우 통신 방법, 시스템, 제어기 및 서비스 게이트웨이 | |
CN111917562B (zh) | 广播消息转发方法、装置、设备及存储介质 | |
CN106961426B (zh) | 智能设备的通讯方法及装置 | |
KR101805458B1 (ko) | 웹 소켓 지원 방법, 그리고 이를 사용한 웹 서버 및 웹 애플리케이션 서버 | |
CN104301287B (zh) | 一种多对多会话的实现方法、网络节点、服务器及*** | |
CN111683158B (zh) | 一种实现同步请求响应的mqtt协议通信方法 | |
CN111741129A (zh) | 一种实现多路复用的mqtt协议通信方法及*** | |
CN113572835A (zh) | 一种数据处理方法、网元设备以及可读存储介质 | |
CN112217649B (zh) | 终端设备管理方法、服务器及终端设备 | |
CN109379443B (zh) | 一种面向物联网的分布式消息队列的实现方法 | |
CN106027599B (zh) | 一种数据传输通道建立方法、***和服务器 | |
CN112968965B (zh) | Nfv网络节点的元数据服务方法、服务器及存储介质 | |
CN111555965B (zh) | 一种适用于iOS客户端的消息推送方法及*** | |
WO2013159492A1 (zh) | 信息上报与下载的方法及*** | |
CN115665220A (zh) | 用户驻地设备管理*** | |
CN110474781B (zh) | 一种组播数据转发的方法及装置 | |
CN113037803A (zh) | 地质灾害监测方法及***、电子设备及存储介质 | |
CN109429215B (zh) | 数据传输方法、相关设备和计算机可读存储介质 | |
CN112559134A (zh) | 一种分布式WebSocket集群构建方法、装置、***及存储介质 |
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 |