CN114025002A - 一种基于mqtt信息传输的方法、***及通信设备 - Google Patents

一种基于mqtt信息传输的方法、***及通信设备 Download PDF

Info

Publication number
CN114025002A
CN114025002A CN202111305221.6A CN202111305221A CN114025002A CN 114025002 A CN114025002 A CN 114025002A CN 202111305221 A CN202111305221 A CN 202111305221A CN 114025002 A CN114025002 A CN 114025002A
Authority
CN
China
Prior art keywords
mqtt
node
message
nodes
client
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.)
Pending
Application number
CN202111305221.6A
Other languages
English (en)
Inventor
蔡进
左绍舟
龚潇
陈向阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Hongdian Technologies Corp
Original Assignee
Shenzhen Hongdian Technologies Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Hongdian Technologies Corp filed Critical Shenzhen Hongdian Technologies Corp
Priority to CN202111305221.6A priority Critical patent/CN114025002A/zh
Publication of CN114025002A publication Critical patent/CN114025002A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本申请提供了一种基于MQTT信息传输的方法、***及通信设备,该方法应用于信息传输***,该***包括多个节点,多个节点中的每个节点包括MQTT客户端和MQTT服务端,不同节点上的MQTT服务端互相连接,通过第一节点上的第一MQTT服务端将来自于第一MQTT客户端上的第一消息发送给除第一节点外的其他节点上的MQTT服务端,第一节点为多个节点中的任意一个。并且,第一MQTT服务端也可以接收到除第一节点外的其他节点上的MQTT服务端发送的第二消息。本申请提供的方法,实现了信息传输***中的每个节点的信息都是对等的,无论哪个节点掉线都不影响整个***的稳定性,保证了***业务不受故障节点的影响。

Description

