CN113452800B - 基于MQTT协议多Broker实现负载均衡的方法 - Google Patents

基于MQTT协议多Broker实现负载均衡的方法 Download PDF

Info

Publication number
CN113452800B
CN113452800B CN202111008831.XA CN202111008831A CN113452800B CN 113452800 B CN113452800 B CN 113452800B CN 202111008831 A CN202111008831 A CN 202111008831A CN 113452800 B CN113452800 B CN 113452800B
Authority
CN
China
Prior art keywords
broker
broker server
request
service
information
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
Application number
CN202111008831.XA
Other languages
English (en)
Other versions
CN113452800A (zh
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 Xinrun Fulian Digital Technology Co Ltd
Original Assignee
Shenzhen Xinrun Fulian Digital Technology Co Ltd
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 Xinrun Fulian Digital Technology Co Ltd filed Critical Shenzhen Xinrun Fulian Digital Technology Co Ltd
Priority to CN202111008831.XA priority Critical patent/CN113452800B/zh
Publication of CN113452800A publication Critical patent/CN113452800A/zh
Application granted granted Critical
Publication of CN113452800B publication Critical patent/CN113452800B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开一种基于MQTT协议多Broker实现负载均衡的方法,包括步骤:设备获取网关服务的信息并发请求到网关服务;通过网关服务将请求转发到业务服务;业务服务获取所有Broker的信息列表并组装为key,且判定网关服务转发来的参数值;业务服务获取各Broker对应的设备连接数;业务服务根据负载均衡算法获取Broker的信息;将Broker的信息返回给设备;设备向Broker发送connect请求;将Broker的信息组装成key;redis进行一次自增操作;Broker组装数据包信息并返回给设备并与该设备保持心跳。本发明不用升级设备即可动态切换设备所连接的Broker,设备连接数可控。

Description

基于MQTT协议多Broker实现负载均衡的方法
技术领域
本发明涉及通讯技术领域,尤其涉及一种基于MQTT协议多Broker实现负载均衡的方法。
背景技术
MQTT协议用于智能设备中,使得设备与Broker服务器建立连接之后能够保持长连接(即心跳检测机制)。目前大部分处理方案是给设备生成证书信息(也可称为证书文件,其包含了Broker服务器的域名或者IP地址),并将证书信息烧录至设备中,此时,会将Broker服务器的地址烧录至设备中,通过烧录的域名或IP,设备获取到Broker服务器的地址,从而设备通过MQTT协议与Broker服务器建立connect连接。这种处理方案存在以下问题:第一,一般证书的烧录都是使用的同一个域名或者IP,这将会导致后续的大量设备都会连接到同一个Broker服务器中,可能存在宕机的问题;第二,就算是使用不同的域名或者IP,也将会导致某一设备连接到固定的Broker服务器中,若是此台Broker服务器被宕机了,将会导致设备无法连接Broker服务器,需要设备升级连接新的Broker地址,一方面对设备的连接带来影响,设备需要执行升级等一大堆操作,不能及时恢复设备到正常状态,另一方面,由于和设备烧录的域名或者IP以及设备数量有关,Broker连接数受设备证书和设备数量的影响,可能会导致某一台Broker服务器连接数不可控,从而不好控制Broker服务器连接的设备数量。因此,针对以上技术设计缺陷,有必要提供一种基于MQTT协议多Broker实现负载均衡的方法,用以解决设备数量的扩展不影响Broker服务器连接数出现峰值的情况,保证了设备证书烧录不限定设备连接固定的某一台Broker服务器,从而解决某一台Broker服务宕机导致设备不能连接的问题。
发明内容
本发明的目的是克服现有技术的不足,提供一种基于MQTT协议多Broker实现负载均衡的方法。
本发明的技术方案如下:
一种基于MQTT协议多Broker实现负载均衡的方法,包括如下步骤:
S1,设备通过读取设备自身的证书信息获取gateway网关服务的配置信息,并根据获取的配置信息向所述gateway网关服务发起携带有设备上次连接的Broker服务器的配置信息的请求;
S2,所述gateway网关服务接收到设备发送来的请求后,通过网关服务配置的路由规则将该请求转发到业务服务;
S3,所述业务服务接收到所述gateway网关服务转发来的请求后,读取配置文件获取所有的Broker服务器的配置信息列表,将每台Broker服务器的配置信息列表组装为redis的key,且该业务服务根据所述gateway网关服务转发来的请求中的参数值进行判定:
a、如果所述gateway网关服务转发来的请求中的参数值为空,则继续执行步骤S4;
b、如果所述gateway网关服务转发来的请求中的参数值不为空,将该业务服务接收到所述gateway网关服务转发来的请求参数组装为redis的key,并通过redis将该由请求参数组装为redis的key的value值进行一次自减操作;
S4,所述业务服务根据步骤S3中各台Broker服务器的配置信息列表组装成的key从redis中获取各台Broker服务器对应的设备连接数;
S5,所述业务服务从redis中获取到每台Broker服务器的设备连接数后,根据配置中设置的负载均衡算法获取Broker服务器的详细信息;
S6、将步骤S5获取到的Broker服务器的详细信息通过网络返回给发送请求的设备;
S7,设备获取到Broker服务器的详细信息后,创建MQTT客户端,并使用获取到的Broker服务器的详细信息创建并执行connect连接消息,向获取到的Broker服务器的详细信息所在的Broker服务器发送connect请求;
S8,Broker服务器接收到设备的connect请求后,该Broker服务器从配置文件中获取到自身的配置信息,并将获取到的配置信息组装成redis的key;
S9,redis根据当前的key将value值进行一次自增操作;
S10,步骤S9完成后,Broker服务器组装请求需要返回的数据包信息;
S11,Broker服务器返回数据包信息给设备,反馈设备连接成功,设备本地保存Broker服务器的配置信息,后续该设备与当前Broker服务器保持心跳。
进一步地,所述步骤S1的具体实现方式为:设备通过读取文件流的方式从设备自身的证书信息中获取所述gateway网关服务的配置信息,并根据获取的gateway网关服务的配置信息向所述gateway网关服务发起携带有设备上次连接的Broker服务器的配置信息的请求。
进一步地,所述步骤S2的路由规则通过请求路径进行映射配置;所述gateway网关服务接收到请求后,通过RequestMapping路径进行映射。
进一步地,所述步骤S3的每台Broker服务器的配置信息列表中记载的配置信息包含每台Broker服务器的IP/域名和端口,每台Broker服务器的IP/域名对应一个key值。
进一步地,所述步骤S5通过负载均衡算法获取Broker服务器的详细信息的具体实现方式包括:
a、如果负载均衡算法采用随机算法,所述业务服务根据当前从配置中获取到的所有的Broker服务器的配置信息列表,采用random随机数从所有的Broker服务器的配置信息列表中随机生成一个Broker服务器节点信息;
b、如果负载均衡算法采用轮询算法,所述业务服务根据当前从配置中获取到的所有的Broker服务器的配置信息列表,分别将每台Broker服务器的配置信息列表标记为不同的字符,并根据特指定的key从redis获取该key的value值,再将该value值与Broker服务器的标记为不同字符的配置信息列表进行比对,获取一个Broker服务器节点信息。
进一步地,所述具体实现方式b进一步从配置中获取Broker服务器的配置信息列表,根据特定的key2从redis中获取该key的value值,该value值与配置列表对比,获取轮询得到的Broker服务器节点信息。
进一步地,所述步骤S6的具体实现方式是通过所述gateway网关服务根据路由规则转发请求调用业务服务,再通过步骤S5所述的负载均衡算法获取到Broker服务器的详细信息返回给所述gateway网关服务,所述gateway网关服务再将接收到的Broker服务器的详细信息通过网络返回给发送请求的设备。
进一步地,所述设备的证书信息中包含gateway地址和端口;
所述设备向所述gateway网关服务发起的请求为http或https请求。
采用上述方案,本发明具有以下有益效果:
1、创建MQTT的connect连接前采用http或https请求动态Broker服务器的地址,方式更加灵活,且利于Broker服务器的扩展,设备不用升级处理,即可动态切换设备所连接的Broker服务器,实现及时恢复设备到正常状态;
2、建立connect连接的Broker服务器的地址不再由设备和证书决定,而是将连接的主动权交给服务器,由服务器的均衡算法和方案决定设备所连接的Broker服务器,对Broker服务器的设备连接数可控;
3、利于Broker的实例的扩展,后期扩展Broker,只需添加Broker实例和添加Broker服务器配置到业务服务中即可,通过业务服务读取配置,结合业务服务配置的均衡算法,即可解决Broker实例扩展的问题,扩展更加灵活,Broker服务器的设备连接数可控,均衡算法可根据需要可以多样化定制。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明基于MQTT协议多Broker实现负载均衡的方法的步骤流程图;
图2为本发明基于MQTT协议多Broker实现负载均衡的方法中设备建立MQTT连接的时序图;
图3为本发明基于MQTT协议多Broker实现负载均衡的方法中设备连接流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
参照图1至图3所示,本发明提供一种基于MQTT协议多Broker实现负载均衡的方法,包括如下步骤:
S1,设备通过读取设备自身的证书信息获取gateway网关服务的配置信息,并根据获取的配置信息向gateway网关服务发起http或https请求,该请求携带有设备上次连接的Broker服务器的配置信息,用以获取建立MQTT客户端所需要的Broker服务器的IP/地址和端口,以及用以重新计算Broker服务器的设备连接数;具体的,步骤S1的具体实现方式为:当设备通电连接WiFi后,设备就相当于一个微型计算机,由于设备出厂前烧录有包含设备mac地址、设备注册到平台的gateway地址、IP/域名以及端口,因此,设备通过读取文件流的方式从烧录在设备中的证书信息(也即设备自身的证书信息)中获取gateway网关服务的gateway地址和端口,即设备的证书信息中包含gateway地址和端口,并根据获取的gateway地址和端口向gateway网关服务发起携带有设备上次连接的Broker服务器的配置信息的http或https请求,该请求可以称之为建立MQTT客户端的connect连接的预检请求,从而获取到建立MQTT客户端所需要的Broker服务器的IP/地址和端口,并实现重新计算Broker服务器的设备连接数;
S2,gateway网关服务接收到设备发送来的请求后,gateway网关服务通过网关服务配置的路由规则将该请求转发到业务服务,使业务服务读取配置文件获取所有Broker服务器的配置信息列表;其中,所述步骤S2的路由规则通过请求路径进行映射配置,gateway网关服务接收到请求后,通过RequestMapping路径进行映射,例如:如果请求路径中包含“/user”,则gateway网关服务请求云服务中A服务,如果请求路径中包含“/file”,则gateway网关服务则请求云服务中B服务;具体的,配置路由规则的一种实现代码如下:
spring:
application:
name: gateway
profiles:
active: dev
cloud:
gateway:
routes:
- id: first_route
uri: http://172.16.3.1:8899
predicates:
- Path=/user/** //请求地址中有user,就请求172.16.3.1服务器
filters:
- name: Hystrix
args:
name: default
fallbackUri: forward:/fallback
- id: second_route
uri: http://172.16.3.2:8888
predicates:
- Path=/file/** //请求地址中有file,就请求172.16.3.2服务器
filters:
# 熔断配置
- name: Hystrix
args:
name: hystrix1
fallbackUri: forward:/fallback
S3,业务服务接收到gateway网关服务转发来的请求后,读取配置文件获取所有的Broker服务器的配置信息列表,将每台Broker服务器的配置信息列表组装为redis的key,且该业务服务根据gateway网关服务转发的请求中的参数值进行判定:
a、如果所述gateway网关服务转发来的请求中的参数值为空,表明设备之前没有进行过连接,即设备为新设备,则继续执行步骤S4;
b、如果所述gateway网关服务转发来的请求中的参数值不为空,表明设备之前进行过连接,将该业务服务接收到所述gateway网关服务转发来的请求参数组装为redis的key1(是redis的key),并通过redis将该key1的value值进行一次自减操作;
具体的,所述步骤S3的每台Broker服务器的配置信息列表中记载的配置信息包含每台Broker服务器的IP/域名和端口,所有的Broker服务器的配置信息列表大致为:{[“IP”:“172.16.1.0”,“port”:“22”]},{[“IP”:“172.16.1.1”,“port”:“22”]};每台Broker服务器的IP/域名对应一个key值;
S4,业务服务根据步骤S3中各台Broker服务器的配置信息列表组装成的key从redis的缓存中获取各台Broker服务器对应的设备连接数,并返回各台Broker服务器的设备连接数给业务服务;
S5,业务服务从redis中获取到每台Broker服务器的设备连接数后,根据配置中设置的负载均衡算法获取Broker服务器的详细信息;具体的,通过负载均衡算法获取Broker服务器的详细的具体实现方式包括:
a、如果负载均衡算法采用随机算法,业务服务根据当前从配置中获取到的所有的Broker服务器的配置信息列表,采用random随机数从所有的Broker服务器的配置信息列表中随机生成一个Broker服务器节点信息;具体的,random随机数的一种实现代码如下:
Random random = new Random();
List<String> list = Lists.newArrayList();
list.add("172.16.1.0"); //随机的元素
list.add("172.16.1.1"); //随机的元素
int index = random.nextInt(list.size());
String ip = list.get(index); //随机算法获取的结果
b、如果负载均衡算法采用轮询算法,业务服务根据当前从配置中获取到的所有的Broker服务器的配置信息列表{[“IP”:“172.16.1.0”,“port”:“22”]},{[“IP”:“172.16.1.1”,“port”:“22”]}分别将配置信息列表标记为0和1,即将配置信息列表{[“IP”:“172.16.1.0”,“port”:“22”]}标记为0,将配置信息列表{[“IP”:“172.16.1.1”,“port”:“22”]}标记为1,并从redis的缓存中获取特指定的key(在这里用key2表示特指定的值)的value值,key2只用于获取当前轮询到哪个Broker服务器,也就是说,当负载均衡算法采用的是轮询算法,业务服务根据当前从配置中获取到的所有的Broker服务器的配置信息列表,分别将每台Broker服务器的配置信息列表标记为不同的字符,例如用数字进行标记,并从redis的缓存中获取轮询算法当前轮询到的Broker服务器所对应的key2的value值,由该value值与Broker服务器的标记为不同字符的配置信息列表进行比对、映射关系计算,获取一个Broker服务器节点信息;例如:如果key2的值为0,则返回[“IP”:“172.16.1.1”,“port”:“22”]的Broker服务器节点信息,即返回标记为1的配置信息列表所对应Broker服务器的Broker服务器节点信息,并将redis的key2的值设置为1;如果key2的值为1,则返回[“IP”:“172.16.1.0”,“port”:“22”]的Broker服务器节点信息,即返回标记为0的配置信息列表所对应Broker服务器的Broker服务器节点信息,并将redis的key2的值设置为0;
S6,将步骤S5获取到的Broker服务器的详细信息返回给设备终端;步骤S6的具体实现方式是通过所述gateway网关服务根据路由规则转发请求调用业务服务,再通过步骤S5所述的负载均衡算法获取到Broker服务器的详细信息返回给所述gateway网关服务,所述gateway网关服务接收到Broker服务器的详细信息后,将接收到的Broker服务器的详细信息通过网络返回给发送请求的设备(即设备终端);
S7,设备获取到Broker服务器的详细信息(即Broker服务器节点信息)后,创建MQTT客户端,并使用获取到的Broker服务器的详细信息创建并执行connect连接消息,向获取到的Broker服务器的配置信息所在的Broker服务器发送connect请求;具体的,创建MQTT客户端的一种实现代码如下:
@Configuration
public class MqttConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(MqttConfig.class);
public static final String CHANNEL_RECV = "recvMsgChannel"; // 订阅消息的信道
public static final String CHANNEL_SEND = "sendMsgChannel"; // 发布消息的信道
public static final String TOPIC = "topic";
/**
* 获取配置文件信息
**/
@Value("${mqtt.username}")
private String username;
@Value("${mqtt.password}")
private String password;
@Value("${mqtt.url}")
private String url;
@Value("${mqtt.send.clientId}")
private String senderClientId;
@Value("${mqtt.recv.clientId}")
private String recverClientId;
// MQTT 客户端的连接器
@Bean
public MqttConnectOptions getMqttConnectOptions() {
MqttConnectOptions options = new MqttConnectOptions();
// 是否清空 session。false:服务器会保留客户端的连接记录,true:每次连接服务器都以新身份连接
options.setCleanSession(true);
options.setUserName(username); // 连接用户
options.setPassword(password.toCharArray()); // 连接密码
options.setServerURIs(url.split(",")); // 连接的服务器 url
options.setConnectionTimeout(10); // 超时时间(单位:s)
options.setKeepAliveInterval(20); // 保活心跳(单位:s),此方法没有重连机制
return options;
}
// 构造 MQTT 客户端
@Bean
public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = newDefaultMqttPahoClientFactory();
factory.setConnectionOptions(getMqttConnectOptions());
return factory;
}
// MQTT 生产者客户端
@Bean
@ServiceActivator(inputChannel = CHANNEL_SEND)
public MessageHandler mqttMsgSend() {
MqttPahoMessageHandler messageHandler = newMqttPahoMessageHandler(senderClientId, mqttClientFactory());
messageHandler.setAsync(true);
return messageHandler;
}
}
S8,Broker服务器接收到设备的connect请求后,该Broker服务器从配置文件中获取到该Broker服务器自身的配置信息,并将获取到的配置信息(即该Broker服务器自身的配置信息)组装成redis的key;
S9,redis根据当前的key将value值进行一次自增操作,此时,该Broker服务器的设备连接数加一;具体的,redis的自增操作是原子性的;
S10,步骤S9完成后,Broker服务器组装请求需要返回的数据包信息;
S11,Broker服务器返回数据包信息给设备,反馈设备连接成功,设备本地保存Broker服务器的配置信息,后续该设备与当前Broker服务器保持心跳。
与现有技术相比,本发明具有以下有益效果:
1、创建MQTT的connect连接前采用http或https请求动态Broker服务器的地址,方式更加灵活,且利于Broker服务器的扩展,设备不用升级处理,即可动态切换设备所连接的Broker服务器,实现及时恢复设备到正常状态;
2、建立connect连接的Broker服务器的地址不再由设备和证书决定,而是将连接的主动权交给服务器,由服务器的均衡算法和方案决定设备所连接的Broker服务器,对Broker服务器的设备连接数可控;
3、利于Broker的实例的扩展,后期扩展Broker,只需添加Broker实例和添加Broker服务器配置到业务服务中即可,通过业务服务读取配置,结合业务服务配置的均衡算法,即可解决Broker实例扩展的问题,扩展更加灵活,Broker服务器的设备连接数可控,均衡算法可根据需要可以多样化定制。
以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于MQTT协议多Broker实现负载均衡的方法,其特征在于,包括如下步骤:
S1,设备通过读取设备自身的证书信息获取gateway网关服务的配置信息,并根据获取的配置信息向所述gateway网关服务发起携带有设备上次连接的Broker服务器的配置信息的请求;
S2,所述gateway网关服务接收到设备发送来的请求后,通过网关服务配置的路由规则将该请求转发到业务服务;
S3,所述业务服务接收到所述gateway网关服务转发来的请求后,读取配置文件获取所有的Broker服务器的配置信息列表,将每台Broker服务器的配置信息列表组装为redis的key,且该业务服务根据所述gateway网关服务转发来的请求中的参数值进行判定:
a、如果所述gateway网关服务转发来的请求中的参数值为空,则继续执行步骤S4;
b、如果所述gateway网关服务转发来的请求中的参数值不为空,将该业务服务接收到所述gateway网关服务转发来的请求参数组装为redis的key,并通过redis将该由请求参数组装为redis的key的value值进行一次自减操作;
S4,所述业务服务根据步骤S3中各台Broker服务器的配置信息列表组装成的key从redis中获取各台Broker服务器对应的设备连接数;
S5,所述业务服务从redis中获取到每台Broker服务器的设备连接数后,根据配置中设置的负载均衡算法获取Broker服务器的详细信息;
S6、将步骤S5获取到的Broker服务器的详细信息返回给发送请求的设备;
S7,设备获取到Broker服务器的详细信息后,创建MQTT客户端,并使用获取到的Broker服务器的详细信息创建并执行connect连接消息,向获取到的Broker服务器的详细信息所在的Broker服务器发送connect请求;
S8,Broker服务器接收到设备的connect请求后,该Broker服务器从配置文件中获取到自身的配置信息,并将获取到的配置信息组装成redis的key;
S9,redis根据当前的key将value值进行一次自增操作;
S10,步骤S9完成后,Broker服务器组装请求需要返回的数据包信息;
S11,Broker服务器返回数据包信息给设备,反馈设备连接成功,设备本地保存Broker服务器的配置信息,后续该设备与当前Broker服务器保持心跳。
2.根据权利要求1所述的基于MQTT协议多Broker实现负载均衡的方法,其特征在于,所述步骤S1的具体实现方式为:设备通过读取文件流的方式从设备自身的证书信息中获取所述gateway网关服务的配置信息,并根据获取的gateway网关服务的配置信息向所述gateway网关服务发起携带有设备上次连接的Broker服务器的配置信息的请求。
3.根据权利要求1所述的基于MQTT协议多Broker实现负载均衡的方法,其特征在于,所述步骤S2的路由规则通过请求路径进行映射配置;所述gateway网关服务接收到请求后,通过RequestMapping路径进行映射。
4.根据权利要求1所述的基于MQTT协议多Broker实现负载均衡的方法,其特征在于,所述步骤S3的每台Broker服务器的配置信息列表中记载的配置信息包含每台Broker服务器的IP/域名和端口,每台Broker服务器的IP/域名对应一个key值。
5.根据权利要求1所述的基于MQTT协议多Broker实现负载均衡的方法,其特征在于,所述步骤S5通过负载均衡算法获取Broker服务器的详细信息的具体实现方式包括:
a、如果负载均衡算法采用随机算法,所述业务服务根据当前从配置中获取到的所有的Broker服务器的配置信息列表,采用random随机数从所有的Broker服务器的配置信息列表中随机生成一个Broker服务器节点信息;
b、如果负载均衡算法采用轮询算法,所述业务服务根据当前从配置中获取到的所有的Broker服务器的配置信息列表,分别将每台Broker服务器的配置信息列表标记为不同的字符,并根据特指定的key从redis获取该key的value值,再将该value值与Broker服务器的标记为不同字符的配置信息列表进行比对,获取一个Broker服务器节点信息。
6.根据权利要求5所述的基于MQTT协议多Broker实现负载均衡的方法,其特征在于,所述具体实现方式b进一步从配置中获取Broker服务器的配置信息列表,根据特定的key2从redis中获取该key的value值,该value值与配置列表对比,获取轮询得到的Broker服务器节点信息。
7.根据权利要求1所述的基于MQTT协议多Broker实现负载均衡的方法,其特征在于,所述步骤S6的具体实现方式是通过所述gateway网关服务根据路由规则转发请求调用业务服务,再通过步骤S5所述的负载均衡算法获取到Broker服务器的详细信息返回给所述gateway网关服务,所述gateway网关服务再将接收到的Broker服务器的详细信息通过网络返回给发送请求的设备。
8.根据权利要求2所述的基于MQTT协议多Broker实现负载均衡的方法,其特征在于,所述设备的证书信息中包含gateway地址和端口;
所述设备向所述gateway网关服务发起的请求为http或https请求。
CN202111008831.XA 2021-08-31 2021-08-31 基于MQTT协议多Broker实现负载均衡的方法 Active CN113452800B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111008831.XA CN113452800B (zh) 2021-08-31 2021-08-31 基于MQTT协议多Broker实现负载均衡的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111008831.XA CN113452800B (zh) 2021-08-31 2021-08-31 基于MQTT协议多Broker实现负载均衡的方法

