CN113992644B - 一种基于无服务技术的物联网关***及其数据处理方法 - Google Patents
一种基于无服务技术的物联网关***及其数据处理方法 Download PDFInfo
- Publication number
- CN113992644B CN113992644B CN202111304363.0A CN202111304363A CN113992644B CN 113992644 B CN113992644 B CN 113992644B CN 202111304363 A CN202111304363 A CN 202111304363A CN 113992644 B CN113992644 B CN 113992644B
- Authority
- CN
- China
- Prior art keywords
- data
- request
- code
- message
- layer
- 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
Links
- 238000005516 engineering process Methods 0.000 title claims abstract description 23
- 238000003672 processing method Methods 0.000 title abstract description 9
- 239000012634 fragment Substances 0.000 claims abstract description 10
- 238000012544 monitoring process Methods 0.000 claims abstract description 6
- 238000013500 data storage Methods 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 5
- 230000006978 adaptation Effects 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000002688 persistence Effects 0.000 claims description 3
- 230000002085 persistent effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000015556 catabolic process Effects 0.000 claims description 2
- 238000005265 energy consumption Methods 0.000 abstract description 4
- 238000004458 analytical method Methods 0.000 description 6
- 238000007405 data analysis Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000002076 thermal analysis method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Y—INFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
- G16Y30/00—IoT infrastructure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于无服务技术的物联网关***,包括:设备接入层,用于直接对接不同类型的设备,支持不同物联网协议并将设备报文统一转换成HTTP协议转发给控制层;存储层负责存储设备身份数据、代码片段数据、设备数据包数据和执行结果数据等;控制层负责接收HTTP请求,并从存储层获取设备身份数据并进行认证;消息队列负责数据的中转,防止请求数据丢失并且避免请求量突然爆发导致的服务器崩溃;代码执行组件负责监听消息队列中的数据,动态生成容器并执行代码,执行完成后将执行结果存入数据存储层,最后销毁容器;该数据处理方法充分利用冷启动函数不常驻进程的特点和无服务器技术按需扩展和弹性伸缩的特性达到有效节约服务器能耗的目的。
Description
技术领域
本发明涉及物联网技术领域,具体为一种基于无服务技术的物联网关***及其数据处理方法。
背景技术
随着物联网技术在社会各行各业的深入应用,物联网网关作为连接设备与服务平台的中间层,其作用越来越重要,逐渐成为连接感知网络与传统通信网络的纽带。
但目前市面上主流的物联网网关技术均采用与传统后端服务相同或者相近的技术架构,使用单体或集群应用服务器接收和响应物联设备的数据报文,并按特定的规则实现报文的解析与处理。这种技术方案是从传统C/S架构演变而来,并且服务端技术已经向互联网应用中成熟的微服务方向逐渐演进。但这个技术架构中,将物联网设备定位为传统的客户端应用,还是会有一些难以解决的问题,主要体现在以下方面:
(1)互联网服务采用的HTTPREST风格的前后端通信协议已经标准化,不需要或者很少需要考虑通信协议的兼容性;而物联设备种类繁多,通信协议标准无法统一,导致协议解析规则程序较为复杂,且不容易扩展和维护。
(2)互联网客户端是以手机和平板为主的智能设备,本身计算能力较强,服务商可以编写一致的客户端和服务端程序来提供服务;而物联网设备计算能力有强有弱,差异很大,使用和互联网服务相似的技术架构无法平滑地处理,势必导致一些设备计算能力的浪费。
(3)互联网服务面向的客户端是以手机和平板为主的移动设备,数量多、请求频率高,尤其是中大型互联网后端应用,每分钟应对的客户端请求成千上万次,在这个场景下,传统编译型语言(如C++、Java、go等)开发的后端应用程序常驻进程的方式性能更好、吞吐量更高;而绝大多数的物联网应用场景中,设备数量有限,设备发送数据报文的频率较低,如果还采用常驻进程的方式,势必会产生服务器资源的浪费。
(4)物联网设备发送的数据量和数据频率在绝大多数时间都较低,但在特定事件和场景下(如设备告警)数据流量会突然暴增,预先分配的服务器资源可能难以应对。
发明内容
本发明的目的在于克服现有技术的不足之处,提供一种基于无服务技术的物联网关***及其数据处理方法,其从物联网实际应用场景出发,以工业节能为导向,实现按需平滑对接不同计算能力的设备,以实现充分利用设备计算能力的目的;使用无服务器的自定义代码片段实现灵活适配不同物联设备的通信协议和数据解析所需要的复杂规则引擎,可以有效减少物联服务端程序的开发工作量,并充分利用冷启动函数不常驻进程的特点和无服务器技术按需扩展和弹性伸缩的特性达到有效节约服务器能耗的目的,实现服务能耗控制的智能化。
一种基于无服务技术的物联网关***,包括依次数据连接的设备接入层、控制层、消息队列及代码执行组件,以及并联在控制层与代码执行组件上存储层;设备接入层直接对接不同类型的物联设备,支持不同物联网协议并将设备报文统一转换成HTTP协议转发给控制层;控制层接收HTTP请求,并从存储层获取设备身份数据并进行设备认证,认证通过后,控制层从存储层获取代码片段数据,并将请求数据包与代码片段合并后发送到消息队列;消息队列负责数据的中转并防止请求数据丢失并且避免请求量突然爆发导致的服务器崩溃;代码执行组件负责监听消息队列中的数据,动态生成容器并执行代码,执行完成后将执行结果存入数据存储层,最后销毁容器;存储层负责接收及存储控制层内的设备身份数据,以及代码执行组件中的代码片段数据、设备数据包数据和执行结果数据。
而且,设备接入层适配物联网多种通信协议,包括MQTT、DDS、AMQP、XMPP、JMS及CoAP,设备接入层对这些协议提供对接的通道入口,读取设备报文数据后调用协议适配转换程序将设备报文数据转换为统一的HTTP协议,并发送到控制层。
而且,存储层底层采用文档型的NoSql数据库CouchDB,提供对非结构化数据的高速读写,并提供水平扩容的能力;存储层主要保存设备身份数据、代码片段数据、设备数据包数据和执行结果数据,具体包括:
设备身份数据:设备的身份和权限数据,由控制层读取HTTPREST格式的设备报文数据后,从存储层读取设备认证信息并进行鉴权步骤;
代码片段数据:由用户自定义的代码片段相关数据,包括代码片段、默认参数、CPU/内存使用限制等;
设备数据包数据:包括由设备接入层转换后的报文数据、对应的执行代码和请求唯一ID,由控制层组合后写入到存储层;
执行结果数据:代码执行组件监听到消息队列中的请求数据包后,依靠动态容器执行数据包中的报文数据和代码片段,执行完成后,将执行结果写入存储层。
而且,控制层提供了基于HTTP的接口,用于接收设备接入层适配转换后的设备报文数据,控制层得到数据后,从存储层查询得到设备身份数据,然后对报文数据进行权限认证;当控制层对设备认证通过后,从存储层读取代码片段,并连同请求参数合并成数据包一起写入到消息队列,写入成功后,控制层生成一个标识本次请求的唯一ID,并连同设备请求参数一起写入存储层。
而且,消息队列采用kafka,kafka使用顺序写入磁盘的方式提供了可靠的消息持久化的能力,并支持分布式集群方式进行扩展,在发布/订阅场景下支持高吞吐量数据,保证数据实时性;消息队列负责设备请求数据在控制层和代码执行组件之间的中转,并持久化数据防止服务器宕机时可能产生的消息丢失。
而且,代码执行组件基于事件机制,当其监听到消息队列中产生的新的数据包时,调用dockerrun动态生成一个docker容器;而后将容器初始化,如果被执行的代码类型为编译型语言,那么在容器初始化的过程中会执行编译流程;容器初始化完成后开始执行数据包中的代码;执行完成后,将执行结果存入存储层;最后销毁本次动态生成的容器;
对于每一次请求,控制层都生成一个唯一ID来标识这次请求,当用户需要获取执行结果时,使用这个ID向存储层来检索执行结果数据。
一种基于无服务技术的物联网关***的数据处理方法,包括以下步骤:
(1)用户事先调用***提供的API来创建解析设备报文数据的自定义代码片段与设备身份认证数据,这些数据被保存到存储层;控制层接收到设备接入层的HTTP请求后,从请求头中读取设备id,从存储层查询这个设备的身份信息并进行认证;
(2)认证通过后,控制层从存储层读取这个设备对应的代码片段,从HTTP请求的body中读取设备报文,同时,控制层使用设备id和时间戳生成一个唯一的请求id来标识此次请求,然后将代码片段和设备报文以及请求id合并为一个数据包并写入消息队列;
(3)控制层得到消息队列写入成功的响应后,立即将这个请求id返回给用户,同时将这个唯一id和设备的报文数据写入到存储层;
(4)代码执行组件消费消息队列,消费到控制层传来的新数据包时,解析这个数据包得到代码片段、设备报文、请求id,并执行dockerrun命令来产生一个新的docker容器;
(5)初始化容器,如果用户设置的代码片段是编译型语言,那么执行编译动作,得到可执行的字节码或者二进制码;
(6)容器初始化完成后,使用设备报文中的参数作为可执行代码函数的实参,使用这个新容器来执行这段代码;
(7)执行完成后,代码执行组件将执行结果和请求id写入存储层,并销毁当前容器;
(8)用户通过请求id向存储层获取本次执行结果。
本发明的优点和技术效果是:
本发明的一种基于无服务技术的物联网关***及其数据处理方法:
(1)采用可自定义代码片段的执行器来适配不同报文格式的物联网设备,相对于传统物联网网关技术来说,可实现即插即用,能够动态添加/删除设备,并保证了良好的兼容性和可扩展性
(2)采用可自定义代码片段的执行器来平滑适配不同计算能力的物联网设备,做到物尽其用。针对计算能力强的设备,物联网网关可以削减为只接受数据并转发,针对计算能力有限的设备,则由网关层进行较复杂的计算
(3)由于物联网设备在正常情况下请求频率低,也不需要与服务端保持长连接,所以采用无服务器技术的冷启动函数的特点,基于事件驱动,无需常驻进程,可以做到避免服务器资源和能耗的浪费
(4)物联网设备在某些状况下会出现请求数量剧增的情况,本发明采用无服务器技术动态生成容器的技术特点,可以在流量突然增加时动态扩容,避免出现服务器无法应对的情况。
附图说明
图1为本发明的数据流示意图;
图2为本发明中保温解析数据机构示意图。
具体实施方式
为能进一步了解本发明的内容、特点及功效,兹例举以下实施例,并配合附图详细说明如下。需要说明的是,本实施例是描述性的,不是限定性的,不能由此限定本发明的保护范围。
本发明的一种基于无服务技术的物联网关***,具体包括:设备接入层,用于直接对接不同类型的设备,支持不同物联网协议并将设备报文统一转换成HTTP协议转发给控制层;存储层负责存储设备身份数据、代码片段数据、设备数据包数据和执行结果数据等;控制层负责接收HTTP请求,并从存储层获取设备身份数据,然后设备进行认证。认证通过后,控制层从存储层获取代码片段数据,并将请求数据包与代码片段合并后发送到消息队列;消息队列负责数据的中转,防止请求数据丢失并且避免请求量突然爆发导致的服务器崩溃;代码执行组件负责监听消息队列中的数据,动态生成容器并执行代码,执行完成后将执行结果存入数据存储层,最后销毁容器;
设备接入层适配物联网多种通信协议,包括MQTT、DDS、AMQP、XMPP、JMS、CoAP等,设备接入层对这些协议提供对接的通道入口,读取设备报文数据后调用协议适配转换程序将设备报文数据转换为统一的HTTP协议,并发送到控制层。
存储层底层采用文档型的NoSql数据库CouchDB,提供对非结构化数据的高速读写,并提供水平扩容的能力。存储层主要保存设备身份数据、代码片段数据、设备数据包数据和执行结果数据等。上述数据详细解释如下:
(1)设备身份数据:设备的身份和权限数据,由控制层读取HTTPREST格式的设备报文数据后,从存储层读取设备认证信息并进行鉴权步骤。
(2)代码片段数据:由用户自定义的代码片段相关数据,包括代码片段、默认参数、CPU/内存使用限制等。
(3)设备数据包数据:包括由设备接入层转换后的报文数据、对应的执行代码和请求唯一ID,由控制层组合后写入到存储层。
(4)执行结果数据:代码执行组件监听到消息队列中的请求数据包后,依靠动态容器执行数据包中的报文数据和代码片段,执行完成后,将执行结果写入存储层。
控制层提供了基于HTTP的接口,用于接收设备接入层适配转换后的设备报文数据,控制层得到数据后,从存储层查询得到设备身份数据,然后对报文数据进行权限认证。当控制层对设备认证通过后,从存储层读取代码片段,并连同请求参数合并成数据包一起写入到消息队列,写入成功后,控制层生成一个标识本次请求的唯一ID,并连同设备请求参数一起写入存储层。
消息队列采用kafka,kafka使用顺序写入磁盘的方式提供了可靠的消息持久化的能力,并支持分布式集群方式进行扩展,在发布/订阅场景下支持高吞吐量数据,且实时性较好。消息队列负责设备请求数据在控制层和代码执行组件之间的中转,并持久化数据防止服务器宕机时可能产生的消息丢失。
代码执行组件是整个***最核心的部分,代码执行组件基于事件机制,当其监听到消息队列中产生的新的数据包时,开始执行以下步骤:
(1)调用docker动态生成一个docker容器,docker环境作为非常重要的运行环境需预先加载程序运行所需要的基础服务,如maven、javajdk等;
(2)将容器初始化,如果被执行的代码类型为编译型语言,那么在容器初始化的过程中会通过maven工具进行jar执行编译和打包流程,若被执行代码为JavaScript脚本,则需要通过docker命令预先加载脚本执行服务;
(3)容器初始化完成后开始通过运行应用程序;
(4)执行完成后,将执行结果存入存储层;
(5)销毁本次动态生成的容器;
对于每一次请求,控制层都生成一个唯一ID来标识这次请求,并用以区别其他请求,当用户需要获取执行结果时,使用这个ID向存储层来检索执行结果数据。
本申请以图1所描述的报文格式为例,在输入配置好解析行为和关键字段后,继承的interface,开发出ByteHexDecoder,java文件,具体解析关键源码通过循环获取配置信息可以将原始的字节流转化为标准的json数据格式。
当***开始工作后,若原始字节流报文为
“a55a4d0053472d303030303031010201f834915f383938363034313131303138373137363037383001060133834a415108f7dd07405c40be956d28fd3a3c402771b34200207a44ad8a4542deae0b42dea e0b420000004000000040a10426f696”转化为业务数据为
“{"ts":1603351808,"values":{"packet_len":50,"device_sn":"SG-000001","frame_type":1,"packet_type":"02","frame_no":1,"ccid":"89860411101871760780","source_rtk":1,"alarm_type":6,"gps_typ e":1,"bettery":12.657031,"lng":113.00048016666666,"lat":28.230425383333333,"high":89.721,"pr essure":1000.5,"inclination":49.385426,"inclination_x":34.92077,"inclination_y":34.92077,"angle_x":2.0,"angle_y":2.0,"top_displacement":1185,"device_type":"PCS001"},"device_type":"PCS001","format_key":"ep02","device_sn":"SG-000001"},并通数据写入kafka。需要判断告警,通过调用docker及相应服务,返回“{"device_sn":"SG-000001","alarm_type":6,"alarm_msg":"未知","ts":1603351808}”。
一种基于无服务技术的物联网关***的数据处理方法,包括以下步骤:
用户事先调用***提供的API来创建解析设备报文数据的自定义代码片段与设备身份认证数据,这些数据被保存到存储层;当前的物联应用场景中,大多数的物联数据格式为:十六进制字节流(6804070000),字符串($GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04)及json结构。我们将物联数据报文解析部分业务我们采用完整Java语言,SpringBoot架构实现,根据数据格式及我们抽象出的页面配置及报文解析数据结构如下:
(1)设备接入层实现多种设备协议的服务端对接入口,通过监听不同端口来区分各种设备协议,当设备报文到达时,将报文数据作为HTTP协议的body来初始化一个新的HTTP请求,请求头中包含设备id,并将这个HTTP请求发送到控制层;
(2)控制层接收到设备接入层的HTTP请求后,从请求头中读取设备id,从存储层查询这个设备的身份信息并进行认证;通过认证设备ID是否为可用(已经在管理界面配置设备状态为“可用、不可用、注销”并存储)来确认此设备状态。
(3)认证通过后,控制层从存储层读取这个设备对应的代码片段,从HTTP请求的body中读取设备报文,同时,控制层使用设备id和时间戳生成一个唯一的请求id来标识此次请求,然后将代码片段(根据请求的类型来区是否需要增加代码片段)和设备报文以及请求id合并为一个数据包并写入消息队列;
(4)控制层得到消息队列写入成功的响应后,立即将这个请求id返回给用户,同时将这个唯一id和设备的报文数据写入到存储层;然后根据接收到的数据判断如何进行下一步操作,通过设备的ID来判断进行数据解析以及解析后的数据调用哪种代码段进行业务操作。
(5)代码执行组件消费消息队列,消费到控制层传来的新数据包时,解析这个数据包得到代码片段、设备报文、请求id,并执行docker run命令来产生一个新的docker容器(docker容器中已经包括了平台的运行环境);
(6)初始化容器,如果用户设置的代码片段是编译型语言,那么执行编译动作,得到可执行的字节码或者二进制码;若报文解析的开发源码为Java语言,代码段可以被转化为class文件通过maven命令行进行编译打包为jar包中(若代码没有改动,后期可直接应用打包)。若为JavaScript,可作为脚本参数传入容器中的jar包进行数据操作。
(7)容器初始化完成后,使用设备报文中的参数作为可执行代码函数的实参,使用这个新容器来执行这段代码;
(8)执行完成后,代码执行组件将执行结果和请求id写入存储层,并销毁当前容器;
(9)用户通过请求id向存储层获取本次执行结果。
另外,本发明优选的,在数据处理方面,本申请同样采用Java语言SpringBoot架构实现应用层框架,数据解析采用JavaScript语言实现代码段的功能,通过Springboot中引入ScriptEngine脚本引擎调用JavaScript代码段实现业务逻辑。
本发明的一种基于无服务技术的物联网关***及其数据处理方法,其核心技术在于基于事件机制和动态容器技术的代码执行组件,对于每一个请求都采用冷启动方式产生一个新容器来执行,执行后即销毁,正常运行时的物联设备数据报文频率较低,采用这种冷启动的方式可以有效节约服务器资源和功耗;当设备由于某些事件导致请求数量突然剧增时,代码执行组件会按需动态生成多个容器去并行处理这些请求,提高***吞吐量,达到了按需扩展、弹性伸缩的目的。
最后,本发明的未述之处均采用现有技术中的成熟产品及成熟技术手段。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (3)
1.一种基于无服务技术的物联网关***,其特征在于:包括依次数据连接的设备接入层、控制层、消息队列及代码执行组件,以及并联在控制层与代码执行组件上的存储层;所述设备接入层直接对接不同类型的物联设备,支持不同物联网协议并将设备报文统一转换成HTTP协议转发给控制层;所述控制层接收HTTP请求,并从存储层获取设备身份数据并进行设备认证,认证通过后,控制层从存储层获取代码片段数据,并将请求数据包与代码片段合并后发送到消息队列;所述消息队列负责数据的中转并防止请求数据丢失并且避免请求量突然爆发导致的服务器崩溃;所述代码执行组件负责监听消息队列中的数据,动态生成容器并执行代码,执行完成后将执行结果存入数据存储层,最后销毁容器;所述存储层负责接收及存储控制层内的设备身份数据,以及代码执行组件中的代码片段数据、设备数据包数据和执行结果数据;
所述设备接入层适配物联网多种通信协议,包括MQTT、DDS、AMQP、XMPP、JMS及CoAP,设备接入层对这些协议提供对接的通道入口,读取设备报文数据后调用协议适配转换程序将设备报文数据转换为统一的HTTP协议,并发送到控制层;
所述存储层底层采用文档型的NoSql数据库CouchDB,提供对非结构化数据的高速读写,并提供水平扩容的能力;存储层主要保存设备身份数据、代码片段数据、设备数据包数据和执行结果数据,具体包括:
设备身份数据:设备的身份和权限数据,由控制层读取HTTP REST格式的设备报文数据后,从存储层读取设备认证信息并进行鉴权步骤;
代码片段数据:由用户自定义的代码片段相关数据,包括代码片段、默认参数、CPU/内存使用限制;
设备数据包数据:包括由设备接入层转换后的报文数据、对应的执行代码和请求唯一ID,由控制层组合后写入到存储层;
执行结果数据:代码执行组件监听到消息队列中的请求数据包后,依靠动态容器执行数据包中的报文数据和代码片段,执行完成后,将执行结果写入存储层;
所述控制层提供了基于HTTP的接口,用于接收设备接入层适配转换后的设备报文数据,控制层得到数据后,从存储层查询得到设备身份数据,然后对报文数据进行权限认证;当控制层对设备认证通过后,从存储层读取代码片段,并连同请求参数合并成数据包一起写入到消息队列,写入成功后,控制层生成一个标识本次请求的唯一ID,并连同设备请求参数一起写入存储层;
所述代码执行组件基于事件机制,当其监听到消息队列中产生的新的数据包时,调用docker run动态生成一个docker容器;而后将容器初始化,如果被执行的代码类型为编译型语言,那么在容器初始化的过程中会执行编译流程;容器初始化完成后开始执行数据包中的代码;执行完成后,将执行结果存入存储层;最后销毁本次动态生成的容器;
对于每一次请求,控制层都生成一个唯一ID来标识这次请求,当用户需要获取执行结果时,使用这个ID向存储层来检索执行结果数据。
2.根据权利要求1所述的一种基于无服务技术的物联网关***,其特征在于:所述消息队列采用kafka,kafka使用顺序写入磁盘的方式提供了可靠的消息持久化的能力,并支持分布式集群方式进行扩展,在发布/订阅场景下支持高吞吐量数据,保证数据实时性;消息队列负责设备请求数据在控制层和代码执行组件之间的中转,并持久化数据防止服务器宕机时可能产生的消息丢失。
3.一种如权利要求1所述的基于无服务技术的物联网关***的数据处理方法,其特征在于,包括以下步骤:
(1)用户事先调用***提供的API来创建解析设备报文数据的自定义代码片段与设备身份认证数据,这些数据被保存到存储层;
(2)设备接入层实现多种设备协议的服务端对接入口,通过监听不同端口来区分各种设备协议,当设备报文到达时,将报文数据作为HTTP协议的body来初始化一个新的HTTP请求,请求头中包含设备id,并将这个HTTP请求发送到控制层;
(3)控制层接收到设备接入层的HTTP请求后,从请求头中读取设备id,从存储层查询这个设备的身份信息并进行认证;
(4)认证通过后,控制层从存储层读取这个设备对应的代码片段,从HTTP请求的body中读取设备报文,同时,控制层使用设备id和时间戳生成一个唯一的请求id来标识此次请求,然后将代码片段和设备报文以及请求id合并为一个数据包并写入消息队列;
(5)控制层得到消息队列写入成功的响应后,立即将这个请求id返回给用户,同时将这个唯一id和设备的报文数据写入到存储层;
(6)代码执行组件消费消息队列,消费到控制层传来的新数据包时,解析这个数据包得到代码片段、设备报文、请求id,并执行docker run命令来产生一个新的docker容器;
(7)初始化容器,如果用户设置的代码片段是编译型语言,那么执行编译动作,得到可执行的字节码或者二进制码;
(8)容器初始化完成后,使用设备报文中的参数作为可执行代码函数的实参,使用这个新容器来执行这段代码;
(9)执行完成后,代码执行组件将执行结果和请求id写入存储层,并销毁当前容器;
(10)用户通过请求id向存储层获取本次执行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111304363.0A CN113992644B (zh) | 2021-11-05 | 2021-11-05 | 一种基于无服务技术的物联网关***及其数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111304363.0A CN113992644B (zh) | 2021-11-05 | 2021-11-05 | 一种基于无服务技术的物联网关***及其数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113992644A CN113992644A (zh) | 2022-01-28 |
CN113992644B true CN113992644B (zh) | 2024-03-26 |
Family
ID=79746691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111304363.0A Active CN113992644B (zh) | 2021-11-05 | 2021-11-05 | 一种基于无服务技术的物联网关***及其数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113992644B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242894B (zh) * | 2022-06-08 | 2023-11-17 | 三一智矿科技有限公司 | 数据处理方法、装置、存储介质和计算机设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000037695A (ko) * | 1998-12-01 | 2000-07-05 | 정선종 | 웹과 응용을 위한 멀티프로토콜 게이트웨이의 구조 및 처리방법 |
CN108270855A (zh) * | 2018-01-15 | 2018-07-10 | 司中明 | 一种物联网平台接入设备的方法 |
CN109889551A (zh) * | 2019-04-16 | 2019-06-14 | 湖南树华环保科技有限公司 | 一种智能硬件接入的物联网云平台的方法 |
CN110430219A (zh) * | 2019-08-24 | 2019-11-08 | 深圳旦倍科技有限公司 | 多种协议物联网设备自适配的方法及*** |
CN110460521A (zh) * | 2019-09-19 | 2019-11-15 | 北京中电普华信息技术有限公司 | 一种边缘计算软网关 |
US10530887B1 (en) * | 2016-12-06 | 2020-01-07 | Amazon Technologies, Inc. | Pre-caching data for use upon execution of program code |
CN111953778A (zh) * | 2020-08-12 | 2020-11-17 | 北京泊菲莱科技有限公司 | 一种物联网管理*** |
US10904038B1 (en) * | 2019-11-21 | 2021-01-26 | Verizon Patent And Licensing Inc. | Micro-adapter architecture for cloud native gateway device |
CN112787806A (zh) * | 2020-12-17 | 2021-05-11 | 国网浙江省电力有限公司信息通信分公司 | 一种基于ibe的工业互联网终端通用安全服务*** |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080031B2 (en) * | 2016-02-05 | 2021-08-03 | Sas Institute Inc. | Message-based coordination of container-supported many task computing |
US10009410B2 (en) * | 2016-08-04 | 2018-06-26 | National Central University | Description files and web service protocols for tasking capability on internet of things |
US20180349445A1 (en) * | 2017-05-31 | 2018-12-06 | General Electric Company | Prioritizing data ingestion services |
EP4029223A1 (en) * | 2019-09-10 | 2022-07-20 | ARRIS Enterprises LLC | User interface for configuring device-specific iot applications |
-
2021
- 2021-11-05 CN CN202111304363.0A patent/CN113992644B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000037695A (ko) * | 1998-12-01 | 2000-07-05 | 정선종 | 웹과 응용을 위한 멀티프로토콜 게이트웨이의 구조 및 처리방법 |
US10530887B1 (en) * | 2016-12-06 | 2020-01-07 | Amazon Technologies, Inc. | Pre-caching data for use upon execution of program code |
CN108270855A (zh) * | 2018-01-15 | 2018-07-10 | 司中明 | 一种物联网平台接入设备的方法 |
CN109889551A (zh) * | 2019-04-16 | 2019-06-14 | 湖南树华环保科技有限公司 | 一种智能硬件接入的物联网云平台的方法 |
CN110430219A (zh) * | 2019-08-24 | 2019-11-08 | 深圳旦倍科技有限公司 | 多种协议物联网设备自适配的方法及*** |
CN110460521A (zh) * | 2019-09-19 | 2019-11-15 | 北京中电普华信息技术有限公司 | 一种边缘计算软网关 |
US10904038B1 (en) * | 2019-11-21 | 2021-01-26 | Verizon Patent And Licensing Inc. | Micro-adapter architecture for cloud native gateway device |
CN111953778A (zh) * | 2020-08-12 | 2020-11-17 | 北京泊菲莱科技有限公司 | 一种物联网管理*** |
CN112787806A (zh) * | 2020-12-17 | 2021-05-11 | 国网浙江省电力有限公司信息通信分公司 | 一种基于ibe的工业互联网终端通用安全服务*** |
Also Published As
Publication number | Publication date |
---|---|
CN113992644A (zh) | 2022-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107645562B (zh) | 数据传输处理方法、装置、设备及*** | |
WO2021259013A1 (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN103034578A (zh) | 一种应用数据监控方法和装置 | |
CN114490268A (zh) | 全链路监控方法、装置、设备、存储介质和程序产品 | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN112383533A (zh) | 报文格式转换方法及装置 | |
KR20120048525A (ko) | Sms를 통해 원격 디바이스를 제어하는 방법 및 이를 위한 장치 | |
CN111930531A (zh) | 数据处理、数据生产、数据消费方法、装置、设备及介质 | |
CN114205183A (zh) | 基于实时操作***的at指令协议栈的通信方法及*** | |
CN113992644B (zh) | 一种基于无服务技术的物联网关***及其数据处理方法 | |
CN111966653A (zh) | 微服务调用链路数据处理方法、装置、服务器及存储介质 | |
CN114244821B (zh) | 数据处理方法、装置、设备、电子设备和存储介质 | |
CN113448690B (zh) | 监测方法及装置 | |
CN113660307B (zh) | 一种算法综合集成服务*** | |
WO2024125106A1 (zh) | 数据传输方法、装置、设备及存储介质 | |
CN113360413A (zh) | 一种代码测试方法及装置 | |
KR20220060429A (ko) | 원격지의 네트워크 스위치에 대한 로그 수집 시스템 및 이의 빅데이터 구축 방법 | |
CN102694865A (zh) | 一种Web Service服务端及其大批量数据传输方法 | |
CN113934672B (zh) | 网络设备管理方法、***、装置、计算机设备和存储介质 | |
CN112615773B (zh) | 一种消息处理方法及*** | |
CN115269216A (zh) | 用于分布式***的性能分析***和方法 | |
CN113918245A (zh) | 一种数据调用方法、装置、设备及计算机可读存储介质 | |
CN114785854A (zh) | 业务请求处理方法、装置、设备、存储介质及产品 | |
CN112769741B (zh) | 一种消息通信方法及电子设备 | |
CN112433870A (zh) | 数据调用方法和装置、计算机可读存储介质、电子设备 |
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 |