一种设备通信协议的动态扩展和热插拔方法转让专利

申请号 : CN202310494938.2

文献号 : CN116233283B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王怀採王先红李修庆

申请人 : 湖南盛鼎科技发展有限责任公司

摘要 :

本申请提供一种设备通信协议的动态扩展和热插拔方法,涉及物联网技术领域,能够实现边缘设备的灵活接入与安全控制。包括如下步骤:环境部署:部署实时数据库,消息服务器,Config微服务,Handler微服务;设备注册:判断Config微服务中是否有新设备的通信协议;协议扩展:选择Config微服务预先定义的标准通信协议框架,扩展新设备的通信协议;设备激活:Config微服务向消息服务器的系统主题消费启动发送设备激活消息;设备监听:动态创建新设备业务主题对应的监听器;数据通讯:边缘端设备向消息服务器的业务主题发送数据;数据处理:查找新设备对应的通信协议,进行消息解析。

权利要求 :

1.一种设备通信协议的动态扩展和热插拔方法,其特征在于,包括如下步骤:环境部署:部署实时数据库,消息服务器,Config微服务,Handler微服务;

设备注册:判断Config微服务中是否有边缘端设备的通信协议;

如果没有边缘端设备的通信协议,则执行协议扩展步骤;

如果有边缘端设备的通信协议,则选择边缘端设备要注册到的项目以及通信协议,输入设备的信息后完成设备的注册,并执行设备激活步骤;

协议扩展:选择Config微服务预先定义的标准通信协议框架,扩展边缘端设备的通信协议;

设备激活:Config微服务向消息服务器的系统主题消费启动发送设备激活消息,同时在消息服务器中动态创建租户、命名空间、业务主题、进行证书授权;

设备监听:Handler微服务的消费启动监听器收到设备激活消息后,动态创建边缘端设备业务主题对应的监听器;

数据通讯:边缘端设备向消息服务器的业务主题发送数据;

数据处理:Handler微服务的对应的业务监听器收到消息后,查找边缘端设备对应的通信协议,进行消息解析,将远端数据存入实时数据库。

2.根据权利要求1所述的设备通信协议的动态扩展和热插拔方法,其特征在于,所述协议扩展步骤包括:协议开发:基于Config微服务预先定义的标准通信协议框架,对需添加的边缘端设备的属性、动作、事件、心跳进行定义;

模型封装:对需添加的边缘端设备的属性、动作、事件、心跳四类代码进行编译和单元测试,分别打包成独立的模型包;

模型验证:将模型包通过Config微服务上传至对象存储库或文件服务器中,然后下载至本地进行模型的读取,对模型包进行规范性检查和验证;

如果验证失败,提示出错并显示改进建议;

如果验证通过,执行模型预加载;

模型预加载:将验证通过后的模型包装载到Config微服务,进行对象实例化预热;

预热如果失败,提示并显示冲突处理办法;

预热如果成功,执行模型部署;

模型部署:Config微服务给消息服务器的系统主题模型装载发送消息,Handler微服务收到消息后,进行异步操作,加载模型包,完成边缘端设备通信协议的动态部署。

3.根据权利要求2所述的设备通信协议的动态扩展和热插拔方法,其特征在于,所述设备激活步骤包括:创建租户:Config微服务在消息服务器中以项目为单位,动态添加租户;

创建命名空间:在消息服务器中以模型库为单位,动态添加命名空间;

创建主题:根据设备注册时的安全控制级别,建立对应的主题;

生成密钥:根据主站机器号、账号密钥、项目关键信息生成授权密钥;

证书授权:根据密钥生成安全证书;

激活消息:Config微服务给消息服务器的消费系统主题启动发送激活消息。

4.根据权利要求3所述的设备通信协议的动态扩展和热插拔方法,其特征在于,所述设备监听步骤包括:Handler微服务收到激活消息后,查询缓存信息,判断当前节点是否已启动边缘端设备业务主题监听;

如果已启动,程序提示并返回;

如果未启动,查询边缘端设备所属的协议框架,初始化业务处理接口,创建对边缘端设备业务主题的监听,并将激活的信息保存到缓存中,针对各节点对同一业务主题的监听,采用轮询的方式分担负载。