Publications (2)

Publication Number Publication Date
CN113452800A CN113452800A (zh) 2021-09-28
CN113452800B true CN113452800B (zh) 2021-11-30

Family

ID=77819088

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111008831.XA Active CN113452800B (zh) 2021-08-31 2021-08-31 基于MQTT协议多Broker实现负载均衡的方法

Country Status (1)

Country Link
CN (1) CN113452800B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651476A (zh) * 2020-05-18 2020-09-11 青岛海洋科学与技术国家实验室发展中心 一种物联网关中mqtt主题的快速匹配方法及***
CN113242272A (zh) * 2021-03-24 2021-08-10 中国雄安集团数字城市科技有限公司 基于mqtt服务集群的会话处理方法及***

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110011928B (zh) * 2019-04-19 2022-08-19 平安科技(深圳)有限公司 流量均衡负载方法、装置、计算机设备和存储介质
CN111787066B (zh) * 2020-06-06 2023-07-28 王科特 一种基于大数据与ai的物联网数据平台
CN112104720B (zh) * 2020-09-03 2024-04-26 国电南瑞科技股份有限公司 适用于边缘物联终端的MQTT双Broker数据交互方法及***
CN112867060B (zh) * 2021-01-18 2022-04-05 重庆邮电大学 一种LoRa网络服务器的下行消息队列处理方法
CN113190870A (zh) * 2021-05-27 2021-07-30 新华三技术有限公司 一种Redis数据库访问权限控制方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651476A (zh) * 2020-05-18 2020-09-11 青岛海洋科学与技术国家实验室发展中心 一种物联网关中mqtt主题的快速匹配方法及***
CN113242272A (zh) * 2021-03-24 2021-08-10 中国雄安集团数字城市科技有限公司 基于mqtt服务集群的会话处理方法及***

