CN115242805B - 基于gossip的分布式MQTT消息传递方法、传递系统及存储介质 - Google Patents
基于gossip的分布式MQTT消息传递方法、传递系统及存储介质 Download PDFInfo
- Publication number
- CN115242805B CN115242805B CN202210656795.6A CN202210656795A CN115242805B CN 115242805 B CN115242805 B CN 115242805B CN 202210656795 A CN202210656795 A CN 202210656795A CN 115242805 B CN115242805 B CN 115242805B
- Authority
- CN
- China
- Prior art keywords
- mqtt
- proxy node
- mqtt proxy
- client
- message
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000005540 biological transmission Effects 0.000 title abstract description 20
- 238000010586 diagram Methods 0.000 claims abstract description 20
- 230000006870 function Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000009792 diffusion process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Abstract
本申请实施例公开了一种基于gossip的分布式MQTT消息传递方法、MQTT消息传递系统及存储介质,用于将gossip算法,应用于分布式部署MQTT代理节点的消息同步,不仅可以解决分布式消息同步的难题,还可以提升消息同步效率。本申请实施例方法包括:通过gossip算法,同步多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;在同步完成后,若目标发布客户端通过第一MQTT代理节点发布第一主题MQTT消息;通过第一MQTT代理节点向第二MQTT代理节点发送第一主题MQTT消息,多个MQTT代理节点包括第一MQTT代理节点和第二MQTT代理节点;通过第二MQTT代理节点向目标订阅客户端传递第一主题MQTT消息,第二MQTT代理节点为与目标订阅客户端直接连接的MQTT代理节点。
Description
技术领域
本申请涉及物联网网络技术领域,尤其涉及一种基于gossip的分布式 MQTT消息传递方法、传递系统及存储介质。
背景技术
物联网领域的很多场景都用集中式MQTT(Message Queuing TelemetryTransport,消息队列遥测传输协议)消息传递,这种方法可用性较低,当MQTT 代理服务器故障时,消息传递会中断。
发明内容
本申请实施例提供了一种基于gossip的分布式MQTT消息传递方法、 MQTT消息传递系统及存储介质,用于将gossip算法,应用于分布式部署 MQTT代理节点的消息同步,不仅可以解决分布式消息同步的难题,还可以提升消息同步效率。
本申请第一方面提供一种基于gossip的分布式MQTT消息传递方法,所述方法应用于MQTT消息传递系统,所述MQTT消息传递系统包括至少一个发布客户端,至少一个订阅客户端,多个MQTT代理节点,所述方法可以包括:
通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;
在同步完成后,若目标发布客户端通过第一MQTT代理节点发布第一主题MQTT消息,所述至少一个发布客户端包括所述目标发布客户端;
通过所述第一MQTT代理节点向第二MQTT代理节点发送所述第一主题 MQTT消息,所述多个MQTT代理节点包括所述第一MQTT代理节点和所述第二MQTT代理节点;
通过所述第二MQTT代理节点向目标订阅客户端传递所述第一主题 MQTT消息,所述至少一个订阅客户端包括所述目标订阅客户端,所述第二MQTT代理节点为与所述目标订阅客户端直接连接的MQTT代理节点。
可选的,所述通过gossip算法,同步所述多个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代理节点,用于通过gossip算法,同步所述多个MQTT 代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;
目标发布客户端,用于在同步完成后,若目标发布客户端通过第一MQTT 代理节点发布第一主题MQTT消息,所述至少一个发布客户端包括所述目标发布客户端;
所述第一MQTT代理节点,用于向第二MQTT代理节点发送所述第一主题MQTT消息,所述多个MQTT代理节点包括所述第一MQTT代理节点和所述第二MQTT代理节点;
所述第二MQTT代理节点,用于通过所述第二MQTT代理节点向目标订阅客户端传递所述第一主题MQTT消息,所述至少一个订阅客户端包括所述目标订阅客户端,所述第二MQTT代理节点为与所述目标订阅客户端直接连接的MQTT代理节点。
本申请第三方面提供一种终端设备,可以包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器用于对应执行本申请第一方面所述的方法。
本申请实施例又一方面提供一种计算机可读存储介质,包括指令,当其在处理器上运行时,使得处理器执行本申请第一方面所述的方法。
本申请实施例又一方面公开一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本申请第一方面所述的方法。
本申请实施例又一方面公开一种应用发布平台,所述应用发布平台用于发布计算机程序产品,其中,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本申请第一方面所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
在本申请实施例中,基于gossip的分布式MQTT消息传递方法,所述方法应用于MQTT消息传递系统,所述MQTT消息传递系统包括至少一个发布客户端,至少一个订阅客户端,多个MQTT代理节点,所述方法可以包括:通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;在同步完成后,若目标发布客户端通过第一MQTT代理节点发布第一主题MQTT消息,所述至少一个发布客户端包括所述目标发布客户端;通过所述第一MQTT代理节点向第二MQTT代理节点发送所述第一主题MQTT消息,所述多个MQTT代理节点包括所述第一MQTT代理节点和所述第二MQTT代理节点;通过所述第二MQTT代理节点向目标订阅客户端传递所述第一主题MQTT消息,所述至少一个订阅客户端包括所述目标订阅客户端,所述第二MQTT代理节点为与所述目标订阅客户端直接连接的MQTT代理节点。用于将gossip算法,应用于分布式部署MQTT代理节点的消息同步,不仅可以解决分布式消息同步的难题,还可以提升消息同步效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,还可以根据这些附图获得其它的附图。
图1为现有技术中基于发布/订阅模式的集中式MQTT消息传递模式的一个示意图;
图2为本申请实施例中关于Gossip算法的一个示意图;
图3为本申请实施例所应用的一个系统架构图;
图4A为申请实施例中基于gossip的分布式MQTT消息传递方法的一个实施例示意图;
图4B为gossip扩散过程的一个示意图;
图5为本申请实施例中MQTT消息传递系统的一个示意图;
图6为本申请实施例中电子设备的另一个实施例示意图。
具体实施方式
本申请实施例提供了一种基于gossip的分布式MQTT消息传递方法、MQTT消息传递系统及存储介质,用于将gossip算法,应用于分布式部署 MQTT代理节点的消息同步,不仅可以解决分布式消息同步的难题,还可以提升消息同步效率。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,都应当属于本申请保护的范围。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议。该通讯协议构基于TCP(Transmission Control Protocol,传输控制协议)/IP(Internet Protocol,网际互连协议)之上,由IBM于1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
现有的技术方法,基本都是基于发布/订阅模式的集中式MQTT消息传递模式,具体如图1所示,为现有技术中基于发布/订阅模式的集中式MQTT消息传递模式的一个示意图。在图1所示中:
Publish:代表客户端发布一个主题A(topicA);
Subscribe:代表订阅者订阅了该topicA,后续这个topicA发的信息 (message),订阅者都可以收到;
MQTT Broker:代理,处理客户端之间的数据传输任务。
原理说明:MQTT协议中的连接设备称为"客户端",与称为"代理"的服务器通信。代理处理客户端之间的数据传输任务。每当客户端(称为"发布者 ")想要分发信息时,它将发布到特定主题,代理然后将此信息发送到订阅该主题的任何客户端(称为"订阅者")。发布者不需要有关订阅者的数量或位置的任何数据。反过来,订阅者不需要任何关于发布者的数据。任何客户端都可以是发布者、订阅者或两者。客户端通常不知道对方,只有作为中介的代理。
物联网领域的很多场景都用集中式MQTT消息传递,这种方法存在以下几个缺点:
1、可用性较低,当MQTT代理服务器故障时,消息传递会中断;
2、当MQTT代理服务器与订阅者的物理距离较远,传递消息比较耗时;
3、集中式的部署方式,安全性较弱,一旦被攻破,数据将会泄露。
本申请提出一种基于Gossip算法的分布式MQTT的消息传递方式。分布式部署架构最难的就是如何保证多个节点(主机)数据配置相同,因为数据不能存在单个节点(主机)上,否则可能出现单点故障。Gossip算法是一种数据一致性算法,Gossip算法每个节点都是对等的,即没有角色之分。Gossip 算法中的每个节点都会将数据改动告诉其他节点。有话说得好:"最多通过六个人你就能认识全世界任何一个陌生人",即为《六度分隔理论》,因此数据改动的消息很快就会传遍整个集群,消息的传播速度为指数级。
如图2所示,为本申请实施例中关于Gossip算法的一个示意图。Gossip 扩散执行流程如下所示:
种子节点周期性的散播消息;
被感染节点随机选择N个邻接节点散播消息;
节点只接收消息不反馈结果;
每次散播消息都选择尚未发送过的节点进行散播;
收到消息的节点不回传散播:A→B,那么B进行散播的时候,不再发给 A。
如图3所示,为本申请实施例所应用的一个系统架构图。其中,MQTT:表示消息队列遥测传输协议;Broker:表示代理服务器,现实中可以是一个网关盒子;Topic:表示主题消息,现实环境下可以是传感器的信息;Publish:表示发布主题;Subscribe:表示订阅主题。
如图4A所示,为申请实施例中基于gossip的分布式MQTT消息传递方法的一个实施例示意图,所述方法应用于MQTT消息传递系统,所述MQTT 消息传递系统包括至少一个发布客户端,至少一个订阅客户端,多个MQTT 代理节点,其特征在于,所述方法实施例可以包括:
401、通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;
可选的,所述通过gossip算法,同步所述多个MQTT代理节点中每个 MQTT代理节点的拓扑图信息,可以包括:启动所述第一MQTT代理节点和所述第二MQTT代理节点;将所述第一MQTT代理节点与所述第二MQTT 代理节点建立连接;将所述第一MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向所述第二MQTT代理节点同步,以及将所述第二MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向所述第一MQTT代理节点同步,使得所述第一MQTT代理节点和所述第二MQTT代理节点的拓扑图信息以及发布客户端与订阅客户端的关系信息一致。
可选的,所述方法还可以包括:
若所述第一MQTT代理节点的拓扑图信息有更新,则将所述第一MQTT 代理节点更新后的拓扑图信息向所述第二MQTT代理节点同步;和/或,
若所述第二MQTT代理节点的拓扑图信息有更新,则将所述第二MQTT 代理节点更新后的拓扑图信息向所述第一MQTT代理节点同步。
可选的,所述每个MQTT代理节点的拓扑图信息包括:每个MQTT代理节点的拓扑信息,以及与所述每个MQTT代理节点连接的发布客户端的发布信息、订阅客户端的订阅信息中的至少一种。
可选的,所述至少一个发布客户端通过所述多个MQTT代理节点与所述至少一个订阅客户端连接。
可选的,目标发布客户端的数量不止一个,那么对应与目标发布客户端连接的第一MQTT代理节点也不止一个;目标订阅客户端的数量不止一个,那么对应与目标订阅客户端连接的第二MQTT代理节点也不止一个。
示例性的,分布式网络中的broker节点启动,接通网络,此时,该节点还不清楚整个网络结构信息也不知道客户端和订阅者的主题订阅关系,此时会去找邻近的broker去同步拓扑信息及订阅关系,详细说明如下。
以A MQTT代理节点(简称A节点)和B MQTT代理节点(简称B节点) 的拓扑结构同步为例,说明gossip的扩散过程,如图4B所示,为gossip扩散过程的一个示意图。
T1:A节点启动,用0=[A]表示;
T2:B节点启动,用0=[B]表示;
T3:A节点与B节点建立连接,此时,A节点存储的以自我为中心的拓扑图信息:“0=[A],1=[B]”,B节点的拓扑图信息:“0=[B],1=[A]”;
T4:假设B节点向A节点同步拓扑图信息,A节点收到后,与自身拓扑图比对,更新本地映射(图4B中用“1-0”表示B和A是相连的),信息有变动,则需要向与其连接的B节点同步最新信息;
T5:A节点向B节点同步本地映射图,B节点存储新的链接信息:“1-0”, B节点信息有变动,需要向外同步,发现A节点与自己相连,则向A同步;
T6:A节点和B节点的拓扑图信息以及发布客户端与订阅客户端的关系信息一致,同步完成。
402、在同步完成后,若目标发布客户端通过第一MQTT代理节点发布第一主题MQTT消息,所述至少一个发布客户端包括所述目标发布客户端。
403、通过所述第一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消息,具体此处不做限定。
404、通过所述第二MQTT代理节点向目标订阅客户端传递所述第一主题 MQTT消息,所述至少一个订阅客户端包括所述目标订阅客户端,所述第二 MQTT代理节点为与所述目标订阅客户端直接连接的MQTT代理节点。
示例性的,当整个网络中所有的节点拓扑信息、发布客户端与订阅客户端的关系等信息通过第一步的过程同步后,发布者在发布的一个topic中发布消息X:Message,能够通过接入节点快速找到订阅者的所在节点将消息X: message传递过去,结束。
结合图3所示,图3中的客户端(发布者)即为目标发布客户端,MQTT Broker1为第一MQTT代理节点,订阅者1和订阅者2即为目标订阅客户端,对于订阅者1来说,MQTTBroker3为第二MQTT代理节点,对于订阅者2 来说,MQTT Broker4为第二MQTT代理节点。
在本申请实施例中,基于gossip的分布式MQTT消息传递方法,所述方法应用于MQTT消息传递系统,所述MQTT消息传递系统包括至少一个发布客户端,至少一个订阅客户端,多个MQTT代理节点,所述方法可以包括:通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息;在同步完成后,若目标发布客户端通过第一MQTT代理节点发布第一主题MQTT消息,所述至少一个发布客户端包括所述目标发布客户端;通过所述第一MQTT代理节点向第二MQTT代理节点发送所述第一主题 MQTT消息,所述多个MQTT代理节点包括所述第一MQTT代理节点和所述第二MQTT代理节点;通过所述第二MQTT代理节点向目标订阅客户端传递所述第一主题MQTT消息,所述至少一个订阅客户端包括所述目标订阅客户端,所述第二MQTT代理节点为与所述目标订阅客户端直接连接的MQTT代理节点。用于将gossip算法,应用于分布式部署MQTT代理节点的消息同步,不仅可以解决分布式消息同步的难题,还可以提升消息同步效率。
本申请提出将gossip传播扩散方式,应用于分布式部署MQTT代理节点的消息同步,不仅可以解决分布式消息同步的难题,还可以提升消息同步效率,总结起来有以下优点:
高可用性:网络中允许MQTT代理节点(MQTT broker)的任意添加和减少,单节点机器宕机或故障不会影响消息传递;
高效性:由于gossip算法的节点只接受消息而无需回复消息,而且是病毒式的扩散,消息同步是指数级,效率很高;
去中心化:所有节点均视为对等,任何节点都无需知道整个网络状况,只要网络是联通的,消息可以以散播至全网;
安全性较高:客户端(发布者)隐藏代理服务器后,能够屏蔽掉部分网络攻击。
如图5所示,为本申请实施例中MQTT消息传递系统的一个示意图,可以包括:
至少一个发布客户端501,至少一个订阅客户端502,多个MQTT代理节点503;
所述多个MQTT代理节点503,用于通过gossip算法,同步所述多个 MQTT代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;
目标发布客户端5011,用于在同步完成后,若目标发布客户端5011通过第一MQTT代理节点5031发布第一主题MQTT消息,至少一个发布客户端 501包括目标发布客户端5011;
第一MQTT代理节点5031,用于向第二MQTT代理节点5032发送所述第一主题MQTT消息,多个MQTT代理节点503包括第一MQTT代理节点 5031和第二MQTT代理节点5032;
第二MQTT代理节点5032,用于通过第二MQTT代理节点5032向目标订阅客户端5021传递所述第一主题MQTT消息,至少一个订阅客户端502 包括目标订阅客户端5011,第二MQTT代理节点5032为与目标订阅客户端 5011直接连接的MQTT代理节点。
可选的,第一MQTT代理节点5031和第二MQTT代理节点5032,用于启动第一MQTT代理节点5031和第二MQTT代理节点5032;将第一MQTT 代理节点5031与第二MQTT代理节点5032建立连接;将第一MQTT代理节点5031的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向第二 MQTT代理节点5032同步,以及将第二MQTT代理节点5032的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向第一MQTT代理节点5031同步,使得第一MQTT代理节点5031和第二MQTT代理节点5032的拓扑图信息以及发布客户端与订阅客户端的关系信息一致。
可选的,第一MQTT代理节点5031和第二MQTT代理节点5032,用于若第一MQTT代理节点5031的拓扑图信息有更新,则将第一MQTT代理节点5031更新后的拓扑图信息向第二MQTT代理节点5032同步;和/或,
第一MQTT代理节点5031和第二MQTT代理节点5032,用于若第二 MQTT代理节点5032的拓扑图信息有更新,则将第二MQTT代理节点5032 更新后的拓扑图信息向第一MQTT代理节点5031同步。
可选的,所述每个MQTT代理节点的拓扑图信息包括:每个MQTT代理节点的拓扑信息,以及与所述每个MQTT代理节点连接的发布客户端的发布信息、订阅客户端的订阅信息中的至少一种。
可选的,目标发布客户端5011,具体用于根据所述第一主题MQTT消息,确定订阅所述第一主题消息的目标订阅客户端5021所连接的第二MQTT代理节点5032;通过第一MQTT代理节点5031向第二MQTT代理节点5032发送所述第一主题MQTT消息。
可选的,通过第一MQTT代理节点5031向第三MQTT代理节点5033发送所述第一主题MQTT消息;通过第三MQTT代理节点5033向第二MQTT 代理节点5032发送所述第一主题MQTT消息,第三MQTT代理节点5033的数量为至少一个。
可选的,至少一个发布客户端501通过所述多个MQTT代理节点与至少一个订阅客户端502连接。
如图6所示,为本申请实施例中电子设备的另一个实施例示意图,可以包括:
图6示出的是与本申请实施例提供的电子设备相关的手机的部分结构的框图。参考图6,手机包括:射频(Radio Frequency,RF)电路610、存储器 620、输入单元630、显示单元640、传感器650、音频电路660、无线保真(wireless fidelity,Wi-Fi)模块670、处理器680、以及电源690等部件。本领域技术人员可以理解,图6中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对手机的各个构成部件进行具体的介绍:
RF电路610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器680处理;另外,将设计上行的数据发送给基站。通常,RF电路610包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外, RF电路610还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进 (Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service, SMS)等。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元630可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元630可包括触控面板631以及其他输入设备632。触控面板631,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板631上或在触控面板631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板631可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680 发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板631。除了触控面板631,输入单元630还可以包括其他输入设备632。具体地,其他输入设备632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元640可包括显示面板641,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板641。进一步的,触控面板631可覆盖显示面板641,当触控面板631检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板641上提供相应的视觉输出。虽然在图6中,触控面板631与显示面板641是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板631与显示面板641集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板641的亮度,接近传感器可在手机移动到耳边时,关闭显示面板641和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器661,传声器662可提供用户与手机之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器661,由扬声器661转换为声音信号输出;另一方面,传声器662将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一手机,或者将音频数据输出至存储器620以便进一步处理。
Wi-Fi属于短距离无线传输技术,手机通过Wi-Fi模块670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了Wi-Fi模块670,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
处理器680是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器680可包括一个或多个处理单元;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
手机还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理系统与处理器680逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
图6所示的电子设备的结构示意图可以为本申请实施例中的发布客户端 501,订阅客户端502,或,MQTT代理节点503的结构示意图,具体不做限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等) 方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (9)
1.一种基于gossip的分布式MQTT消息传递方法,所述方法应用于MQTT消息传递系统,所述MQTT消息传递系统包括至少一个发布客户端,至少一个订阅客户端,多个MQTT代理节点,其特征在于,所述方法包括:
通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;
在同步完成后,若目标发布客户端通过第一MQTT代理节点发布第一主题MQTT消息,所述至少一个发布客户端包括所述目标发布客户端;
通过所述第一MQTT代理节点向第二MQTT代理节点发送所述第一主题MQTT消息,所述多个MQTT代理节点包括所述第一MQTT代理节点和所述第二MQTT代理节点;
通过所述第二MQTT代理节点向目标订阅客户端传递所述第一主题MQTT消息,所述至少一个订阅客户端包括所述目标订阅客户端,所述第二MQTT代理节点为与所述目标订阅客户端直接连接的MQTT代理节点;
其中,所述通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,包括:
启动所述第一MQTT代理节点和所述第二MQTT代理节点;
将所述第一MQTT代理节点与所述第二MQTT代理节点建立连接;
将所述第一MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向所述第二MQTT代理节点同步,以及将所述第二MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向所述第一MQTT代理节点同步,使得所述第一MQTT代理节点和所述第二MQTT代理节点的拓扑图信息以及发布客户端与订阅客户端的关系信息一致。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一MQTT代理节点的拓扑图信息有更新,则将所述第一MQTT代理节点更新后的拓扑图信息向所述第二MQTT代理节点同步;和/或,
若所述第二MQTT代理节点的拓扑图信息有更新,则将所述第二MQTT代理节点更新后的拓扑图信息向所述第一MQTT代理节点同步。
3.根据权利要求1-2中任一项所述的方法,其特征在于,所述每个MQTT代理节点的拓扑图信息包括:每个MQTT代理节点的拓扑信息,以及与所述每个MQTT代理节点连接的发布客户端的发布信息、订阅客户端的订阅信息中的至少一种。
4.根据权利要求1-2中任一项所述的方法,其特征在于,所述通过所述第一MQTT代理节点向第二MQTT代理节点发送所述第一主题MQTT消息,包括:
根据所述第一主题MQTT消息,确定订阅第一主题MQTT消息的目标订阅客户端所连接的第二MQTT代理节点;
通过所述第一MQTT代理节点向所述第二MQTT代理节点发送所述第一主题MQTT消息。
5.根据权利要求1-2中任一项所述的方法,其特征在于,所述通过所述第一MQTT代理节点向第二MQTT代理节点发送所述第一主题MQTT消息,包括:
通过所述第一MQTT代理节点向第三MQTT代理节点发送所述第一主题MQTT消息;
通过所述第三MQTT代理节点向所述第二MQTT代理节点发送所述第一主题MQTT消息,所述第三MQTT代理节点的数量为至少一个。
6.根据权利要求1所述的方法,其特征在于,所述至少一个发布客户端通过所述多个MQTT代理节点与所述至少一个订阅客户端连接。
7.一种MQTT消息传递系统,其特征在于,包括:
至少一个发布客户端,至少一个订阅客户端,多个MQTT代理节点;
所述多个MQTT代理节点,用于通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息;
目标发布客户端,用于在同步完成后,若目标发布客户端通过第一MQTT代理节点发布第一主题MQTT消息,所述至少一个发布客户端包括所述目标发布客户端;
所述第一MQTT代理节点,用于向第二MQTT代理节点发送所述第一主题MQTT消息,所述多个MQTT代理节点包括所述第一MQTT代理节点和所述第二MQTT代理节点;
所述第二MQTT代理节点,用于通过所述第二MQTT代理节点向目标订阅客户端传递所述第一主题MQTT消息,所述至少一个订阅客户端包括所述目标订阅客户端,所述第二MQTT代理节点为与所述目标订阅客户端直接连接的MQTT代理节点;
其中,所述通过gossip算法,同步所述多个MQTT代理节点中每个MQTT代理节点的拓扑图信息,包括:
启动所述第一MQTT代理节点和所述第二MQTT代理节点;
将所述第一MQTT代理节点与所述第二MQTT代理节点建立连接;
将所述第一MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向所述第二MQTT代理节点同步,以及将所述第二MQTT代理节点的拓扑图信息,以及发布客户端与订阅客户端的关系信息,向所述第一MQTT代理节点同步,使得所述第一MQTT代理节点和所述第二MQTT代理节点的拓扑图信息以及发布客户端与订阅客户端的关系信息一致。
8.一种终端设备,其特征在于,包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器用于对应执行如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,包括指令,当其在处理器上运行时,使得处理器执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210656795.6A CN115242805B (zh) | 2022-06-11 | 2022-06-11 | 基于gossip的分布式MQTT消息传递方法、传递系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210656795.6A CN115242805B (zh) | 2022-06-11 | 2022-06-11 | 基于gossip的分布式MQTT消息传递方法、传递系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115242805A CN115242805A (zh) | 2022-10-25 |
CN115242805B true CN115242805B (zh) | 2024-04-19 |
Family
ID=83669446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210656795.6A Active CN115242805B (zh) | 2022-06-11 | 2022-06-11 | 基于gossip的分布式MQTT消息传递方法、传递系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115242805B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116684939B (zh) * | 2023-08-02 | 2023-11-07 | 中国电信股份有限公司 | 消息处理方法、装置、计算机设备和计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594689A (zh) * | 2012-02-22 | 2012-07-18 | 中兴通讯股份有限公司 | 一种分布式网络控制方法及装置 |
CN108259570A (zh) * | 2017-12-25 | 2018-07-06 | 山东浪潮云服务信息科技有限公司 | 一种分布式消息的传送网络平台、方法和系统 |
WO2018210401A1 (en) * | 2017-05-15 | 2018-11-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Topic handling in mqtt networks |
CN111711663A (zh) * | 2020-05-26 | 2020-09-25 | 北京金山云网络技术有限公司 | 发布及订阅服务的处理方法、装置及电子设备 |
CN111865630A (zh) * | 2019-04-26 | 2020-10-30 | 北京达佳互联信息技术有限公司 | 拓扑信息获取方法、装置、终端及存储介质 |
CN112967071A (zh) * | 2021-03-04 | 2021-06-15 | 北京联合大学 | 一种基于区块链的城市水果质量溯源方法 |
CN113162970A (zh) * | 2021-01-27 | 2021-07-23 | 中央财经大学 | 基于发布/订阅模型的消息路由方法、装置、设备及介质 |
CN113872805A (zh) * | 2021-09-24 | 2021-12-31 | 希诺麦田技术(深圳)有限公司 | 网络拓扑信息可视化方法、装置及介质 |
CN114025002A (zh) * | 2021-11-05 | 2022-02-08 | 深圳市宏电技术股份有限公司 | 一种基于mqtt信息传输的方法、系统及通信设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533230B2 (en) * | 2009-06-24 | 2013-09-10 | International Business Machines Corporation | Expressing manageable resource topology graphs as dynamic stateful resources |
US10645181B2 (en) * | 2016-12-12 | 2020-05-05 | Sap Se | Meta broker for publish-subscribe-based messaging |
-
2022
- 2022-06-11 CN CN202210656795.6A patent/CN115242805B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594689A (zh) * | 2012-02-22 | 2012-07-18 | 中兴通讯股份有限公司 | 一种分布式网络控制方法及装置 |
WO2018210401A1 (en) * | 2017-05-15 | 2018-11-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Topic handling in mqtt networks |
CN108259570A (zh) * | 2017-12-25 | 2018-07-06 | 山东浪潮云服务信息科技有限公司 | 一种分布式消息的传送网络平台、方法和系统 |
CN111865630A (zh) * | 2019-04-26 | 2020-10-30 | 北京达佳互联信息技术有限公司 | 拓扑信息获取方法、装置、终端及存储介质 |
CN111711663A (zh) * | 2020-05-26 | 2020-09-25 | 北京金山云网络技术有限公司 | 发布及订阅服务的处理方法、装置及电子设备 |
CN113162970A (zh) * | 2021-01-27 | 2021-07-23 | 中央财经大学 | 基于发布/订阅模型的消息路由方法、装置、设备及介质 |
CN112967071A (zh) * | 2021-03-04 | 2021-06-15 | 北京联合大学 | 一种基于区块链的城市水果质量溯源方法 |
CN113872805A (zh) * | 2021-09-24 | 2021-12-31 | 希诺麦田技术(深圳)有限公司 | 网络拓扑信息可视化方法、装置及介质 |
CN114025002A (zh) * | 2021-11-05 | 2022-02-08 | 深圳市宏电技术股份有限公司 | 一种基于mqtt信息传输的方法、系统及通信设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115242805A (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102578623B1 (ko) | 통신 접속 방법 및 장치, 컴퓨터 디바이스, 및 저장 매체 | |
CN113518085B (zh) | 一种基于多通道的数据传输方法以及相关装置 | |
JP6511541B2 (ja) | メッセージ更新方法、装置、および端末 | |
CN105847168B (zh) | 一种数据传输的方法、网络服务器、用户终端及系统 | |
JP6557741B2 (ja) | ピクチャ結合方法、端末、及びピクチャ結合システム | |
CN107204989B (zh) | 广告拦截方法、终端、服务器和存储介质 | |
JP2019508084A (ja) | ゲーム内の役割の移動制御方法、サーバ及びクライアント | |
CN107800585B (zh) | 网络通信的方法和装置、推送消息的方法和装置 | |
KR20070116619A (ko) | 모바일 장치와 게임 서비스 간의 통신을 가능케 하는프록시 | |
CN111064713B (zh) | 一种分布式系统中的节点控制方法和相关装置 | |
CN106293738B (zh) | 一种表情图像的更新方法及装置 | |
CN112087362B (zh) | 一种客户端之间的消息转发方法和装置以及终端 | |
CN111444237A (zh) | 服务器系统、数据传输方法及电子设备 | |
CN115242805B (zh) | 基于gossip的分布式MQTT消息传递方法、传递系统及存储介质 | |
CN111787088B (zh) | 小程序数据处理的方法和装置 | |
CN113259697B (zh) | 一种直播状态的通知方法、相关装置、设备及存储介质 | |
CN107104760B (zh) | 一种传输数据包的方法、客户端以及服务器 | |
CN108270839B (zh) | 访问频率控制系统及方法 | |
WO2018149365A1 (zh) | 一种数据获取方法、移动终端及服务器 | |
CN110417861B (zh) | 一种信息推送方法以及相关装置 | |
CN105681370A (zh) | 文件同步方法、服务器及客户端 | |
CN111132073B (zh) | 多播通信链路层标识符更新方法、装置及终端设备 | |
CN106209601B (zh) | 状态更新消息的推送方法及装置 | |
KR102596801B1 (ko) | Pc5 링크 확립 방법, 장비 및 시스템 | |
CN113873048B (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 |