一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

消息路由方法、装置及计算机可读存储介质与流程

2022-12-23 20:31:55 来源:中国专利 TAG:


1.本技术涉及数据通信技术领域,具体涉及一种基于mqtt高并发场景下的消息路由方法、装置及计算机可读存储介质。


背景技术:

2.mqtt(message queuing transport,消息队列遥测传输)是由ibm公司开发的轻量级的即时通信协议。与http协议不同的是,mqtt采用的发布/订阅的模式,而不是传统的请求/响应模式,这种更为轻量级的模式使得mqtt更加适用于低功耗和网络带宽有限的物联网设备。同时,mqtt还具有精简、支持连续的回话控制、提供传输的不同服务器质量、可定制性强等特点,在物联网正当火热的今天,其价值得以充分体现。mqtt作为物联网的重要传输协议,支持几乎所有的平台。
3.发布和订阅模式中,发布者向mqtt服务器发送一条带有特定主题的消息,消费者通过向服务器订阅这一主题,从而接收服务器转发来的消息。
4.然而,在实际作业的过程中,消费者的数量扩展到百万级别时,mqtt服务器在应对高并发的请求时,无法将消费者所订阅的主题实时、稳定地传输给消费者,使得mqtt服务器的负载失衡,影响数据的传输。


技术实现要素:

