一种支撑设备上云的报文转换插件工具的制作方法

文档序号:34308432发布日期:2023-05-31 19:52阅读:31来源:国知局
一种支撑设备上云的报文转换插件工具的制作方法

本发明涉及报文转换技术,尤其是一种支撑设备上云的报文转换插件工具。


背景技术:

1、设备上云是指将客观存在的边缘设备,通过传感器、plc以及网络通信的手段,实现边缘设备状态的上报和云端服务器控制指令的下发。

2、一般地,边缘设备与云端服务器通信协议为mqtt(消息队列遥测传输),在通信过程中边缘设备作为mqtt的客户端,物联网平台作为mqtt的服务端。mqtt是iso 标准(iso/iec prf 20922)下,基于客户端-服务器的发布/订阅范式的消息协议,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。mqtt作为针对物联网开发的轻量级传输协议,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务,具有以下主要的几项特性:

3、1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;

4、2、对负载内容屏蔽的消息传输;

5、3、使用 tcp/ip 提供网络连接;

6、4、有三种消息发布服务质量;

7、5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;

8、6、使用 last will 和 testament 特性通知有关各方客户端异常中断的机制。

9、其中,一对多的消息发布的过程中,由于不同物联网平台(例如阿里云iot平台、华为云iotda平台、东方电气同创iot平台、百度云、中国移动onenet等)报文通信的主题和格式各不相同,边缘设备在真实生产场景下往往只支持以某一种指定的报文通信主题和格式进行通信。例如,公开日为2020年7月24日,公开号为cn112003686a的中国专利文献,公开了一种消息格式协商方法及装置。该方法应用于边缘设备,该方案中,边缘设备向云平台发送连接请求报文,边缘设备接收云平台发送的确认连接请求报文,其中,确认连接请求报文的扩展载荷中携带有该云平台支持的消息格式;边缘设备基于所述消息格式将采集到的数据发送给所述云平台。该方案中边缘设备和云平台之间仅限于云平台支持的消息格式。

10、可见,由于这种单一的报文消息格式,最限制了边缘设备和云平台之间不能直接多种格式直接互通,所以就导致在迁移(接入)物联网平台时,需逐一重新调整报文的主题和格式。

11、对传输消息有三种服务质量(qos):最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层tcp/ip网络。即:<=1。至多一次,这一级别会确保消息到达,但消息可能会重复。即:>=1。只有一次,确保消息只有一次到达。即:=1。

12、对于数据传输和协议交换的最小化(协议头部只有2字节),以减少网络流量。

13、目前来说,解决上述问题的核心在于实现物联网平台对报文的运行时重写,但该问题的相关研究尚处于起步阶段。以一种可扩展、可自定义、高可用的报文转化插件实现通信报文的动态转换是解决该问题的一种全新视角。


技术实现思路

1、本发明的目的在于提供一种支撑设备上云的报文转换插件工具,运行于物联网平台和边缘设备/网关之间,以中间人的身份管理、控制、协调报文发送过程;该报文转换插件工具通过多个模块共同作用,能确保在满足报文动态转换的核心业务需求、可支撑存量设备切换物联网平台和增量新设备接入物联网平台的前提下,快速实现边缘设备和物联网平台之间对报文的重写与重发。

2、本发明解决其技术问题所采用的技术方案是:

3、一种支撑设备上云的报文转换插件工具,包括有报文输入模块、报文转换模块、报文输出模块;

4、所述报文输入模块,本质为一个mqtt服务端,用于接收边缘设备上传的报文以及物联网平台下发的指令(也是报文),对接收到的报文或指令进行解析并传递给报文转换模块。

5、所述报文转换模块,作为报文输入模块的下游,接收报文输入模块成功解析后传递的报文,并将报文信息中的mqtt协议通信主题和mqtt协议通信格式进行转换,转换后的mqtt协议通信主题和mqtt协议通信格式符合所述边缘设备上传的目标物联网平台,然后将转换结果传递给报文输出模块。

6、所述报文输出模块,本质为一个mqtt客户端,作为报文转换模块的下游,用于接收报文转换模块发送转换完毕的mqtt报文,然后将接收到的mqtt报文输出给目标物联网平台;所述mqtt报文指报文转换模块传递的转换结果。

7、基于上述报文转换插件工具的架构,进一步对报文输入模块的设计如下:

8、所述报文输入模块接收到的报文包括物联网平台无法直接解析而转发的mqtt报文,即包括迁移或接入的边缘设备无法直接发送给物联网平台的报文,也包括物联网平台无法直接下发给迁移或接入的边缘设备的指令。

9、所述报文输入模块内置有多个物联网平台的报文主题和格式,例如阿里云、华为云、东方电气同创、百度云、中国移动onenet等。

