基于MQTT协议多Broker实现负载均衡的方法转让专利
申请号 : CN202111008831.X
文献号 : CN113452800B
文献日 : 2021-11-30
发明人 : 覃江威 , 杜冬冬 , 罗启明 , 熊皓 , 杨志宇 , 吴育校 , 成建洪 , 陈功 , 陈军 , 冯建设
申请人 : 深圳市信润富联数字科技有限公司
摘要 :
权利要求 :
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请求。
说明书 :
基于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服务宕
机导致设备不能连接的问题。
发明内容
信息的请求;
redis的key,且该业务服务根据所述gateway网关服务转发来的请求中的参数值进行判定:
参数组装为redis的key的value值进行一次自减操作;
信息所在的Broker服务器发送connect请求;
配置信息向所述gateway网关服务发起携带有设备上次连接的Broker服务器的配置信息的
请求。
列表中随机生成一个Broker服务器节点信息;
的字符,并根据特指定的key从redis获取该key的value值,再将该value值与Broker服务器
的标记为不同字符的配置信息列表进行比对,获取一个Broker服务器节点信息。
得到的Broker服务器节点信息。
信息返回给所述gateway网关服务,所述gateway网关服务再将接收到的Broker服务器的详
细信息通过网络返回给发送请求的设备。
Broker服务器,实现及时恢复设备到正常状态;
Broker服务器的设备连接数可控;
算法,即可解决Broker实例扩展的问题,扩展更加灵活,Broker服务器的设备连接数可控,
均衡算法可根据需要可以多样化定制。
附图说明
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图示出的结构获得其他的附图。
具体实施方式
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
网关服务接收到请求后,通过RequestMapping路径进行映射,例如:如果请求路径中包含“/
user”,则gateway网关服务请求云服务中A服务,如果请求路径中包含“/file”,则gateway
网关服务则请求云服务中B服务;具体的,配置路由规则的一种实现代码如下:
且该业务服务根据gateway网关服务转发的请求中的参数值进行判定:
key1(是redis的key),并通过redis将该key1的value值进行一次自减操作;
{[“IP”:“172.16.1.0”,“port”:“22”]},{[“IP”:“172.16.1.1”,“port”:“22”]};每台
Broker服务器的IP/域名对应一个key值;
备连接数给业务服务;
服务器的详细的具体实现方式包括:
中随机生成一个Broker服务器节点信息;具体的,random随机数的一种实现代码如下:
“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;
S5所述的负载均衡算法获取到Broker服务器的详细信息返回给所述gateway网关服务,所
述gateway网关服务接收到Broker服务器的详细信息后,将接收到的Broker服务器的详细
信息通过网络返回给发送请求的设备(即设备终端);
取到的Broker服务器的配置信息所在的Broker服务器发送connect请求;具体的,创建MQTT
客户端的一种实现代码如下:
配置信息)组装成redis的key;
Broker服务器,实现及时恢复设备到正常状态;
Broker服务器的设备连接数可控;
算法,即可解决Broker实例扩展的问题,扩展更加灵活,Broker服务器的设备连接数可控,
均衡算法可根据需要可以多样化定制。