一种设备连接消息中间件的方法、物联网系统与流程

专利检索2022-05-10  14



1.本发明涉及通信领域,具体为一种设备连接消息中间件的方法、物联网系统。


背景技术:

2.消息中间件activemq的性能比较差,经过大批量的技术验证,activemq按照最佳的最大接入设备量是1万台,若需要接入几万、十几万甚至更多的设备,activemq的无法支撑的。
3.对于有多个消息中间件的情况,cn201910520789.6公开了一种减少消息中间件连接数量的方法及其系统,方法包括:客户端发送消息至代理层;代理层中的代理服务依据预设的分配策略,将所述消息分配至相应的连接服务;接收到所述消息的连接服务将所述消息发送至所述消息中指定的mq连接件。
4.该方法通过代理层进行消息中间件的负载均衡,具体来说,消息先发送至代理层的连接服务,由连接服务负责消息发送至哪个中间件。
5.这种方法在动辄几十万台设备的应用场景中时也是无能为力的,要求连接服务有较大的数据处理能力。
6.所以,本案解决的技术问题是:如何实现多个消息中间件存在的条件下,设备如何更为合适的选择消息中间件和云平台进行通信。


技术实现要素:

7.本发明的目的在于提供一种设备连接消息中间件的方法,该方法通过多个消息中间件来负载上万台设备,由云平台根据规则来调配消息中间件的资源,实现了上万台设备的基于消息中间件的稳定通信连接。
8.本发明还公开了一种物联网系统。
9.为实现上述目的,本发明提供如下技术方案:一种设备连接消息中间件的方法,包括如下步骤:
10.步骤1:云平台接收设备发送的激活请求,所述云平台存储有多个消息中间件的地址以及纪录有各消息中间件连接的设备数量;
11.步骤2:为设备分配一个消息中间件、将该消息中间件的地址发送至设备;设备通过地址连接对应的消息中间件,并通过消息中间件和云平台进行通信连接。
12.在上述的设备连接消息中间件的方法中,当设备无法和云平台分配的消息中间件建立通信连接时,设备向云平台发送激活请求。
13.在上述的设备连接消息中间件的方法中,当设备从云平台移除时,云平台会通过jmx访问activemq进行断开设备连接。
14.jmx(java management extensions)即java管理扩展,是一个为应用程序,设备,系统等植入管理功能的框架.jmx可以跨越一系列异构操作系统平台,系统体系结构和网络传输协议,灵活开发无缝集成的系统,网络和服务管理应用。
15.activemq开放jmx的接口给外部系统增强功能使用,可通过activemq的接口进行断开客户端的连接。
16.在上述的设备连接消息中间件的方法中,所述步骤2中,根据各消息中间件上所连接的设备的数量,选择连接设备数量最少的消息中间件分配给设备。
17.在上述的设备连接消息中间件的方法中,当为设备分配了一个消息中间件之后,更新该消息中间件连接的设备数量的纪录。
18.在上述的设备连接消息中间件的方法中,所述消息中间件为activemq消息中间件。
19.同时,本发明还公开了一种物联网系统,包括云平台、多个消息中间件;
20.所述云平台包括如下模块:
21.请求接收模块:用于接收设备发送的激活请求,所述云平台存储有多个消息中间件的地址以及纪录有各消息中间件连接的设备数量;
22.消息中间件分配模块:用于根据激活请求为设备分配一个消息中间件、将该消息中间件的地址发送至设备;设备通过地址连接对应的消息中间件,并通过消息中间件和云平台进行通信连接;
23.设备发送激活请求给请求接收模块,并接收消息中间件分配模块发送的消息中间件的地址;设备通过消息中间件的地址连接消息中间件,与云平台建立通信连接。
24.在上述的物联网系统中,所述云平台还包括断开设备连接模块:当设备从云平台移除时,用于通过jmx访问activemq进行断开设备连接。
25.在上述的物联网系统中,所述消息中间件分配模块还用于为设备分配了一个消息中间件之后,更新该消息中间件连接的设备数量的纪录。
26.在上述的物联网系统中,所述消息中间件分配模块用于根据各消息中间件上所连接的设备的数量,选择连接设备数量最少的消息中间件分配给设备;
27.所述消息中间件为activemq消息中间件。
28.与现有技术相比,本发明的有益效果是:
29.本发明通过多个activemq来负载上万台设备,由平台根据规则来调配activemq的资源,无需代理层进行消息的转发处理,可实现整个物联网系统中的设备处于最佳的通信状态。
附图说明
30.图1为本发明的实施例1的设备、消息中间件、云平台之间的数据交互流程;
31.图2为本发明的实施例1的消息中间件发生故障时的交互流程;
32.图3为本发明的实施例1的云平台移除设备时的交互流程;
33.图4为本发明的实施例1的流程框图;
34.图5为本发明的实施例2的结构框图;
35.图6为本发明的实施例1中设备进行连接鉴权的交互过程;
36.图7为本发明的实施例1中设备删除设备的数据交互过程。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.实施例1
39.如图1