5.根据权利要求4所述的设备通信协议的动态扩展和热插拔方法,其特征在于,所述数据处理步骤包括:设备订阅:边缘端设备按扩展协议中预先约定的主题名称,实时发送生产数据;

主题消费:Handler微服务的主题监听器接收到消息,调用协议约定的业务处理接口处理消息;

数据保存:业务处理接口解析数据,生成数据实例化对象,创建数据表结构,动态插入数据记录;

在线分析:数据统计分析相关业务系统查询该设备实时数据,进行流式计算。

6.根据权利要求3所述的设备通信协议的动态扩展和热插拔方法,其特征在于,所述创建主题中安全控制级别分为项目级控制、设备物模型级控制和设备实例级控制;

项目级控制为一个项目下所有的设备属于同一个租户和命名空间,共享相关的主题;

设备物模型级控制为一类相同的设备属于同一个命名空间,共享相关的主题;

设备实例级控制为每个设备拥有独立的主题。

说明书 :

一种设备通信协议的动态扩展和热插拔方法

技术领域

[0001] 本申请涉及物联网技术领域,尤其涉及一种设备通信协议的动态扩展和热插拔方法。

背景技术

[0002] 随着物联网技术的飞速发展,各类设备以几何级增速接入。业务系统中每接入一类新设备,必然要重新定义一套与该设备相关的通信协议,然后需要重新部署和启动业务系统,才能投入使用。反之,要卸载该设备,也要先停止与设备通信协议相关的服务,同样需要对业务系统进行重启。
[0003] 而且,从安全的角度来说,如果要实现基于单个设备的控制,也需要单独编写特定于该备实例的通信协议,实现方式极其繁琐,且难以扩展。
[0004] 以上实现方式,极大的加重了物联网设备的接入负担,故亟待提出一种行之有效的解决方案,实现边缘端设备的灵活接入与安全控制。

发明内容