5.鉴于以上内容,有必要提出一种基于mqtt高并发场景下的消息路由方法、装置及计算机可读存储介质,以解决上述问题。
6.本技术的第一方面提供一种基于mqtt高并发场景下的消息路由方法,所述方法包括:
7.建立一服务器集群,所述服务器集群包括多个mqtt服务器;
8.对订阅一个相同主题的多个消费者进行分组以形成多个第一组;
9.对每个所述第一组配置不同的第一字符以形成具有一虚拟主题的第二组,所述虚拟主题为所述第一字符与所述主题所形成;
10.依据负载均衡程度建立所述服务器集群与所述第二组之间的消息分发方式;
11.依据所述消息分发方式将一消息发送至所述第二组中的所述消费者,所述消息包括所述主题。
12.在一些实施例中,所述第一组和所述第二组均包括至少一所述消费者。
13.在一些实施例中,所述依据负载均衡程度建立所述服务器集群与所述第二组之间的消息分发方式的步骤,包括:
14.建立所述第二组中的所述消费者与任一所述mqtt服务器之间的通信连接以形成第一连接信息,所述第一连接信息包括所述第二组中所述消费者的地址以及任一所述mqtt服务器的地址;
15.分配所述主题至所述第二组以形成主题信息;
16.关联所述主题信息与所述第一连接信息以形成第二连接信息;
17.所述依据所述消息分发方式将一消息发送至所述第二组中的所述消费者的步骤,包括:
18.接收一发布者发送的所述消息;
19.依据所述第二连接信息将所述消息发送至所述第二组中的所述消费者。
20.在一些实施例中,所述依据负载均衡程度建立所述服务器集群与所述第二组之间的消息分发方式的步骤,包括:
21.配置所述第二组的一比例条件式;
22.依据所述比例条件式确认与所述第二组建立通信连接的所述mqtt服务器的数量;
23.保存所述mqtt服务器的数量以形成mqtt服务器组;
24.所述依据所述消息分发方式将一消息发送至所述第二组中的所述消费者的步骤,包括:
25.接收一发布者发送的所述消息;
26.依据所述mqtt服务器组将所述消息发送至所述第二组中的所述消费者。
27.在一些实施例中,所述依据负载均衡程度建立所述服务器集群与所述第二组之间的消息分发方式的步骤,包括:
28.配置所述第二组或所述第二组中任一所述消费者的一消息负载比例;
29.接收所述第二组或所述第二组中任一所述消费者的消息确认指令;
30.依据所述消息确认指令形成一累计比例;
31.所述依据所述消息分发方式将一消息发送至所述第二组中的所述消费者的步骤,包括:
32.接收一发布者发送的所述消息;
33.判断所述累计比例与所述消息负载比例的差值是否符合预设值;
34.若为是,将所述消息发送至所述第二组中的所述消费者。
35.在一些实施例中,所述依据所述消息分发方式将一消息发送至所述第二组中的所述消费者的步骤,还包括:
36.若为否,保存所述消息于所述服务器集群。
37.在一些实施例中,所述依据负载均衡程度建立所述服务器集群与所述第二组之间的消息分发方式的步骤,包括:
38.配置一第二字符于所述消息以形成字符消息;
39.依据所述字符消息匹配一所述mqtt服务器以形成匹配规则;
40.所述依据所述消息分发方式将一消息发送至所述第二组中的所述消费者的步骤,包括:
41.接收一发布者发送的所述消息;
42.依据所述匹配规则发送所述消息至所述第二组中的所述消费者。
43.在一些实施例中,所述第二字符包括通配符。
44.本技术的第二方面提供一种基于mqtt高并发场景下的消息路由装置,所述装置包括:
45.建立模块,用于建立一服务器集群,所述服务器集群包括多个mqtt服务器;
46.分组模块,用于对订阅相同一主题的多个消费者进行分组以形成多个第一组;
47.形成模块,用于对每个所述第一组配置不同的第一字符以形成具有一虚拟主题的第二组,所述虚拟主题为所述第一字符与所述主题所形成;
48.所述建立模块,还用于依据负载均衡程度建立所述服务器集群与所述第二组之间的消息分发方式;
49.发送模块,用于依据所述消息分发方式将一消息发送至所述第二组中的所述消费者,所述消息包括所述主题。
50.本技术的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的消息路由方法。
51.上述消息路由方法、装置及计算机可读存储介质,通过建立服务器集群,对订阅相同一主题的多个消费者进行分组以形成多个第一组,对每个第一组配置不同的第一字符以形成具有一虚拟主题的第二组,依据负载均衡程度建立服务器集群与第二组之间的消息分发方式,依据消息分发方式将消息发送至第二组中的消费者,能够实现mqtt服务器的负载均衡程度,服务器集群能够应对高并发的请求,无需改变mqtt服务器的接入点;当应对高并发的请求时,还能够在第一组或第二组中新增多个消费者,提升服务器集群中mqtt服务器的负载均衡程度,提高消息路由的能力。通过建立服务器集群实现性能水平扩展,单个mqtt服务器宕机对消费者没有影响。
附图说明
52.图1是本技术一实施例提供的消息路由方法的流程示意图。
53.图2是图1中步骤s16和步骤s18的一实施方式的流程示意图。
54.图3是图1中步骤s16和步骤s18的又一实施方式的流程示意图。
55.图4是图1中步骤s16和步骤s18的又一实施方式的流程示意图。
56.图5是图1中步骤s16和步骤s18的又一实施方式的流程示意图。
57.图6是本技术一实施例提供的消息路由装置的功能模块图。
58.图7是本技术一实施例提供的电子装置的硬件架构示意图。
59.主要元件符号说明
60.消息路由装置
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
100
61.建立模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
102
62.分组模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
104
63.形成模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
106
64.发送模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
108
65.分配模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
110
66.关联模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
112
67.接收模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
114
68.配置模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
116
69.确认模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
118
70.保存模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
120
71.判断模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
122
72.匹配模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
124
73.电子装置
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
200
74.存储器
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
202
75.处理器
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
204
76.通讯总线
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
206
77.计算机程序
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
208
具体实施方式
78.为了能够更清楚地理解本技术的目的、特征和优点,下面结合附图和具体实施例对本技术进行详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互结合。在下面的描述中阐述了很多具体细节以便于充分理解本技术,所述描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。
79.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
80.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。本文所使用的的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
81.请参见图1,图1为本技术一个实施例提供的基于mqtt高并发场景下的消息路由方法。根据不同的需求,流程图中步骤的顺序可以改变,某些步骤可以省略。为了便于说明,仅示出了与本技术实施例相关的部分。
82.本技术实施例的基于mqtt高并发场景下的消息路由方法应用于物联网设备之间的消息传输,物联网设备之间通过mqtt服务器进行数据的传输,上述的物联网设备可以为发布者、消费者或其他可应用于物联网的设备。对于需要进行消息路由的物联网设备,可以直接在mqtt服务器、物联网设备中的发布者、物联网设备中的消费者的一者或多者上集成本技术的消息路由方法所提供的消息路由功能,或者安装用于实现本技术的消息路由方法的客户端。再如,本技术所提供的消息路由方法还可以以软件开发工具包(sdk,software development kit)的形式运行在mqtt服务器、物联网设备中的发布者、物联网设备中的消费者的一者或多者上,以sdk的形式提供消息路由功能的接口,处理器或其他设备通过提供的接口即可实现基于mqtt高并发场景下的消息路由功能。
83.本实施例中,基于mqtt高并发场景下的消息路由方法包括以下步骤。
84.步骤s10:建立一服务器集群,服务器集群包括多个mqtt服务器。
85.本实施例中,多个mqtt服务器组成服务器集群,多个mqtt服务器之间相互链接。可以理解地,服务器集群中还可以包括一个主服务器,主服务器用于将接收的消息发送给多个mqtt服务器中的任一个,之后再由被选择的mqtt服务器将消息进行进一步的传输。主服务器可以为独立于服务器集群中mqtt服务器的其他服务器,也可以为服务器集群中的任一一个mqtt服务器。可以理解地,主服务器也可以省略。
86.步骤s12:对订阅一个相同主题的多个消费者进行分组以形成多个第一组。
87.本实施例中,消费者也可以理解为订阅者或客户端,消费者通过订阅模式向服务器集群订阅消息,服务器集群接收到带有该主题的消息后将该消息发送给消费者。消费者可以为物联网设备中的手机、电脑等能够订阅和接收消息的设备,还可以为互联网设备。
88.在一实施方式中,例如,多个消费者均订阅了主题“my/topic”,对订阅了主题为“my/topic”的所有消费者进行分组,分组可以平均分配也可以不平均分配。分组之后形成多个第一组,第一组中消费者的数量可以相等也可以不相等。例如,将十万个订阅主题为“my/topic”的消费者分为十组,平均分配则每组有一万个消费者;不平均分配,则每组的数量不等,有的组可以为一个,也可以为更多个,本技术对此不作限定。
89.需要说明的是,上述的多个消费者并不是指所有的消费者。另外,在消息传输的过程中,消费者的数量可能增加,也可能减小;而且,订阅了主题为“my/topic”的消费者的数量也可能增加,也可能减小,本技术对此不作限定。
90.步骤s14:对每个第一组配置不同的第一字符以形成具有一虚拟主题的第二组,虚拟主题为第一字符与主题所形成。
91.本实施例中,对订阅相同主题的消费者进行分组之后形成多个第一组,每个第一组的初始名称均相同,例如为“group/my/topic”,对每个第一组配置不同的第一字符以使第一组的初始名称得以改变,例如第一字符为“group*”,其中,“*”可以表示不同的数字,例如为1、2、3、4、5,则第一组的名称变为“group/group1/my/topic”、“group/group2/my/topic”、“group/group3/my/topic”、“group/group4/my/topic”、“group/group5/my/topic”,第一组形成为具有虚拟主题“group/group*/my/topic”的第二组,虚拟主题并不是消费者所订阅的主题,虚拟主题是每个第二组所对应的名称,可以理解为第二组为一个总的消费者,第二组所订阅的为虚拟主题,服务器集群按照虚拟主题将消息发送至第二组。如此,通过虚拟主题,将原本众多的消费者最终分为多个第二组,每个第二组对应一个虚拟主题,服务器集群发送消息时可以利用队列技术将消息发送给每个第二组,使得服务器集群同时支持发布/订阅与队列功能,解决传统mqtt协议中仅具有发布/订阅的功能。
92.可以理解地,第一字符“group*”还可以配置在“group”的前面,例如虚拟主题可以为“group*/group/my/topic”。虚拟主题还可以为“$group/group*/my/topic”。
93.本实施例中,第一组形成为第二组之后,第一组中的消费者的数量不变,第一组和第二组均包括至少一消费者。
94.在一实施方式中,当第一组和第二组中的消费者的数量为一个时,也可以不对该组进行命名,即该组可以没有虚拟主题。
95.步骤s16:依据负载均衡程度建立服务器集群与第二组之间的消息分发方式。
96.本实施例中,服务器集群利用负载均衡程度策略与第二组之间形成消息分发方式。服务器集群依据负载均衡程度策略选择负载小的mqtt服务器,被选择的mqtt服务器与一个或多个第二组之间形成消息分发方式,从而将消息发送给第二组。
97.在一实施方式中,服务器依据负载均衡程度选择一个mqtt服务器的过程可以为:服务器集群对每个mqtt服务器进行编号,例如编号为0、1、2、3、4、5