10、所述报文输入模块还可以定制非标准化的报文主题和格式。

11、针对上述报文转换插件工具的架构,所述报文转换模块的具体转换过程为:

12、(1)虽然各物联网平台在主题的命名上存在些许不同,但均按照mqtt的标准通信协议进行设计,因此对于mqtt协议通信主题的转换,主要是按照转换前后的主题对应关系执行映射即可;

13、(2)对于mqtt协议通信格式的转换,是将报文输入模块解析得到的map结构的键值对进行重新编排,然后创建出一个符合目标物联网平台的新map键值对。

14、针对上述报文转换插件工具的架构,基于mqtt协议的高可用机制特点,所述报文输出模块对外(即物联网平台,或下一个嵌套的插件)输出时,可设定不同的服务质量等级(qos),确保消息准确触达。

15、进一步地,随着物联网平台的发展,接入物联网平台的边缘设备数将持续增长,这将导致物联网平台mqtt通信报文的数量将成倍增长。为了应对海量的通信报文,所述报文转换插件工具还配备有报文日志模块、报文分流模块、报文限流模块、报文合并模块,根据具体使用场景可选择对应的模块进行工作。

16、所述报文日志模块,用于记录所述报文转换插件工具的工作日志,支持基于本地文件的日志储存模式、基于mysql的日志存储模式以及基于efk(elasticserach +filebeat + kibana)的存储模式,确保能记录不同并发程度的业务场景下的日志信息。其中,基于efk的存储模式能承载的并发压力最高,但所述插件工具默认采用所能承载并发最低同时对外部依赖最小的基于本地文件的日志存储模式。

17、为了应对海量的通信报文,物联网平台通常选择搭建mqtt服务集群与制定相应的负载均衡机制。在边缘设备向物联网平台上报数据的阶段中,可选用报文分流模块;当选用报文分流模块时,报文分流模块拦截报文转换模块输出的转换结果,匹配输出报文拟发生的目的地址;若匹配成功,则会根据配置mqtt负载集群的ip列表和负载均衡策略,重新设定报文的目标地址,形成新的转换结果并传递给报文输出模块执行报文输出。

18、所述报文分流模块至少支持polling、random、weight、hash四种负载均衡策略;所述polling策略采用轮询的方式,将报文轮流发送给mqtt服务集群中不同的mqtt服务器;所述random策略按照随机的思想,将报文随机发送给mqtt服务集群中不同的mqtt服务器;所述weight策略以加权随机算法为指导,将报文随机发送给mqtt服务集群中不同的mqtt服务器;所述hash策略则计算报文输入的hash值,根据hash值确定使用mqtt服务集群中对应的mqtt服务器作为转发的地址。

19、为了应对海量的通信报文,做出合理的报文的限流也是有必要的。因为并非所有时刻上报的报文都是重要且值得关注的,边缘设备的属性往往在一定的范围内进行波动,这并不改变当前设备的状态,因此设计可选用的报文限流模块。在边缘设备向物联网平台上报数据的阶段中,选用报文限流模块;当选用报文分流模块时,报文限流模块拦截报文输入模块输出的报文,并判断该报文的重要性;通常情况下对报文的重要性判断是基于报文的字段阈值和时间阈值的关系进行判断,同时为了避免正常报文被全部丢弃,还设置有单位时间最少发送一条报文的保底机制。根据设定的字段阈值和时间阈值进行逻辑判断,判断原则为:若单位时间内,某时刻某输出报文的某个字段的当前值超过设定的字段阈值,则立即将该报文传递给报文转换模块,报文转换模块对报文进行转换后传递给报文输出模块;否则,再判断是否为单位时间段结束时最终时刻的报文,若是满足最终时刻的要求,则将该报文立即传递给报文转换模块进行转换,否则丢弃该报文。

20、为了应对海量的通信报文,将报文进行合并也是一种可选的方案。在生产环节,一个重点设备可能接入了多个传感器,这些传感器各自向物联网平台发起通信报文(例如:对于一个焊机,具有电相关的传感器、温度传感器,通过报文转换插件工具合并该焊接所有传感器的值,进行统一上传)。在边缘设备向物联网平台上报数据的阶段,报文合并模块在报文输入模块和报文转换模块之间创建一个缓存区,利用缓存区聚合同一边缘设备的各个部件的报文信息,并以一定的频率向报文转换模块传值。

21、通过选用报文限流模块、报文分流模块、报文合并模块,可以明显提高服务质量的效果,减少网络访问次数。

22、进一步地,所述报文转换插件工具的根目录下包含有三个关键文件夹,分别是core目录、modules目录和conf目录。其中:

23、(1)core目录是核心目录,作为本报文转换插件工具的入口。

24、core目录下,利用main.java文件定义所述报文转换插件工具的主干流程,并设置了全局状态机;