[0005] 为了解决背景技术中的其中至少一个技术问题,本申请实施例提供一种设备通信协议的动态扩展和热插拔方法,能够实现边缘设备的灵活接入与安全控制。
[0006] 本申请实施例提供的设备通信协议的动态扩展和热插拔方法,包括如下步骤:
[0007] 环境部署:部署实时数据库,消息服务器,Config微服务,Handler微服务;
[0008] 设备注册:判断Config微服务中是否有边缘端设备的通信协议;
[0009] 如果没有边缘端设备的通信协议,则执行协议扩展步骤;
[0010] 如果有边缘端设备的通信协议,则选择边缘端设备要注册到的项目以及通信协议,输入设备的信息后完成设备的注册,并执行设备激活步骤;
[0011] 协议扩展:选择Config微服务预先定义的标准通信协议框架,扩展边缘端设备的通信协议;
[0012] 设备激活:Config微服务向消息服务器的系统主题消费启动发送设备激活消息,同时在消息服务器中动态创建租户、命名空间、业务主题、进行证书授权;
[0013] 设备监听:Handler微服务的消费启动监听器收到设备激活消息后,动态创建边缘端设备业务主题对应的监听器;
[0014] 数据通讯:边缘端设备向消息服务器的业务主题发送数据;
[0015] 数据处理:Handler微服务的对应的业务监听器收到消息后,查找边缘端设备对应的通信协议,进行消息解析,将远端数据存入实时数据库。
[0016] 在其中一种可能的实施方式中,本申请实施例提供的设备通信协议的动态扩展和热插拔方法,所述协议扩展步骤包括:
[0017] 协议开发:基于Config微服务预先定义的标准通信协议框架,对需添加的边缘端设备的属性、动作、事件、心跳进行定义;
[0018] 模型封装:对需添加的边缘端设备的属性、动作、事件、心跳四类代码进行编译和单元测试,分别打包成独立的模型包;
[0019] 模型验证:将模型包通过Config微服务上传至对象存储库或文件服务器中,然后下载至本地进行模型的读取,对模型包进行规范性检查和验证;
[0020] 如果验证失败,提示出错并显示改进建议;
[0021] 如果验证通过,执行模型预加载;
[0022] 模型预加载:将验证通过后的模型包装载到Config微服务,进行对象实例化预热;
[0023] 预热如果失败,提示并显示冲突处理办法;
[0024] 预热如果成功,执行模型部署;
[0025] 模型部署:Config微服务给消息服务器的系统主题模型装载发送消息,Handler微服务收到消息后,进行异步操作,加载模型包,完成边缘端设备通信协议的动态部署。
[0026] 在其中一种可能的实施方式中,本申请实施例提供的设备通信协议的动态扩展和热插拔方法,所述设备激活步骤包括:
[0027] 创建租户:Config微服务在消息服务器中以项目为单位,动态添加租户;
[0028] 创建命名空间:在消息服务器中以模型库为单位,动态添加命名空间;
[0029] 创建主题:根据设备注册时的安全控制级别,建立对应的主题;
[0030] 生成密钥:根据主站机器号、账号密钥、项目关键信息生成授权密钥;
[0031] 证书授权:根据密钥生成安全证书;
[0032] 激活消息:Config微服务给消息服务器的消费系统主题启动发送激活消息。
[0033] 在其中一种可能的实施方式中,本申请实施例提供的设备通信协议的动态扩展和热插拔方法,所述设备监听步骤包括:
[0034] Handler微服务收到激活消息后,查询缓存信息,判断当前节点是否已启动边缘端设备业务主题监听;
[0035] 如果已启动,程序提示并返回;
[0036] 如果未启动,查询边缘端设备所属的协议框架,初始化业务处理接口,创建对边缘端设备业务主题的监听,并将激活的信息保存到缓存中,针对各节点对同一业务主题的监听,采用轮询的方式分担负载。
[0037] 在其中一种可能的实施方式中,本申请实施例提供的设备通信协议的动态扩展和热插拔方法,所述数据处理步骤包括:
[0038] 设备订阅:边缘端设备按扩展协议中预先约定的主题名称,实时发送生产数据;
[0039] 主题消费:Handler微服务的主题监听器接收到消息,调用协议约定的业务处理接口处理消息;
[0040] 数据保存:业务处理接口解析数据,生成数据实例化对象,创建数据表结构,动态插入数据记录;
[0041] 在线分析:数据统计分析相关业务系统查询该设备实时数据,进行流式计算。
[0042] 在其中一种可能的实施方式中,本申请实施例提供的设备通信协议的动态扩展和热插拔方法,所述创建主题中安全控制级别分为项目级控制、设备物模型级控制和设备实例级控制;
[0043] 项目级控制为一个项目下所有的设备属于同一个租户和命名空间,共享相关的主题;
[0044] 设备物模型级控制为一类相同的设备属于同一个命名空间,共享相关的主题;
[0045] 设备实例级控制为每个设备拥有独立的主题。
[0046] 本申请的有益效果:本申请实施例提供一种设备通信协议的动态扩展和热插拔方法,依托一套自扩展的标准通信协议框架,极大的减少了各类设备通信协议的定义与解析的工作量,大大的方便了边缘端设备接入与老设备的卸除,减少了对业务系统启动和部署依赖,实现了标准通信协议框架下设备的任意插入和拔出。
[0047] 同时依托消息服务器,通过对主题的动态创建、订阅、取消机制,实现了设备在三级控制下的热插拔部署,可以快速实现设备的数据的实时通讯,异常情况下的快速阻断,避免了安全问题的蔓延,减少人工干预的成本,实现了精细化的管控。
[0048] 1、自扩展的标准通信协议框架,减少了边缘端设备协议的定义与解析工作量。
[0049] 2、对设备灵活的插入和拔出机制,减少了对业务系统的依赖,提高了工作效率。
[0050] 3、依托精细化的三级控制,实现了设备的安全管控,简化了操作,节省了人工成本。

附图说明

[0051] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0052] 图1是本申请实施例的设备通信协议的动态扩展和热插拔方法中环境部署示意图;
[0053] 图2是本申请实施例的设备通信协议的动态扩展和热插拔方法中Con fig微服务的技术实现流程图;
[0054] 图3是本申请实施例的设备通信协议的动态扩展和热插拔方法中Han dler微服务的技术实现流程图。