一种基于MQTT信息传输的方法、***及通信设备
技术领域
本申请属于MQTT传输协议技术领域,尤其涉及一种基于MQTT信息传输的方法、***及通信设备。
背景技术
伴随着无线自组织网络应用越来越广泛,无线自组织网络,对于在缺乏基础设施的区域形成通联网络具有重要意义,尤其适合于抢险救灾、偏远地区应急行动等。无线自组织网络形式突破了传统无线蜂窝网络的地理局限性,能够更加快速、便捷、高效地部署,适合于一些紧急场合的通信需要,如战场的单兵通信***。
在相关技术中,基于MQTT分布式服务框架的无线自组织网络,降低网络传输延迟、提升了服务响应速度和服务质量。
但是,传统的MQTT分布式服务框架往往基于C/S架构设计,一个中心节点当服务器,其他节点当客户端去连接进行通信和消息传递,如果充当服务器的节点掉线,整个自组网的消息***全部瘫痪。
发明内容
本申请实施例提供了一种基于MQTT信息传输的方法、***及通信设备,可以解决当一个节点掉线导致整个***瘫痪的问题,从而使得***内终端互通,达到信息共享的效果。
第一方面,提供了一种基于MQTT信息传输的方法,该方法应用于信息传输***,该***包括多个节点,多个节点中的每个节点包括MQTT客户端和MQTT服务端,不同节点上的MQTT服务端互相连接,该方法包括:第一节点上的第一MQTT服务端将来自于第一节点上的第一MQTT客户端的第一消息发送给除第一节点外的其他节点上的MQTT服务端,第一节点为多个节点中的任意一个;第一MQTT服务端接收除第一节点外的其他节点上的MQTT服务端发送的第二消息。
第一方面提供的方法,通过第一节点上的第一MQTT服务端将来自于第一MQTT客户端上的第一消息发送给除第一节点外的其他节点上的MQTT服务端,从而使得除第一节点外的其他节点可以接收到第一节点上的第一信息。并且,第一MQTT服务端也可以接收到除第一节点外的其他节点上的MQTT服务端发送的第二消息,从而使得第一MQTT服务端也可以接收到除第一节点外的其他节点上的第二信息。该方法实现了每个节点的信息都是对等的,无论哪个节点掉线都不影响整个***的稳定性,保证了***业务不受故障节点的影响。
可选的,第一消息包括:订阅消息,和/或,发布消息。在该种实现方式中,第一节点上的第一MQTT服务端可以将来自于第一MQTT客户端上的订阅消息或者发布消息发送给除第一节点外的其他节点上的MQTT服务端,从而使得除第一节点外的其他节点可以接收到第一节点上的订阅主题或者发送主题。
可选的,第一消息包括订阅消息时,该方法还包括:第一MQTT服务端将来自于第一MQTT客户端的第一消息进行本地保存。在该种实现方式中,当第一MQTT客户端发送的第一消息为订阅消息时,为了便于对第一节点处的订阅消息进行记录可以将该订阅消息进行本地保存。
可选的,第二消息包括订阅消息,该方法还包括:第一MQTT服务端将第二消息进行本地保存。在该种实现方式中,当第一MQTT服务端接收到除第一节点外的其他节点上的MQTT服务端发送的第二消息为订阅消息时,表明此节点通知第一节点,此节点上的订阅消息,因此,为了保持每个节点信息的同步,需要将该订阅消息进行本地保存。
可选的,第二消息包括发布消息,方法还包括:第一MQTT服务端将第二消息发送给第一MQTT客户端。在该种实现方式中,当第一MQTT服务端接收到除第一节点外的其他节点上的MQTT服务端发送的第二消息为发布消息时,表示该发布消息为该第一节点上的第一MQTT客户端所需要的,因此第一MQTT服务端将该发布消息发送给第一MQTT客户端。
可选的,该方法还包括,第一MQTT服务端查询本地保存的订阅主题;当所述本地保存的订阅主题和发布消息相匹配时,第一MQTT服务端向第一MQTT客户端发送发布消息。在该种实现方式中,为了保证发布消息的准确性,可以对本地保存的订阅主题进行查找,当本地保存的订阅主题与发布主题相匹配时,第一MQTT服务端向第一MQTT客户端发送该发布消息。
第二方面,提供了一种装置,该装置包括用于执行以上第一方面或者第一方面的任意一方面可能的实现方式中的各个步骤的单元。
第三方面,提供了一种装置,该装置包括至少一个处理器和存储器,该至少一个处理器用于执行以上第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,提供了一种装置,该装置包括至少一个处理器和接口电路,该至少一个处理器用于执行以上第一方面或者第一方面中的任意一方面可能的实现方式中的方法。
第五方面,提供了一种信息传输***,该***包括多个节点,多个节点中的每个节点包括MQTT客户端和MQTT服务端,不同节点的MQTT服务端保持连接,该***用于执行以上第一方面或者第一方面中的任意一方面可能的实现方式中的方法。
第六方面,提供了一种通信设备,该通信设备包括MQTT客户端和MQTT服务端,该通信设备用于执行以上第一方面或者第一方面中的任意一方面可能的实现方式中的方法。
第七方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序在被处理器执行时,用于执行第一方面或第一方面的任意可能的实现方式中的方法。
第八方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序被执行时,用于执行第一方面或第一方面的任意可能的实现方式中的方法。
第九方面,提供了一种芯片或者集成电路,该芯片或者集成电路包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片或者集成电路的设备执行第一方面或第一方面的任意可能的实现方式中的方法。
可以理解的是,上述第二方面至第九方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:
本申请提供的方法,通过第一节点上的第一MQTT服务端将来自于第一MQTT客户端上的第一消息发送给除第一节点外的其他节点上的MQTT服务端,从而使得除第一节点外的其他节点可以接收到第一节点上的第一信息。并且,第一MQTT服务端也可以接收到除第一节点外的其他节点上的MQTT服务端发送的第二消息,从而使得第一MQTT服务端也可以接收到除第一节点外的其他节点上的第二信息。该方法实现了每个节点的信息都是对等的,无论哪个节点掉线都不影响整个***的稳定性,保证了***业务不受故障节点的影响。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的基于MQTT信息传输的***的示意图;
图2是本申请实施例提供的MQTT Broker的核心组件的示意图;
图3是本申请实施例提供的一例基于MQTT信息传输方法的订阅主题的示意性流程图;
图4是本申请实施例提供的一例基于MQTT信息传输方法的发布主题的示意性流程图;
图5是本申请实施例提供的一种通信设备的示意性框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
首先,在介绍本申请提供的方法和***之前,需要对下文中即将提及的部分术语进行说明。当本申请提及术语“第一”或者“第二”等序数词时,除非根据上下文其确实表达顺序之意,否则应当理解为仅仅是起区分之用。
术语“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
除非另有说明,本文中“/”一般表示前后关联对象是一种“或”的关系,例如,A/B可以表示A或B。术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请的描述中,“多个”是指两个或两个以上。
无线自组织网络,是指移动通信和计算机网络相结合的网络,是移动计算机网络的一种,用户终端可以在网内随意移动而保持通信。当前,无线自组织网络越来越注重动态网络拓扑对于网络稳定性的影响的研究。无线自组织网络的节点的移动变化在给用户带来便利的同时,造成了网络拓扑的变化,而由于无线通信的距离受限、传输衰落等特点,节点位置的变化会导致网络连接的不稳定。因此,无线自组织网络的节点移动,不仅仅取决于节点移动路程优化的需要,还必须考虑到无线自组织网络的稳定性。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是由IBM公司开发的轻量级的即时通信协议。与HTTP协议不同的是,MQTT采用的是发布/订阅的模式,而不是传统的请求/响应模式,这种更为轻量级的模式使得MQTT更加适用于低功耗和网络带宽有限的物联网设备。同时,MQTT还具有精简、支持连续的回话控制、提供传输的不同服务质量、可定制性强等特点,在物联网正当火热的今天,其价值得以充分体现。MQTT作为物联网的重要传输协议,支持几乎所有的平台。
但是,在相关技术中基于MQTT分布式服务框架往往基于C/S架构设计,即一个中心节点充当服务器,其他节点当客户端去连接,或者由一个中间件传消息确保消息的可靠性,随着分布式集群***处理的业务功能的逐渐丰富,分布式集群***中包含的子***数目也越来越多,各子***间调用会变得很复杂。当相互依赖的其中一个子***发生修改时,所有相关***调用都需要进行修改。
消息中间件为利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式集群***的集成。通过提供消息传递和消息排队模型,在分布式环境下扩展进程间的通信,例如目前使用比较广泛的RabbitMQ,ActiveMQ等。现有技术中,通常会引入消息中间件来对***间的相互调用进行解耦,各个子***通过消息中间件进行消息的发送与接收,将***间的直接调用转变为基于消息传递的异步调用。但是,跨节点的消息传递,可能会由于网络等原因出现丢失,因此通过消息中间件进行消息的发送与接收,会存在不一致的可能。因此,如何实现跨节点的消息传递和同步,是目前亟需解决的问题。
有鉴于此,本申请提供了一种基于MQTT信息传输的方法,本申请中基于MQTT的分布式服务框架中的多个节点上的每个节点都是对等的,即每个节点都有MQTT服务端和MQTT客户端,利用第一节点上的MQTT服务端向其他节点上的MQTT服务端发送第一节点上的MQTT客户端发送的第一消息,该第一消息可以是订阅消息或者发布消息,该第一节点是指多个节点中的任意一个,从而通知其他节点知道第一节点上的订阅消息或者发布消息,利用第一节点上的MQTT服务端接收其他节点上的MQTT服务端发送的第二消息,该第二消息可以是订阅消息或者发布消息,从而通知第一节点知道其他节点上的订阅消息或者发布消息,即实现每个节点信息共享,确保在整个消息发送***中每个节点的信息一致,一个节点掉线不会影响***中的其他节点。
下面结合具体的例子来说明本申请提供的基于MQTT信息传输的方法适用的基于MQTT信息传输的***。
图1示出了一例适用于本申请实施例的基于MQTT信息传输的***的示意图。如图1所示,该***包括:多个节点。多个节点中的每个节点上包括一个MQTT Broker和一个MQTTClient,为了实现消息的订阅和发布,同一节点上的MQTT Broker和MQTT Client保持连接,不同节点上的MQTT Broker之间互相连接。在图1所示的例子中,该***以四个节点为例,该节点可以理解为无线自组织网络中的用户携带的移动设备比如:手机,平板或者对讲机等。对该***中使用的移动设备,本申请实施例不做限制。
可选的,作为一种可能的实现方式,为了实现各节点之间的信息一致,该***中的不同节点上的MQTT Broker之间通过传输控制协议(Transmission Control Protocol,TCP)互相连接,并通过心跳包保持在线,即可以实现各个节点之间的信息的共享。
需要说明的是,该心跳包通常是一个节点的服务端每隔一小段时间向另一个节点的服务端发送的一个数据包,通知服务器自己仍然在线,服务器与客户端之间每隔一段时间进行一次交互,来判断这个链接是否有效,并传输一些可能有必要的数据。通常是在建立了一个TCP的socket连接后无法保证这个连接是否持续有效,这时候两边应用会通过定时发送心跳包来保证连接是有效的。因按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
但是一般情况下,会保持每个节点的长连接,所谓长连接指的是建立一次TCP连接之后,就认为连接有效,利用这个连接去不断传输数据,不断开TCP连接,至于包的内容,是没有特别规定的,不过一般都是很小的包,或者只是包含包头的一个空包。
还需要说明的是,在本申请实施例中,为了实现业务通过MQTT Client向本地MQTTBroker发送订阅或者发布消息,可以将MQTT Client和本地节点上的MQTT Broker通过PUB/SUB连接。
应该理解,图1仅仅是示例性的,不应该对本申请实施例的应用场景产生任何的限制,例如,在图1所示的场景中,还可以包括更多的电子设备等。本申请在此不作限制。
其中,在图1所示的***中,每个节点上的MQTT Broker可以给其他节点上的MQTTBroker发送第一消息。每个节点上的MQTT Broker也可以接收其他节点上的MQTT Broker发送的第二消息。因此,可以在图1的基础上对每个节点上的MQTT Broker的核心组件进行划分。图2示出了本申请实施例提供的MQTT Broker的核心组件的示意图。如图2所示的,每个节点上的MQTT Broker包括订阅模块、转发模块和发布模块。
订阅模块用于接收来自MQTT Client的订阅服务;转发模块用于将订阅主题或者发布主题转发至其他节点上;发布模块用于接收来自MQTT Client的发布服务。
上述对本申请实施例提供的基于MQTT信息传输的***进行了具体介绍,下面对本申请使用的场景进行介绍。
在一种可能的应用场景中,在发生火灾,消防员在进行消防的过程中,消防员之间需要进行信息共享时,可以使用本申请提供的基于MQTT信息传输的方法。
在另外一种可能的应用场景中,在发生洪涝灾害时,抢险救灾人员之间需要进行信息共享时,可以使用本申请提供的基于MQTT信息传输的方法。
下面,结合图1和图2所示的示意图对本申请实施例提供的基于MQTT消息传输的方法做具体介绍。
下面以第一消息为订阅消息、第二消息也为订阅消息为例,对本申请实施例提供的基于MQTT消息传输的方法做具体介绍,图3示出了本申请提供的一例基于MQTT信息传输方法的订阅主题的示意性流程图。
如图3所示的,该方法包括:S310至S340。
S310、根据业务需求向第一MQTT Broker发起订阅消息。
在建立第一MQTT Broker和第一MQTT Client的联系之后,业务可以根据需求通过第一节点上的第一MQTT Client向第一节点上的第一MQTT Broker发起主题的订阅。
需要说明的是,该第一节点为多个节点中的任意一个节点。该第一MQTT Broker为第一节点上的服务端,第一MQTT Client为第一节点上的客户端。
S320、第一MQTT Broker将来自于第一MQTT Client的订阅消息发送给除第一节点外的其他节点上的MQTTBroker。
在本申请实施例中,在步骤S310通过第一节点上的第一MQTT Client向第一节点上的第一MQTT Broker发起订阅主题时,除第一节点外的其他节点上的MQTT Broker也同时通过TCP向该第一MQTT Broker转发对应节点上的MQTT Client的订阅主题,因此当第一MQTT Broker接收到订阅主题时,首先需要判断该订阅主题的来源。
当确定第一MQTT Broker接收到的订阅主题来自于第一MQTT Client时,表示该客户端首次发送该订阅主题,为了保证其他节点上也同时接收到该客户端订阅的主题信息,需要将该客户端订阅主题的消息发送给***内的其他节点上的MQTT Broker。并且,第一MQTT Broker将第一MQTT Client发送的订阅主题进行保存。
示例性的,第一MQTT Broker可以将该节点上订阅的主题信息保存在本地,或者其他服务器上,当然还可以保存在其他容易获取的地方,对此,本申请实施例不做限制。
S330、第一MQTT Broker将来自于除第一节点外的其他节点上的MQTT Broker转发同步过来的主题进行保存。
在步骤S330中,为了使得第一节点可以得到其他节点上的订阅信息,当确定第一MQTT Broker接收到的订阅主题来自于除第一节点外的其他节点上的MQTT Broker转发同步过来的主题时,只需要将该订阅信息以及该MQTT Broker的IP信息进行保存。
同样的,该保存的地方本申请实施例不做限定,可以保存在本地也可保存在其他服务器上。
S340、返回订阅主题的ACK。
在步骤S340中,当第一MQTT Broker将订阅消息保存后返回确认字符(Acknowledge character,ACK),即表示该节点上的MQTT Broker已经接收到***内其他节点上的MQTT Broker转发同步过来的订阅主题。
需要说明的是,ACK是指在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。
示例性的,当节点1处的业务通过第一MQTT Client给第一MQTT Broker发送了订阅主题的消息。节点1处的第一MQTT Broker接收到了订阅主题的消息,并且,节点2、节点3和节点4也同样可以给节点1处的第一MQTT Broker发送对应节点订阅主题的消息。因此,当节点1处的MQTT Broker接收到订阅主题的消息时,需要判断该消息是来自于第一MQTTClient还是来自于其他节点的MQTT Broker。
当节点1处的第一MQTT Broker接收到订阅主题的消息来自于第一MQTT Client时,表明节点1处的业务首次订阅了该主题。此时,为了避免节点1掉线导致整个组网的瘫痪,可以将节点1订阅主题的消息分别转发至节点2、节点3和节点4上的MQTT Broker。此时,节点2、节点3和节点4接收到节点1订阅主题的消息,保证了每个节点上的信息一致。并且,节点2、节点3和节点4的MQTT Broker可以保存节点1订阅主题消息的事件,然后节点2、节点3和节点4分别通过对应的MQTT Broker向节点1上的第一MQTT Broker返回ACK。
当节点1处的第一MQTT Broker接收到订阅主题的消息来自于节点2处的第一MQTTBroker转发过来的,表示该主题是节点2处的第一MQTT Client订阅的,节点2处的MQTTBroker将订阅主题同步转发给节点1、节点3和节点4。此时,节点1处的第一MQTT Broker接收到订阅消息之后,只需要将该订阅消息进行本地保存。同时,节点1通过第一MQTT Broker向节点2的MQTT Broker返回ACK。
上述步骤S310-步骤S340具体介绍了在基于MQTT信息传输***中如何进行业务主题的订阅。下面以第一消息为发布消息、第二消息也为发布消息为例,对本申请实施例提供的基于MQTT消息传输的方法如何进行业务主题的发布做具体介绍,图4示出了本申请提供的一例基于MQTT信息传输方法的发布主题的示意性流程图。如图4所示的,该方法包括S410-S430。
S410、业务模块根据需要向第一MQTT Broker,发布相关主题。
在建立第一MQTT Broker和第一MQTT Client的联系之后,业务可以根据需求通过第一节点上的第一MQTT Client向第一节点上的第一MQTT Broke发布相关主题。
需要说明的是,该第一节点为多个节点中的任意一个节点。该第一MQTT Broker为第一节点上的服务端,第一MQTT Client为第一节点上的客户端。
S420、第一MQTT Broker将来自于第一MQTTClient的发布消息发送给除第一节点外的其他节点上的MQTTBroker。
在本申请实施例中,在步骤410中通过第一MQTT Client向第一MQTT Broker发布相关主题后,由于其他节点上的MQTT Broker也同时通过TCP向该第一MQTT Broker发布主题,因此当第一MQTT Broker接收到发布主题时,首先需要判断该主题是来自于第一MQTTClient还是来自于其他节点的MQTT Broker。
在本申请实施例中,当确定第一MQTT Broker接收到的发布主题来自于第一MQTTClient时,需要将该第一MQTT Client发布主题的消息发送给***内的其他节点上的MQTTBroker。即,第一MQTT Broker将接收到的发布主题转发给订阅该主题的节点上的MQTTBroker,由该节点上的MQTT Broker将该发布主题转发给对应节点上的本地MQTT Client。
需要说明的是,将该第一MQTT Client发布主题的消息发送给***内的其他节点上的MQTT Broker是指可以发送给除第一MQTT Broker上的一个节点、两个节点或者多个节点上。
还需要说明的是,可以对其他节点上保存的订阅信息进行查找,将该发布信息发送给与该订阅信息匹配的节点上。
S430、第一MQTT Broker将来自于除第一节点外的其他节点上的MQTT Broker同步转发过来的发布消息转发给第一MQTT Client。
在步骤S430中,当确定第一MQTT Broker接收到的发布主题来自于***内其他节点上的MQTT Broker同步转发过来的主题,只需要将该信息转发给本地订阅该主题的客户端。
S440、返回订阅主题的ACK。
执行完上述步骤S430则返回发布主题的ACK,表示主题已经发布完成。即表示该节点的第一MQTT Broker已经接收到***内其他节点上的MQTT Broker转发同步过来的主题。
示例性的,当节点1处的第一MQTT Broker接收到的发布消息来自于第一MQTTClient时,表明节点1处的业务发布的主题需要转发给其他节点上。此时,查询其他节点上保存的订阅主题的信息,然后将该发布主题转发给与订阅主题相匹配的节点上,即经过查询节点1发布的主题与节点2上的订阅主题相匹配时,转发至节点2上MQTT Broker。此时,节点2上的MQTT Broker会接收到节点1发布主题的消息。并且,节点2对该发布主题消息进行本地保存,然后节点2上的MQTT Broker向节点1上的第一MQTT Broker返回ACK。
当节点1处的第一MQTT Broker接收到发布主题的消息来自于节点2处的MQTTBroker转发过来的,表示该主题是节点2处的MQTT Client发布的,节点2处的MQTT Broker将发布主题同步转发给节点1,表示该发布消息是和节点1上的订阅消息相匹配的,此时,节点1处的第一MQTT Broker接收到发布消息之后,需要将该发布消息转发给第一MQTTClient。同时,节点1上的第一MQTT Broker向节点2上的MQTT Broker返回ACK。
在本申请实施例中,通过第一节点上的第一MQTT服务端将来自于第一MQTT客户端上的第一消息发送给除第一节点外的其他节点上的MQTT服务端,从而使得除第一节点外的其他节点可以接收到第一节点上的第一信息。并且,第一MQTT服务端也可以接收到除第一节点外的其他节点上的MQTT服务端发送的第二消息,从而使得第一MQTT服务端也可以接收到除第一节点外的其他节点上的第二信息。该方法实现了每个节点的信息都是对等的,无论哪个节点掉线都不影响整个***的稳定性,保证了***业务不受故障节点的影响。
上述结合图1-图4描述了本申请实施例提供的基于MQTT信息传输的方法的实施例,下面描述本申请实施例提供的通信设备。
本申请实施例还提供了一种通信设备,图5示出了本申请实施例提供的一种通信设备500的示意性框图。如图5所示,通信设备500包含:MQTT客户端510,MQTT服务端520。
应理解,通信设备500可以理解为图1中节点的设备。
需要说明的是,通信设备的有益效果参见上述描述,在此不做赘述。
本实施例可以根据上述方法,对终端设备进行功能模块的划分。例如,可以对应各个功能,划分为各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
需要说明的是,上述方法实施例涉及的各步骤的相关内容,均可以援引到对应功能模块的功能描述,此处不再赘述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本申请实施例还提供了一种计算机可读介质,用于存储计算机程序代码,该计算机程序包括用于执行上述方法中本申请实施例的基于MQTT信息传输的方法的指令。该可读介质可以是只读存储器(read-only memory,ROM)或随机存取存储器(random accessmemory,RAM),本申请实施例对此不做限制。
本申请还提供了一种计算机程序产品,该计算机程序产品包括指令,当该指令被执行时,该***分别执行对应于上述方法中的操作。
本申请实施例还提供了一种***芯片,该***芯片包括:处理单元和通信单元,该处理单元,例如可以是处理器,该通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行计算机指令,以使该芯片执行上述本申请实施例提供的任一种基于MQTT信息传输的方法。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于MQTT信息传输的方法,其特征在于,所述方法应用于信息传输***,所述***包括多个节点,所述多个节点中的每个节点包括MQTT客户端和MQTT服务端,不同节点上的MQTT服务端互相连接,所述方法包括:
第一节点上的第一MQTT服务端将来自于所述第一节点上的第一MQTT客户端的第一消息发送给除所述第一节点外的其他节点上的MQTT服务端,所述第一节点为所述多个节点中的任意一个;
所述第一MQTT服务端接收除所述第一节点外的其他节点上的MQTT服务端发送的第二消息。
2.根据权利要求1所述的方法,其特征在于,所述第一消息包括:订阅消息,和/或,发布消息。
3.根据权利要求2所述的方法,其特征在于,所述第一消息包括:订阅消息,所述方法还包括:
所述第一MQTT服务端保存所述订阅消息。
4.根据权利要求2所述的方法,其特征在于,当所述第二消息包括:订阅消息,所述方法还包括:
所述第一MQTT服务端将所述第二消息进行保存。
5.根据权利要求3所述的方法,其特征在于,当所述第二消息包括:发布消息,所述方法还包括:
所述第一MQTT服务端将所述发布消息发送给所述第一MQTT客户端。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述第一MQTT服务端查询本地保存的订阅主题;
当所述本地保存的订阅主题和所述发布消息相匹配时,所述第一MQTT服务端向所述第一MQTT客户端发送所述发布消息。
7.一种基于MQTT信息传输的***,其特征在于,所述***包括多个节点,所述多个节点中的每个节点包括MQTT客户端和MQTT服务端,不同节点的MQTT服务端保持连接,所述***用于执行所述权利要求1-6所述的方法。
8.一种通信设备,其特征在于,所述通信设备包括MQTT客户端和MQTT服务端,所述通信设备用于执行权利要求1-6所述的方法。
9.一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的方法。
10.一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如权利要求1至6中任一项所述的方法。
CN202111305221.6A 2021-11-05 2021-11-05 一种基于mqtt信息传输的方法、***及通信设备 Pending CN114025002A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111305221.6A CN114025002A (zh) 2021-11-05 2021-11-05 一种基于mqtt信息传输的方法、***及通信设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111305221.6A CN114025002A (zh) 2021-11-05 2021-11-05 一种基于mqtt信息传输的方法、***及通信设备