4,一种设备连接消息中间件的方法,包括如下步骤:
40.步骤1:云平台接收设备发送的激活请求,所述云平台存储有多个消息中间件的地址以及纪录有各消息中间件连接的设备数量;每当为设备分配了一个消息中间件之后,更新该消息中间件连接的设备数量的纪录。
41.本发明的消息中间件一般为activemq消息中间件,但是并不排斥其他类型的消息中间件,比如rabbitmq,kafka,rocketmq等。
42.设备发送的激活请求包含了设备的id,在云平台中预先存储有设备的id以及为该设备分配的账号和密码;当云平台接受到激活请求后,进行步骤2。
43.步骤2:为设备分配一个消息中间件、将该消息中间件的地址发送至设备;设备通过地址连接对应的消息中间件,并通过消息中间件和云平台进行通信连接。
44.为设备分配一个消息中间件的一种可选择的策略为:根据各消息中间件上所连接的设备的数量,选择连接设备数量最少的消息中间件分配给设备。
45.但是也可以选择其他策略,比如:
46.1.根据权重的比例进行分配
47.2.随机分配
48.3.根据轮询算法进行分配
49.设备通过消息中间件的地址连接消息中间件,其中涉及了鉴权的过程,鉴权过程可参考cn202010861045.3,一种数据通讯方法、系统、设备及存储介质;在该申请中记载了设备将其账号和密码写入连接请求信息中并发送给上述地址对应的消息中间件,消息中间件生成鉴权请求并将鉴权请求、连接请求信息中的账号和密码发送云平台,由云平台鉴权,鉴权通过后,消息中间件和设备建立连接。
50.所述设备通过地址连接对应的消息中间件的方法为:
51.设备将连接请求通过地址发送给消息中间件;所述连接请求包含了云平台分配给设备的账号和密码;
52.在设备向云平台注册的过程中,云平台就会生成针对该设备的账号和密码;
53.在设备发送激活请求时,云平台在发送消息中间件的地址的同时也会将账号和密码发送给设备。
54.消息中间件生成鉴权请求并将鉴权请求、账号和密码发送给云平台;
55.云平台根据鉴权请求对账号和密码进行鉴权;连接鉴权操作可参考图6;
56.若云平台将其存储的该设备的账号和密码删除,则云平台鉴权失败,设备无法连接消息中间件。删除设备操作可参考图7。
57.在一般情况下,设备为消息生产者,云平台为消息消费者。
58.在运行过程中,设备和消息中间件正常通信,当设备无法和云平台分配的消息中
间件建立通信连接时,说明该消息中间件存在故障,这个时候设备向云平台发送激活请求。
59.这个时候云平台执行步骤1和步骤2,为设备重新分配一个消息中间件。
60.设备与activemq中间件是通过mqtt进行连接,需要通过tcp协议的三次握手和mqtt协议的响应码进行识别:
61.1.tcp三次握手无法建立连接,则表示activemq不可用
62.2.tcp已建立连接,则通过mqtt协议的响应码不为0x00,则无法建立连接,0x04的错误码(可出现在云平台删除该设备的账号和密码的情形下)会立即重新发起激活流程,其他拒绝的错误码,会多次尝试连接,连接不上则会重新发起激活流程。
63.响应码表如下:
[0064][0065]
当设备从云平台移除时,云平台会通过jmx访问activemq进行断开设备连接。
[0066]
本实施例通过多个activemq来负载上万台设备,由平台根据规则来调配activemq的资源,无需代理层进行消息的转发处理,可实现整个物联网系统中的设备处于最佳的通信状态。
[0067]
实施例2
[0068]
参考图5,一种物联网系统,包括云平台1、多个消息中间件2;
[0069]
所述云平台1包括如下模块:
[0070]
请求接收模块11:用于接收设备3发送的激活请求,所述云平台存储有多个消息中间件的地址以及纪录有各消息中间件连接的设备数量;
[0071]
消息中间件分配模块12:用于根据激活请求为设备分配一个消息中间件、将该消息中间件的地址发送至设备;设备通过地址连接对应的消息中间件,并通过消息中间件和云平台进行通信连接;为设备分配了一个消息中间件之后,更新该消息中间件连接的设备数量的纪录;
[0072]
作为进一步的优选,所述消息中间件分配模块用于根据各消息中间件上所连接的设备的数量,选择连接设备数量最少的消息中间件分配给设备;
[0073]
断开设备连接模块13:当设备从云平台移除时,用于通过jmx访问activemq进行断开设备连接。
[0074]
设备发送激活请求给请求接收模块,并接收消息中间件分配模块发送的消息中间
件的地址;设备通过消息中间件的地址连接消息中间件,与云平台建立通信连接。
[0075]
当需要断开设备的连接时,操作人员会操作云平台上的断开设备连接模块,通过jmx访问activemq进行断开设备连接,设备不会再反复发起激活操作。
[0076]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
转载请注明原文地址:https://win.8miu.com/read-50087.html

最新回复(0)