具体实施方式

[0055] 随着物联网技术的飞速发展,各类设备以几何级增速接入。业务系统中每接入一类边缘端设备,必然要重新定义一套与该设备相关的通信协议,然后需要重新部署和启动业务系统,才能投入使用。反之,要卸载该设备,也要先停止与设备通信协议相关的服务,同样需要对业务系统进行重启。
[0056] 目前,设备通讯协议繁杂难以统一定义:针对物联网常用的通信协议,如MQTT、XMPP、COAP、HTTP、和TCP等,均定义该一套标准通信协议框架与之对应。对于边缘端设备,即可根据其通信协议,在标准框架上按规范配置,做到灵活定制,动态扩展。
[0057] 设备难以动态接入,安全控制:针对添加的边缘端设备,通过消息发布和订阅机制,同步建立业务主题及对应业务监听器,即可实现设备的动态接入与卸载,做到对设备的精细化管控。
[0058] 从安全的角度来说,如果要实现基于单个设备的控制,也需要单独编写特定于该备实例的通信协议,实现方式极其繁琐,且难以扩展。
[0059] 以上实现方式,极大的加重了物联网设备的接入负担,故亟待提出一种行之有效的解决方案,实现边缘设备的灵活接入与安全控制。
[0060] 基于此,本申请实施例提供一种设备通信协议的动态扩展和热插拔方法,通过此方法能实现边缘设备的灵活接入与安全控制。
[0061] 下面将结合附图对本申请实施例的实施方式进行详细描述。
[0062] 参见图1‑图3所示,本申请实施例提供一种设备通信协议的动态扩展和热插拔方法,包括如下步骤:
[0063] 环境部署:部署实时数据库,消息服务器,Config微服务,Handler微服务,其中:
[0064] 实时数据库:提供时间驱动,调和资源分配算法,采用实时数据模型,实时系统和数据库技术结合,应用于物联网的数据采集。其数据和事务都有明确的时间限制,能如实反映现场设备的运行情况,事务的执行时间,截止期限等;能妥善处理时间与存储空间的矛盾,高效处理海量数据。数据库可选择TDengine、InfluxDB、OpenTSDB等。
[0065] 消息服务器:基于队列与消息传递技术,在网络中为应用提供同步或异步、可靠的消息传输的中间件。目前可选择的产品比较多,如RabbitM Q、EmqX、RocketMQ、Kafka、Pulsar等。选择上要注意对物联网的支持度,包括:1)支持常用MQTT、XMPP、COAP、HTTP、和TCP协议;2)支持按项目、用户、组等维度创建多租户,分协议支持度,分级安全认证;3)支持MQTT3.1以上版本,避免重复消费;4)支持动态监听。
[0066] Config微服务和Handler微服务:是业务系统运行的环境,开发语言可以选择Java、Python、C等,建议使用支持JVM的环境。软件架构建议微服务体系,便于服务的自动注册和配置。
[0067] 设备注册:判断Config微服务中是否有边缘端设备的通信协议。
[0068] 如果没有边缘端设备的通信协议,则执行协议扩展步骤。
[0069] 如果有边缘端设备的通信协议,则选择边缘端设备要注册到的项目以及通信协议,输入设备的信息后完成设备的注册,并执行设备激活步骤。
[0070] 协议扩展:选择Config微服务预先定义的标准通信协议框架,扩展边缘端设备的通信协议,其中:
[0071] 协议扩展步骤具体包括:
[0072] 协议开发:基于Config微服务预先定义的标准通信协议框架,对需添加的边缘端设备的属性、动作、事件、心跳进行定义。
[0073] 模型封装:对需添加的边缘端设备的属性、动作、事件、心跳四类代码进行编译和单元测试,分别打包成独立的模型包。
[0074] 模型验证:将模型包通过Config微服务上传至对象存储库或文件服务器中,然后下载至本地进行模型的读取,对模型包进行规范性检查和验证。
[0075] 如果验证失败,提示出错并显示改进建议。
[0076] 如果验证通过,执行模型预加载。
[0077] 模型预加载:将验证通过后的模型包装载到Config微服务,进行对象实例化预热。
[0078] 预热如果失败,提示并显示冲突处理办法。
[0079] 预热如果成功,执行模型部署。
[0080] 模型部署:Config微服务给消息服务器的系统主题模型装载发送消息,Handler微服务收到消息后,进行异步操作,加载模型包,完成边缘端设备通信协议的动态部署。
[0081] 设备激活:Config微服务向消息服务器的系统主题消费启动发送设备激活消息,同时在消息服务器中动态创建租户、命名空间、业务主题、进行证书授权,其中:
[0082] 参见图2所示,设备激活步骤具体包括:
[0083] 创建租户:Config微服务在消息服务器中以项目为单位,动态添加租户。
[0084] 创建命名空间:在消息服务器中以模型库为单位,动态添加命名空间。
[0085] 创建主题:根据设备注册时的安全控制级别,建立对应的主题,其中:
[0086] 创建主题中安全控制级别分为项目级控制、设备物模型级控制和设备实例级控制。项目级控制为一个项目下所有的设备属于同一个租户和命名空间,共享相关的主题;设备物模型级控制为一类相同的设备属于同一个命名空间,共享相关的主题;设备实例级控制为每个设备拥有独立的主题。
[0087] 生成密钥:根据主站机器号、账号密钥、项目关键信息生成授权密钥。
[0088] 证书授权:根据密钥生成安全证书。
[0089] 激活消息:Config微服务给消息服务器的消费系统主题启动发送激活消息。
[0090] 设备监听:Handler微服务的消费启动监听器收到设备激活消息后,动态创建边缘端设备业务主题对应的监听器,其中:
[0091] 参见图3所示,设备监听步骤具体包括:
[0092] Handler微服务收到激活消息后,查询缓存信息,判断当前节点是否已启动边缘端设备业务主题监听。
[0093] 如果已启动,程序提示并返回。
[0094] 如果未启动,查询边缘端设备所属的协议框架,初始化业务处理接口,创建对边缘端设备业务主题的监听,并将激活的信息保存到缓存中,针对各节点对同一业务主题的监听,采用轮询的方式分担负载。
[0095] 数据通讯:边缘端设备向消息服务器的业务主题发送数据。
[0096] 数据处理:Handler微服务的对应的业务监听器收到消息后,查找边缘端设备对应的通信协议,进行消息解析,将远端数据存入实时数据库,其中:
[0097] 数据处理步骤具体包括:
[0098] 设备订阅:边缘端设备按扩展协议中预先约定的主题名称,实时发送生产数据。
[0099] 主题消费:Handler微服务的主题监听器接收到消息,调用协议约定的业务处理接口处理消息。
[0100] 数据保存:业务处理接口解析数据,生成数据实例化对象,创建数据表结构,动态插入数据记录。
[0101] 在线分析:数据统计分析相关业务系统查询该设备实时数据,进行流式计算。
[0102] 本申请实施例提供的设备通信协议的动态扩展和热插拔方法,依托一套自扩展的标准通信协议框架,极大的减少了各类设备通信协议的定义与解析的工作量,大大的方便了边缘端设备接入与老设备的卸除,减少了对业务系统启动和部署依赖,实现了标准通信协议框架下设备的任意插入和拔出。
[0103] 同时,依托消息服务器,通过对主题的动态创建、订阅、取消机制,实现了设备在三级控制下的热插拔部署,可以快速实现设备的数据的实时通讯,异常情况下的快速阻断,避免了安全问题的蔓延,减少人工干预的成本,实现了精细化的管控。对设备灵活的插入和拔出机制,减少了对业务系统的依赖,提高了工作效率。依托精细化的三级控制,实现了设备的安全管控,简化了操作,节省了人工成本。
[0104] 以动态接入一个边缘端设备为例,描述通信协议动态扩展、设备动态激活,数据即时通信的实现原理:
[0105] 参见图1所示,系统各方参与主体主要包括四部分:消息服务器、实时数据库、Config微服务和Handler微服务,其中:
[0106] 通过Config微服务实现通信协议的动态扩展,系统中对于常用的物联网协议,如HTTP、TCP、MQTT、XMPP、COAP等,都预先定义好了一套与之对应的标准通信协议框架,供边缘端设备接入时选择。准通信协议框架对通信的数据格式不限,支持Json、报文、XML、二进制串等。协议框架对设备的物模型及业务算法,均使用对象化进行描述,对物模型的属性、动作、事件和心跳均进行了全面的定义。
[0107] 通过Handler微服务实现设备的热插拔与即时通信。微服务启动时会进行初始化工作,在消息服务器中默认创建系统租户、系统命名空间、六大系统主题,并启动与六大系统主题对应的六大系统监听器,分别用于模型部署、业务主题消费激活、业务主题生产激活、业务主题消费停止、业务主题生产停止、业务主题发送进行功能反校。
[0108] 以下是实现过程的简短描述。
[0109] 1、协议扩展:当有添加边缘端设备的请求时,选择Config微服务预先定义的标准通信协议框架,扩展该设备的通信协议,包括数据格式,解析方法,处理结果,反向控制等;
[0110] 2、协议封装:将各部分协议封装成一个完整的功能包;
[0111] 3、协议检查:将功能包上传到Config微服务,对协议进行检查,检查通过后向消息服务器的系统主题“模型装载”发送协议加载消息;
[0112] 4、协议装载:Handler微服务“模型装载监听器”收到协议加载消息,开始下载功能包,将新的设备协议动态装载进协议库;
[0113] 5、设备激活:Config微服务向消息服务器的系统主题“消费启动”发送设备激活消息,同时在消息服务器中动态创建租户、命名空间、业务主题(如topic_a主题,非Handler微服务中预先定义好的六大系统主题)、进行证书授权。
[0114] 6、设备监听:Handler微服务“消费启动监听器”收到设备激活消息后,动态创建该设备业务主题对应的监听器(此处动态创建topic_a主题的业务监听器如listener_a,非Handler微服务中预先定义好的六大系统监听器)。
[0115] 7、数据通讯:边缘端设备向向消息服务器的业务主题“topic_a”发送数据。
[0116] 8、数据处理:Handler微服务的对应的业务监听器“listener_a”收到消息后,查找该设备对应的协议,进行消息解析,将远端数据存入实时数据库。
[0117] 系统平台架构:
[0118] 第一层:实时数据库,存储采集到的设备实时数据;
[0119] 第二层:消息服务器,支持主题的动态创建,消费与生产,实现异步通讯;
[0120] 第三层:微服务集群,包括Config微服务集群,实现通信协议动态扩展;Handler微服务集群,实现设备的热插拔,即时通讯。
[0121] 具体实施例
[0122] 以MQTT协议为例,描述边缘端设备协议扩展与数据采集的具体实施过程。
[0123] 第一步:环境部署,包括实时数据库,消息服务器,Config微服务,Handler微服务,可选的业务组件包括缓存服务器,对象存储服务器;
[0124] 第二步:协议扩展,当有新的设备种类接入时,先扩充协议;
[0125] 第2.1步:协议开发,本例选择MQTT通信协议框架,对设备的属性、动作、事件、心跳进行描述。如定义一台录像机设备的属性,类名为“Tv Prop”,其中“Tv”表示${自定义类名},“Prop”表示${物模型分类}。该类必须实现IMqttR接口,表示主题订阅,用于接收消息。@Dev注解,表示主题的类型是“Prop”,示例如下:
[0126]
[0127]
[0128] IMqttR接口二个方法:
[0129]
[0130] Recorder子类的字段即设备的属性,由开发人员自己定义,每个字段必须加上@Prop注解。本例定义的录像机设备的属性有:
[0131]
[0132] SDevice用来定义设备的公共属性,默认有4个属性字段,分别是时间戳、设备编号、消息编号、设备名称。
[0133]
[0134]
[0135] @Dev注解,标识主题的类型、超表名称,主题名称。
[0136]
[0137] @Prop注解用来定义设备属性字段,包括名称、数据类型、tags标记、子表标记、描述。源码如下:
[0138]
[0139]
[0140] 第2.2步:模型封装,开发完成后,将设备属性、动作、事件、心跳四大类代码,进行编译,单元测试,最后打包成独立的jar包,
[0141] 第2.3步:模型验证,将模型包,通过Config微服务上传至对象存储库或文件服务器中。然后下载至本地进行模型的读取,各部分物模型的规范性检查,验证,如果出错,提示模型验证失败,并显示具体的改进建议。
[0142] 第2.4步:模型预加载,验证通过后,装载到Config微服务,进行对象实例化预热,如果失败,提示冲突处理办法,示例如下:
[0143]
[0144]
[0145] 第2.5步:模型部署,预热成功后,Config微服务给消息服务器的“模型装载”系统主题发送消息。Handler微服务收到消息后,进行异步操作,加载模型,完成是边缘端设备协议的动态部署。
[0146] 第三步:设备注册,如果要添加边缘端设备,在Config微服务进行添加,选择设备要注册到的项目,设备进行安全控制的级别三级可选,然后选择上一步所部署的模型,完成设备的注册。
[0147] 第3.1步:在Config微服务中添加边缘端设备,先判断是否有该设备的通信协议。
[0148] 第3.2步:有协议,则选择设备要注册到的项目,设备进行安全控制的级别三级可选,然后选择上一步所部署的协议模型,输入设备的编号、名称等关键信息后,即可完成设备的注册;
[0149] 第3.3步:没有协议,进入第二步;
[0150] 第四步:设备激活,在Config微服务中选择要激活的设备,消息服务器进行初始化相关操作,通知即时通讯模块异步激活主题的监听。
[0151] 第4.1步:创建租户,Config微服务在消息服务器中以项目为单位,动态添加租户。
[0152] 第4.2步:创建命名空间,在消息服务器中以模型库为单位,动态添加命名空间,默认命名空间为default。
[0153] 第4.3步:创建主题,根据设备注册时的安全控制级别,建立对应的主题。项目级控制是一个项目下所有的设备属于同一个租户和default命名空间,共享相关的主题;设备物模型级控制是一类相同的设备属于同一个命名空间,共享相关的主题;设备实例级是每个设备拥有独立的主题。
[0154] 第4.4步:生成密钥,根据主站机器号、账号密钥、项目关键信息等生成授权密钥。
[0155] 第4.5步:证书授权,根据密钥生成安全证书,包括证书类型(管理端/客户端)、主题、算法(NONE,HS256,HS384,HS512,RS256,RS384,RS512,ES256,ES384,ES512,PS256,PS384,PS512,默认为RS256)、有效期(一年为1y,1小时为1h,3天为3d)、到期日期、授权范围(co nsume、produce、functions、sources、sinks、packages)。
[0156] 第4.5步:激活消息,Config微服务发送消息给消息服务器“消费启动”系统主题,消息包括租户、主题、证书、该设备所属协议框架等信息。
[0157] 第4.6步:动态监听,Handler微服务收到消息后,查询缓存信息,判断当前节点是否已启动该主题监听,如果是,程序提示并返回;否则,查询该设备所属的协议框架,初始化业务处理接口,创建对该业务主题的监听,并将激活的信息保存到缓存中。针对各节点对同一业务主题的监听,会采用轮询的方式分担负载,示例如下:
[0158] final String topic=topicDto.getFullTopic();
[0159] StringsubscriptName=topicDto.getSubscriptionPrefix()+tenantI d+namespaceId+topicId;
[0160] new OnMsgConsumerBusinessListener(topicDto.getModelDto(),data Handler);
[0161] 第五步:数据处理,业务主题收到边缘端发送的实时数据,保存到实时数据库中。
[0162] 第5.1步:设备订阅,边缘端设备按扩展协议中预先约定的主题名称,实时发送生产数据。
[0163] 第5.2步:主题消费,Handler微服务的主题监听器接收到消息,调用协议约定的业务处理接口处理消息。
[0164] 第5.3步:数据保存,业务处理接口解析数据,生成数据实例化对象,创建数据表结构,动态插入数据记录,实例如下:
[0165] Tuple2>t2=ReflectUtils.getInsSql(mq ttObj.getClass(),device);
[0166] jdbcTemplate.update(t2);
[0167] 第5.4步:在线分析,数据统计分析相关业务系统查询该设备实时数据,进行流式计算。
[0168] 最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。