Publications (1)

Publication Number Publication Date
CN114025002A true CN114025002A (zh) 2022-02-08

Family

ID=80061284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111305221.6A Pending CN114025002A (zh) 2021-11-05 2021-11-05 一种基于mqtt信息传输的方法、***及通信设备

Country Status (1)

Country Link
CN (1) CN114025002A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114938388A (zh) * 2022-07-22 2022-08-23 浙江中控技术股份有限公司 分布式数据的传输方法、装置、***及存储介质
CN115242805A (zh) * 2022-06-11 2022-10-25 北京网聚云联科技有限公司 基于gossip的分布式MQTT消息传递方法、传递***及存储介质
CN116827929A (zh) * 2022-03-27 2023-09-29 西安即刻易用网络科技有限公司 一种基于mqtt协议的通信***及通信方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111131501A (zh) * 2019-12-31 2020-05-08 郑州信大捷安信息技术股份有限公司 一种基于mqtt协议的消息推送***及方法
CN111711663A (zh) * 2020-05-26 2020-09-25 北京金山云网络技术有限公司 发布及订阅服务的处理方法、装置及电子设备
WO2020211344A1 (zh) * 2019-04-17 2020-10-22 平安科技(深圳)有限公司 一种基于mqtt的消息分发方法、服务器、装置及存储介质
CN113254233A (zh) * 2021-06-07 2021-08-13 腾讯科技(深圳)有限公司 一种数据传输方法、装置、设备及可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020211344A1 (zh) * 2019-04-17 2020-10-22 平安科技(深圳)有限公司 一种基于mqtt的消息分发方法、服务器、装置及存储介质
CN111131501A (zh) * 2019-12-31 2020-05-08 郑州信大捷安信息技术股份有限公司 一种基于mqtt协议的消息推送***及方法
CN111711663A (zh) * 2020-05-26 2020-09-25 北京金山云网络技术有限公司 发布及订阅服务的处理方法、装置及电子设备
CN113254233A (zh) * 2021-06-07 2021-08-13 腾讯科技(深圳)有限公司 一种数据传输方法、装置、设备及可读存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116827929A (zh) * 2022-03-27 2023-09-29 西安即刻易用网络科技有限公司 一种基于mqtt协议的通信***及通信方法
CN115242805A (zh) * 2022-06-11 2022-10-25 北京网聚云联科技有限公司 基于gossip的分布式MQTT消息传递方法、传递***及存储介质
CN115242805B (zh) * 2022-06-11 2024-04-19 北京网聚云联科技有限公司 基于gossip的分布式MQTT消息传递方法、传递***及存储介质
CN114938388A (zh) * 2022-07-22 2022-08-23 浙江中控技术股份有限公司 分布式数据的传输方法、装置、***及存储介质
CN114938388B (zh) * 2022-07-22 2022-11-11 浙江中控技术股份有限公司 分布式数据的传输方法、装置、***及存储介质