Also Published As

Publication number Publication date
CN113452800A (zh) 2021-09-28

Similar Documents

Publication Publication Date Title
US11582199B2 (en) Scalable proxy clusters
EP1560395B1 (en) System and method for session reestablishment between client terminal and server
JP5739023B2 (ja) 割り当てられたネットワークアドレスを有するデバイスにアクセスするウェブプロキシサーバを使用したシステムおよび方法
JP4648214B2 (ja) 呼制御装置および呼制御方法
CN101997759B (zh) 一种业务实现方法及业务***
US7415536B2 (en) Address query response method, program, and apparatus, and address notification method, program, and apparatus
JP5847853B2 (ja) 割り当てられたネットワークアドレスを有するデバイスにアクセスするためのシステムおよび方法
US11336734B1 (en) System and method for aggregating communication connections
US10812421B2 (en) Conveying instant messages via HTTP
WO2011038639A1 (zh) 端到端即时通讯的实现方法、端到端即时通讯终端及***
KR100702704B1 (ko) 메신저를 이용한 알림 시스템 및 방법
US20140095922A1 (en) System and method of failover for an initiated sip session
CN113452800B (zh) 基于MQTT协议多Broker实现负载均衡的方法
CN112769799B (zh) 一种集控设备及其内网穿透方法、存储介质
CN111641664B (zh) 一种爬虫设备业务请求方法、装置、***和存储介质
CN105359494B (zh) 网站之间的镜像呈现***、装置、方法及网络服务器节点
CN114584558A (zh) 云边协同分布式api网关***及api调用方法
Cisco Kerberos Commands
US9015309B2 (en) Networked probe system
KR20050003598A (ko) 이중화된 도메인 네임 서버를 이용한 도메인 네임 서비스제공 시스템 및 제공 방법
CN114499965B (zh) 一种基于pop3协议的上网认证方法及***
CN115190168B (zh) 一种边缘服务器管理***及服务器集群
CN112543191B (zh) 一种负载均衡方法及装置
CN109510801B (zh) 显式正向代理与ssl侦听集成***及其运行方法
CN116232616A (zh) 基于mqtt协议的设备通信方法及装置

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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Xiong Hao

Inventor after: Feng Jianshe

Inventor after: Chen Jun

Inventor after: Du Dongdong

Inventor after: Wu Yuxiao

Inventor after: Chen Gong

Inventor after: Cheng Jianhong

Inventor before: Qin Jiangwei

Inventor before: Feng Jianshe

Inventor before: Du Dongdong

Inventor before: Luo Qiming

Inventor before: Xiong Hao

Inventor before: Yang Zhiyu

Inventor before: Wu Yuxiao

Inventor before: Cheng Jianhong

Inventor before: Chen Gong

Inventor before: Chen Jun