;计算消息或订阅请求中的标识码和时间戳所组成的字符串的哈希码(hashcode)值;对哈希码值进行哈希取模,并将所取模所得到的值映射到mqtt服务器的编号上;判断mqtt服务器的编号与取模所得到
的值是否相等,若相等,则编号相等的mqtt服务器负责处理该消息或该订阅请求。
98.步骤s18:依据消息分发方式将一消息发送至第二组中的消费者,消息包括主题。
99.本实施例中,消息中的数据包括主题“my/topic”,被选择的mqtt服务器依据消息分发方式将服务器集群接收到的消息发送至订阅该主题的多个第二组中,并可以依据队列技术将该主题依次对应发送至不同的第二组,并进一步发送该第二组中的消费者,从而应对消息或订阅请求的高并发请求,无需改变mqtt服务器的接入点。当消费者的数量增加或减少,或者,第一组或第二组中的消费者的数量增加减少时,仍然可以按照消息分发方式依次将消息发送至第二组中,每个第二组中所增加或减少的消费者并不能够增加与该组连接的mqtt服务器的负载,或极少增加与该组连接的mqtt服务器的负载,从而能够提升服务器集群中mqtt服务器的负载均衡程度,提高消息路由的能力。
100.请参见图2,在一实施方式中,步骤s16和步骤s18具体可以包括如下步骤。
101.步骤s1602:建立第二组中的消费者与任一mqtt服务器之间的通信连接以形成第一连接信息,第一连接信息包括第二组中消费者的地址以及任一mqtt服务器的地址。
102.本实施方式中,每个消费者和每个mqtt服务器均有一固定的地址(ip),通过该固定的地址,使得每个第二组中的消费者与任一mqtt服务器建立通信连接之后,均能够通过该固定地址记录二者之间的连接关系,即形成第一连接信息。
103.步骤s1604:分配主题至第二组以形成主题信息。
104.本实施方式中,形成第一连接信息后,分配主题至订阅该主题的第二组中的消费者以形成主题信息。可以理解为,主题信息用于进一步确认mqtt服务器与第二组中消费者之间的连接关系。
105.步骤s1606:关联主题信息与第一连接信息以形成第二连接信息。
106.本实施方式中,将主题信息与第一连接信息进行关联、绑定以形成第二连接信息,即第二连接信息包括主题信息和第一连接信息。
107.步骤s1802:接收一发布者发送的消息。
108.本实施方式中,服务器集群接收发布者发送的携带主题“my/topic”的消息,并依据负载均衡程度选择一mqtt服务器。
109.步骤s1804:依据第二连接信息将消息发送至第二组中的消费者。
110.本实施方式中,被选择的mqtt服务器将携带该主题的消息发送至订阅该主题的第二组中的消费者。可以理解为,在已有的消费者中,通过建立第二组中的消费者与任一mqtt服务器之间的通信连接并记录该通信连接信息,并发送主题进行验证。在下一次需要发送具有该主题的消息时,可以通过第一连接信息中的固定地址和已经被验证过的主题将该消息发送给订阅该主题的第二组中的消费者。
111.请参见图3,在一实施方式中,步骤s16和步骤s18具体可以包括如下步骤。
112.步骤s1612:配置第二组的一比例条件式。
113.本实施方式中,对每个第二组配置一比例条件式,以使每个第二组可以对应若干个mqtt服务器。比例条件式依据第二组的数量而定。例如,第二组的数量为五个,则比例条件式可以为1:1:1:1:1。
114.可以理解地,在其他的实施方式中,第二组的数量为五个,比例条件式可以为1:2:3:2:2。
115.步骤s1614:依据比例条件式确认与第二组建立通信连接的mqtt服务器的数量。
116.本实施方式中,依据比例条件式确认与第二组建立通信连接的mqtt服务器的数量。例如,比例条件式为1:1:1:1:1,第二组的虚拟主题分别为“group/group1/my/topic”、“group/group2/my/topic”、“group/group3/my/topic”、“group/group4/my/topic”、“group/group5/my/topic”,mqtt服务器的数量为十个,则每个第二组对应的mqtt服务器的数量为两个,即,每两个mqtt服务器用于对一个固定的第二组发送消息。例如,其中两个mqtt服务器对虚拟主题为“group/group1/my/topic”的第二组发送消息,其余的mqtt服务器则不对该第二组发送消息。
117.步骤s1616:保存mqtt服务器的数量以形成mqtt服务器组。
118.本实施方式中,保存与一个第二组对应的mqtt服务器数量。mqtt服务器组的数量可以为整数,也可以为非整数。当mqtt服务器的数量为非整数时,可以理解为其中一个mqtt服务器可以给两个第二组依次发送消息。
119.步骤s1812:接收一发布者发送的消息。
120.本实施方式中,服务器集群接收发布者发送的携带主题的信息,并依据负载均衡程度选择与订阅该主题相对应的mqtt服务器组。
121.步骤s1814:依据mqtt服务器组将消息发送至第二组中的消费者。
122.本实施方式中,被选择的mqtt服务器组将消息依次发送至对应的第二组中的消费者。
123.请参见图4,在一实施方式中,步骤s16和步骤s18具体可以包括如下步骤。
124.步骤s1622:配置第二组或第二组中任一消费者的一消息负载比例。
125.本实施方式中,mqtt服务器将消息发送至第二组或第二组中的消费者后,均需要经过用户处理或查看之后,服务器集群才能够收到该消息被处理或被查看的回执。消息负载可以理解为该消息被处理或被查看。消息负载比例可以理解为发送至第二组中的所有消息被处理或被查看的数量与总的被发送至第二组中的数量的比值,也可以理解为发送至消费者的所有消息被处理或被查看的数量与总的被发送至该消费者的数量的比值。
126.在一实施方式中,消息负载比例大于等于0.6。可以理解地,消息负载比例可以为0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95。例如,消息负载比例为0.8。
127.可以理解地,在其他的实时方式中,消息负载比例也可以大于等于0.1。
128.步骤s1624:接收第二组或第二组中任一消费者的消息确认指令。
129.本实施方式中,服务器集群接收第二组或第二组中任一消费者的消息确认指令。消息确认指令即消息被处理或被查看后的回执。
130.步骤s1626:依据消息确认指令形成一累计比例。
131.本实施方式中,依据消息确认指令的数量与服务器集群发送至第二组或第二组中任一消费者的消息的数量的比值,形成一累计比例。例如,服务器集群中的一个mqtt服务器向第二组中的一个消费者发送了十条携带主题的消息,该mqtt服务器接收到五条消息确认指令,累计比例则为0.5。
132.步骤s1822:接收一发布者发送的消息。
133.本实施方式中,服务器集群接收发布者发送的携带主题的信息,并依据负载均衡程度选择一mqtt服务器。
134.步骤s1824:判断累计比例与消息负载比例的差值是否符合预设值。
135.本实施方式中,被选择的mqtt服务器还用于判断累计比例与消息负载比例的差值是否符合预设值。例如,消息负载比例为0.8,预设值为0-0.2。
136.步骤s1826:若为是,将消息发送至第二组中的消费者。
137.在一实施方式中,累计比例为0.9,则累计比例与消息负载比例的差值为0.1,符合预设值,则被选择的mqtt服务器将接收到的新的携带主题的消息继续发送至第二组或第二组中的任一消费者。
138.步骤s1828:若为否,保存消息于服务器集群。
139.在一实施方式中,累计比例为0.7,则累计比例与消息负载比例的差值为-0.1,不符合预设值,则被选择的mqtt服务器不再将接收到的新的携带主题的消息继续发送至第二组或第二组中的任一消费者,该mqtt服务器将该消息进行保存。所保存的位置可以为该mqtt服务器,也可以为服务器集群中的其他mqtt服务器。
140.请参见图5,在一实施方式中,步骤s16和步骤s18具体可以包括如下步骤。
141.步骤s1632:配置一第二字符于消息以形成字符消息。
142.本实施方式中,服务器集群将接收到的消息配置一第二字符以形成新的字符消息。第二字符可以为通配符“#”,通配符“#”可以为单级,也可以为多级。如此,通过通配符,使得具有该通配符的主题能够被更多的消费者进行订阅。
143.需要说明的是,发布者发布的携带不同主题的消息所配置的第二字符均是不相同的。如此,才能够对该消息进行区分。
144.步骤s1634:依据字符消息匹配一mqtt服务器以形成匹配规则。
145.本实施方式中,依据字符消息对一mqtt服务器进行匹配,使得mqtt服务器能够识别、匹配具有第二字符的消息。由于发布者发布的携带不同主题的消息所配置的第二字符均是不相同的,对应的mqtt服务器能够识别不同的具有第二字符的消息。如此,不同的mqtt服务器可以对应不同的消息,有利于实现服务器集群的负载均衡程度。
146.步骤s1832:接收一发布者发送的消息。
147.本实施方式中,服务器集群接收发布者发送的携带主题的消息,服务器集群对该消息随机或按照固定顺序对该消息配置第二字符,以使该消息形成字符消息。
148.步骤s1834:依据匹配规则发送消息至第二组中的消费者。
149.本实施方式中,服务器集群中的所有mqtt服务器依据第二字符所形成的匹配规则对该携带第二字符的字符消息进行匹配,与第二字符相对应的mqtt服务器将该消息发送至订阅该主题的第二组中的消费者。如此,通过不同的mqtt服务器对分别对不同的消息进行发送,有利于实现服务器集群的负载均衡程度,能够应对消费者的高并发订阅请求。
150.图1至图5详细介绍了本技术的基于mqtt高并发场景下的消息路由方法。本技术的基于mqtt高并发场景下的消息路由方法,通过建立服务器集群,对订阅相同一主题的多个消费者进行分组以形成多个第一组,对每个第一组配置不同的第一字符以形成具有一虚拟主题的第二组,依据负载均衡程度建立服务器集群与第二组之间的消息分发方式,依据消息分发方式将信息发送至第二组中的消费者,上述的消息路由方法能够实现mqtt服务器的负载均衡程度,服务器集群能够应对高并发的请求,无需改变mqtt服务器的接入点;当应对物联网设备的高并发请求时,还能够在第一组或第二组中新增多个消费者,提升服务器集
群中mqtt服务器的负载均衡程度,提高消息路由的能力。通过建立服务器集群实现mqtt服务器的性能水平扩展,单个mqtt服务器宕机对消息传输给消费者没有影响。通过对订阅相同一主题的多个消费者进行分组以及形成虚拟主题,使得服务器集群同时支持发布/订阅与队列的功能,并能够按照实际场景切换使用,解决传统mqtt协议中仅具有发布/订阅的功能的问题。下面结合图6和图7,对实现基于mqtt高并发场景下的消息路由功能的消息路由装置100的功能模块、电子装置200的硬件架构进行介绍。应上述内容可见,本技术实施例仅为说明之用,在本技术范围内并不受此结构的限制。
151.请参见图6,图6为本技术一个实施例提供的基于mqtt高并发场景下的消息路由装置100的功能模块图。消息路由装置100应用于物联网设备之间的消息传输。
152.在一些实施例中,消息路由装置100可以包括多个由程序代码所组成的功能模块。消息路由装置100中的各个程序代码可以存储于一个或多个存储器中,例如可以存储于一个或多个存储器中,例如可以存储于mqtt服务器、物联网设备中的发布者、物联网设备中的消费者的一者或多者的存储器中,并由相应的至少一个处理器所执行,以实现基于mqtt高并发场景下的消息路由功能。
153.请参见图6,本实施例中,消息路由装置100根据其所执行的功能,可以被划分为多个功能模块,各个功能模块用于执行图1至图5对应实施方式中的各个步骤,以实现物联网设备之间的消息路由功能。本实施例中,消息路由装置100的功能模块包括建立模块102、分组模块104、形成模块106和发送模块108。
154.建立模块102,用于建立一服务器集群,服务器集群包括多个mqtt服务器。
155.分组模块104,用于对订阅相同一主题的多个消费者进行分组以形成多个第一组。
156.形成模块106,用于对每个第一组配置不同的第一字符以形成具有一虚拟主题的第二组,虚拟主题为第一字符与主题所形成。
157.建立模块102,还用于依据负载均衡程度建立服务器集群与第二组之间的消息分发方式。
158.发送模块108,用于依据消息分发方式将一消息发送至第二组中的消费者,消息包括主题。
159.在一实施方式中,消息路由装置100的功能模块还包括分配模块110、关联模块112和接收模块114。分配模块110、关联模块112和接收模块114用于进一步实现消息路由功能。
160.建立模块102,还用于建立第二组中的消费者与任一mqtt服务器之间的通信连接以形成第一连接信息,第一连接信息包括第二组中消费者的地址以及任一mqtt服务器的地址。
161.分配模块110,用于分配主题至第二组以形成主题信息。
162.关联模块112,用于关联主题信息与第一连接信息以形成第二连接信息。
163.接收模块114,用于接收一发布者发送的消息。
164.发送模块108,还用于依据第二连接信息将消息发送至第二组中的消费者。
165.在一实施方式中,消息路由装置100的功能模块还包括配置模块116、确认模块118和保存模块120。配置模块116、确认模块118和保存模块120用于进一步实现消息路由功能。
166.配置模块116,用于配置第二组的一比例条件式。
167.确认模块118,用于依据比例条件式确认与第二组建立通信连接的mqtt服务器的
programmable gate array)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者处理器204也可以是任何常规的处理器等,处理器204是上述电子装置200的控制中心,利用各种接口和线路连接整个电子装置200的各个部分。
190.上述存储器202可用于存储计算机程序208和/或模块/单元,处理器204通过运行或执行存储在存储器202内的计算机程序208和/或模块/单元,以及调用存储在存储器202内的数据,实现电子装置200的各种功能。存储器202可以包括外部存储介质,也可以包括内存。此外,存储器202可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smc,smart media card),安全数字(sd,secure digital)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
191.上述电子装置200集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序208来指令相关的硬件来完成,上述的计算机程序208可存储于一计算机可读存储介质中,计算机程序208在被处理器204执行时,可实现上述各个方法实施例的步骤。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
192.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其他的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本技术内。
193.最后应说明的是,以上实施例仅用以说明本技术的技术方案而非限制,尽管参照较佳实施例对本技术进行了详细说明,本领域的普通技术人员应当理解,可以对本技术的技术方案进行修改或等同替换,而不脱离本技术技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献