Similar Documents

Publication Publication Date Title
US9578081B2 (en) System and method for providing an actively invalidated client-side network resource cache
CN114025002A (zh) 一种基于mqtt信息传输的方法、***及通信设备
US8799400B2 (en) System and method for managing multiple queues of non-persistent messages in a networked environment
US9967360B2 (en) Method and system for information exchange utilizing an asynchronous persistent store protocol
TWI530147B (zh) 一種基於層之自動調整同級媒體串流之裝置和方法
WO2022170446A1 (zh) 一种卫星链路信息确定方法及装置
CN111885093B (zh) 事件请求的传输方法和装置、存储介质及电子设备
CN102857403B (zh) 即时通信客户端数据共享方法和***
CN102984174A (zh) 一种发布订阅***中可靠性保障方法及***
US10958712B2 (en) Enhanced reliability for information services
JP2004080277A (ja) 分散処理システム並びに分散処理システムにおける代理ノード、利用者側ノードおよび方法
WO2023186154A1 (zh) 数据传输***以及方法
CN110474781B (zh) 一种组播数据转发的方法及装置
CN115514698A (zh) 协议计算方法、交换机、跨设备链路聚合***及存储介质
CN113037803A (zh) 地质灾害监测方法及***、电子设备及存储介质
Zhai et al. An improved DDS publish/subscribe automatic discovery algorithm
CN114827097B (zh) 通信网络构建方法、装置及计算机设备
Liang et al. Study on Service Oriented Real-Time Message Middleware
CN114500660B (zh) 请求处理方法、装置、设备及计算机可读存储介质
CN111966502B (zh) 用于调整实例数的方法、装置、电子设备及可读存储介质
CN117440446B (zh) 一种基于数据分发服务的数据传输方法和装置
KR102367017B1 (ko) 통신 네트워크 시스템 및 그것의 제어방법
CN117336320B (zh) 一种动态控制机器人终端网络通讯的***和实现方法
CN118075095A (zh) 一种数据传输方法和相关装置
Abdelfattah et al. Reliable web services approaches of Mobile Cloud Computing: A comparative study

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