25、core目录下的aop.java,从切面的视角为main.java文件提供切面功能点的扩展,保障模块能丰富main.java定义的主干流程;

26、core目录下的ioc.xml文件为模块的加载和使用逻辑进行定义,基于spring框架提供的控制反转(inversion of control)容器创建各个模块的实例对象,供aop.java调用。

27、(2)modules目录是报文转换插件工具的模块文件夹。

28、modules目录下至少包含有input、transform、output、logs、load-balancing、current-limiting、merge等子目录,这些子目录分别与报文输入模块、报文转换模块、报文输出模块、报文日志模块、报文分流模块、报文限流模块、报文合并模块一一对应。

29、(3)conf目录是报文转换插件工具的配置文件夹。

30、conf目录下包含的application.yml文件,用于约定了报文转换插件工具的系统配置和业务配置;其中,系统配置主要是对jvm(java 虚拟机)参数的设定,业务配置主要是对模块使用情况的配置。

31、本发明的具体实现步骤包括:

32、①创建core目录,编写主干流程逻辑、状态转换机与插件的入口函数;随后跳转步骤②。

33、②创建modules目录,并按照对应关系逐一创建各模块对应的子目录input、transform、output、logs、load-balancing、current-limiting、merge。随后,到各个模块的子目录中定义各个模块的标准接口,并基于该接口提供默认的实现类;随后跳转步骤③。

34、③创建conf目录,将报文转换插件工具所需依赖的中间件的配置写入application.yml文件中,并将该插件各模块的常见配置参数迁移application.yml中;最后将其托管给配置中心,确保对application.yml的改动能够被动态感知;随后跳转步骤④。

35、利用配置中心,可以满足使用者进行动态修改配置,例如阿里巴巴nacos erueka、谷歌zookeeper等,其关联配置文件夹中的application.yml,可用于实时感知application.yml。

36、④将开发完毕的报文转换插件工具打包,并在服务器上部署;随后跳转步骤⑤。

37、⑤选择一台边缘设备,将其报文发送地址修改到报文转换插件工具部署的服务器上。随后跳转步骤⑥。

38、⑥在网络通畅的情况下,报文转换插件工具可收到边缘设备发送的报文,在正式接收之前需判断报文转换插件工具各个模块的功能是否足够支持该边缘设备的迁移或接入过程;如果判断结果为“足够”则跳转步骤⑦,否则跳转步骤⑧。

39、判断的时候,即判断报文转换插件工具是否能支持主题、格式转换的迁移或接入过程。

40、⑦根据实际需要到配置中心中修改application.yml的配置,修改的配置具体包括:准备转入的设备上云平台的ip、端口、身份认证信息、报文映射的主题和格式以及插件各个模块的选用情况;随后跳转步骤⑩。

41、⑧需对报文转换插件工具的各个模块进行增强;具体来说,可以根据各个模块提供的标准接口进行重新实现,也可以集成默认实现类对默认模块的特定功能进行定点增强,更多时候主要是对报文转换模块进行增强;随后跳转步骤⑨。

42、⑨将扩展好的实现类通过报文转换插件工具的上传接口上传(即放置该模块对应的文件夹下),并通过java反射的机制进行动态加载,实现报文转换插件工具的平滑升级;随后跳转步骤⑦。

43、⑩边缘设备发送的请求经过报文转换插件工具的动态改写,可高效地发送到目标设备上云服务器上,成功实现设备上云平台的低成本迁移。

44、通过上述技术方案的实现,本发明的有益效果为:

45、1、本报文转换插件工具能满足设备上云的报文动态转换需求,快速实现边缘设备和物联网平台之间对报文的重写发布。

46、2、在可支撑存量设备切换物联网平台和增量新设备接入物联网平台的前提下,能实现多模块的扩展性,用户可根据实际场景进行搭配模块,实现插件功能的扩展;

47、3、本报文转换插件工具的所有模块都支持自定义配置,大部分的定制化需求可以通过配置(是否由配置文件夹实现本功能)实现;同时,报文转换插件工具定义有标准接口,用户可以使用编写该接口的实现类,从而实现模块级的完全自定义;

48、4、有效解决接入设备数量的增多,连续、高频的数据上报消息可能会使mqtt服务器崩溃,进而导致物联网平台整体熔断的问题,从负载均衡、智慧过滤、报文合并等角度进行可选协同配合报文转换、输出,以提高物联网平台的稳定性;

49、5、本报文转换插件工具可对某个模块配置多种备选方案,这些备选方案是对该模块的标准接口的不同实现,因此天然存在实现(或继承)的树状结构关系;在运行前,只需为每一个模块指定相应的实现类即可,不指定则该模块按照默认配置执行。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1