发明内容
本发明的目的在于克服现有技术中的不足,提供一种物联网时序数据实时监控方法、装置和系统,能够有效管理时序数据,提高了监控管理的灵活性,便于实际监控操作。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供了一种物联网时序数据实时监控方法,包括如下步骤:
采集各终端产生的时序数据;
对采集的时序数据进行自定义协议封装;
解析经封装的时序数据获得数据点信息;
将数据点信息保存至缓冲区形成数据点集合;
对数据点集合进行数据检索,并显示检索结果。
进一步的,对数据点集合进行数据检索的方法包括如下步骤:
获取用户输入的监控指令;
解析所述监控指令获取指令信息;
根据所述指令信息,基于三级检索算法对数据点集合进行数据检索。
进一步的,所述自定义协议包括消息头、消息长度、消息体,所述消息体用于存储时序数据,所述时序数据包括一个timestamp字段、多个field_list字段和多个tag_list字段;解析经自定义协议封装的时序数据获得数据点信息的方法包括如下步骤:
解析经封装的时序数据获得消息头、消息长度和消息体;
解析消息体,获得数据点对应的timestamp字段、field_list字段和tag_list字段
进一步的,缓冲保存数据点集合的方法包括如下步骤:
在缓冲区创建timestamp表、field表和tag表;
将数据点对应的timestamp字段、field_list字段和tag_list字段分别插入到tag表、timestamp表和field表中。
进一步的,所述监控命令的格式如下:
show[–f fieldname1--range value1 value2]
[-t tagname1 tagvalue1]
[-dtimestamp1 timestamp2]
其中,–f参数的fieldname1指定field字段的名称,-t参数的tagname1和tagvalue1分别指定tag字段的名称和值,-d参数的timestam1、timestamp2p指定timestamp的取值,--range的value1和value2指定field字段的取值范围。
进一步的,基于三级检索算法检索数据点集合的方法包括如下步骤:
判断-t参数列表是否为空:如果为空,则数据点集合为数据点集合A,否则,对数据点集合的tag表进行检索,检索得到的数据点形成数据点集合A;
判断-d参数列表是否为空:如果为空,则数据点集合A为数据点集合B,否则,对数据点集合A的timestamp表进行检索,检索得到的数据点形成数据点集合B;
判断-f参数列表是否为空:如果为空,则数据点集合B为数据点集合C,否则,对数据点集合B的field表进行检索,检索得到的数据点形成最终所需的数据点集合C。
第二方面,本发明提供了一种装置,包括如下模块:
网关设备模块,用于采集各终端产生的时序数据,并对采集的时序数据进行自定义协议封装;
TCP服务器模块,用于解析经封装的时序数据获得数据点;
缓冲区管理模块,用于将数据点保存至缓冲区形成数据点集合;
RPC服务模块,用于对数据点集合进行数据检索;
命令行控制台模块,用于发起检索请求,并显示检索结果。
进一步的,所述RPC服务模块包括如下单元:
指令获取单元,用于获取用户输入的监控指令;
指令解析单元,用于解析监控指令,获取指令信息;
算法检索单元,用于根据指令信息,基于三级检索算法对数据点集合进行数据检索。
第三方面,本发明提供了一种装置,包括处理器和存储介质,所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行第一方面中任一项所述方法的步骤。
第四方面,本发明提供了一种系统,包括若干终端设备、第二方面或第三方面中任一项所述的装置,所述装置用于实时监控所述终端设备生成的时序数据。
与现有技术相比,本发明所达到的有益效果:
本发明通过对时序数据进行协议封装、解析缓存、检索筛选并实时显示监控,能有效地管理时序数据,进行多维实时查询,操作简便;
通过三级检索算法对时序数据进行筛选,提高了实时监控的准确性和效率,使多维实时操作简便可行;
通过获取相应格式的监控指令,能够实时调整和获取时序数据的监控结果,提高了时序数据监控管理的灵活性。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
在物联网的应用场景中,大量的终端设备源源不断地产生各种数据,这些数据通常带有时序数据的特征。时序数据是一种带有时间标签的结构化数据,用于记录一段时间范围内的若干状态指标变化的情况,时序数据主要由数据点(data_point)、标签(tag)、域(field)、时间戳(timestamp)等构成。下表1展示了一个时序数据的集合,该时序数据的集合包括三个数据点(data_point),其中,一个数据点(data_point)代表表中的一行数,其由一个时间戳、多个域(field)和多个标签(tag)构成。
表1:
timestamp |
field1 |
field2 |
field3 |
tag1 |
tag2 |
2020.2.14 13:30:41 |
13.2 |
112 |
33 |
95FD_31 |
区域1 |
2020.2.14 13:32:11 |
15.6 |
124 |
34 |
95FD_31 |
区域2 |
2020.2.14 13:34:42 |
15.3 |
132 |
28 |
95FD_32 |
区域1 |
在实际应用中,常常需要对这些时序数据进行实时监控,而时序数据监控的难点是如何实现多维查询功能,所谓多维组合查询是指根据时间戳、域(field)和标签(tag),设置多种条件进行组合查询的方式。例如,在上表1所示的时序数据中,一个查询条件可设置为:“满足时间戳在2020.2.14 13:30至2020.2.14 14:30区间的,并且tag2为区域1的,并且field1取值在12至14区间的,并且field2取值在113至124的所有的数据点data_point。”
本发明实施例提供的自定义协议由消息头、消息长度、消息体构成,具体结构如图2所示。其中,消息头Msg_Head字段长度为2字节,包含固定数据“0xDDAA”。消息体长度字段Msg_Len记录消息体字段的长度。消息体Msg_Body字段用于存储时序数据,字段格式设置如下:
实施例一:
为了实现多维实时查询,如图1所示,本发明实施例提供了一种物联网时序数据实时监控方法,包括如下步骤:
采集各终端产生的时序数据;
对采集的时序数据进行自定义协议封装;
解析经封装的时序数据获得数据点信息;
将数据点信息保存至缓冲区形成数据点集合;
对数据点集合进行数据检索,并显示检索结果。
下面结合具体的实例对本发明的监控方法的操作步骤进行说明。
本发明监控方法由微服务技术实现,包括网关模块、TCP服务器模块、缓冲区管理模块、命令行控制台模块、RPC(Romote Procedure Call)服务器模块。其中,网关模块负责采集各类终端设备产生的时序数据,并将这些数据通过自定义协议的方式发送到TCP服务器模块;TCP服务器模块将收到的时序时间保存到缓冲区管理模块,命令行控制台模块负责接收用用户输入的监控命令,并将监控命令发送给RPC服务器模块,RPC服务器模块解析命令行,从缓冲区管理模块中将符合命令行过滤条件的数据点筛选出来,并将这些数据点返回给命令行控制台模块,由命令行控制台模块对数据点的数据进行显示展现。
具体地,TCP服务模块使用Netty框架开发,命令行控制台模块与RPC服务器模块通过Thrift框架进行通讯,缓冲区管理模块使用google guava框架开发,该模块可以同时为TCP服务器模块和RPC服务器模块服务;网关模块采集终端设备的数据并与TCP服务器通过自定义协议进行通讯。
具体地,本发明实施例提供的一种物联网时序数据实时监控方法可详细描述为:
步骤1、TCP服务器模块启动Netty服务器,在指定端口监听连接,并注册Decoder解码器。
步骤2、网关模块采集终端设备的数据,将数据通过自定义协议进行封装,然后向TCP服务器发起TCP请求;
步骤3、TCP服务器模块的Decoder解码器收到自定义协议数据,分别解析出消息头、消息长度和消息体,然后解析消息体中的timestamp字段、field_list字段和tag_list字段,最后将这些字段对应的数据发送到缓冲区管理模块;
步骤4、缓冲区管理模块收到timestamp字段、field_list字段和tag_list字段对应的数据,根据这些数据创建原始数据集X,原始数据集X可以表示为[{timestamp1,<fieldname1,fieldvalue11>,<fieldname2,fieldvalue12>,……,<tagname1,tagvalue11>,<tagname2,tagvalue12>,……},{timestamp2,<fieldname1,fieldvalue21>,<fieldname2,fieldvalue22>,……,<tagname1,tagvalue21>,<tagname2,tagvalue22>,……},]。其中,{timestamp1,<fieldname1,fieldvalue11>,<fieldname2,fieldvalue12>,……,<tagname1,tagvalue11>,<tagname2,tagvalue12>,……}代表一条数据点(data_point)。
步骤5、缓冲区管理模块分别创建tag表、timestamp表和field表。
其中,tag表为哈希表,记录了tag与data_point的对应关系;timestamp表为线性表,记录了timestamp与data_point的对应关系;field表为线性表,记录了field与data_point的对应关系。
步骤6、缓冲区管理模块计算原始数据集X的数据点数量,如果数据点数量超过规定的阈值,则对数据点按timestamp的时序进行排列,将timestamp最早的数据删除,确保原始数据集X中的数据点都是较新的数据。
步骤7、缓冲区管理模块遍历原始数据集X,获得每个数据点(data_point)的tag数据,并将这些tag数据插入到集合T中,T可以表示为[<tagname1,tagvalue11>,<tagname2,tagvalue12>,……,<tagname1,tagvalue11>,
<tagname2,tagvalue12>],然后将集合T中的元素作为主键key插入到tag表,tag表中每个元素的主键key对应的value为主键key在原始数据集X中对应的data_point集合,tag表可表示为[<<tagname1,tagvalue11>,[data_point1,data_point2,……]>,……]。
步骤8、缓冲区管理模块遍历原始数据集X,获得每个数据点(data_point)的timestamp数据,并将这些timestamp数据插入到集合D中,D可以表示为[timestamp1,timestamp2,……],然后将集合D中的元素作为主键key插入到timestamp表,timestamp表中每个元素的主键key对应的value为主键key在原始数据集X中对应的data_point集合,timestamp表可以表示为[<timestamp1,data_point1>,<timestamp2,data_point2>,……]。最后对timestamp表中的元素按照timestamp升序的方式进行排序,对timestamp表排序的目的是提高三级检索的速度。
步骤9、缓冲区管理模块遍历原始数据集X,获得每个数据点(data_point)的field数据,并将这些field数据插入到集合F中,F可以表示为[<fieldname1,fieldvalue11>,<fieldname2,fieldvalue12>,……,<fieldname1,fieldvalue11>,<fieldname2,fieldvalue12>],然后将集合F中的元素作为主键key插入到field表,field表中每个元素的主键key对应的value为主键key在原始数据集X中对应的data_point集合,field表可以表示为[<<fieldname1,fieldvalue11>,[data_point1,data_point2,……]>,……]。最后对field表中的元素按照field升序的方式进行排序,对field表排序的目的是提高三级检索的速度。
步骤10、命令行控制台模块接收用户输入的监控命令,监控命令的格式如下:
show[–f fieldname1--range value1 value2]
[-t tagname1 tagvalue1]
[-dtimestamp1 timestamp2]
其中,–f参数的fieldname1指定field字段的名称,-t参数的tagname1和tagvalue1分别指定tag字段的名称和值,-d参数的timestam1、timestamp2p指定timestamp的取值,--range的value1和value2指定field字段的取值范围。
步骤11、RPC服务器模块启动RPC服务,注册handler处理器,监听RPC请求。
步骤12、命令行控制台模块向RPC服务器模块发送RPC请求,将监控命令发送到RPC服务器模块。
步骤13、RPC服务器模块的handler处理器分别创建-f参数列表、-t参数列表和-d参数列表。其中,-f参数列表记录监控命令的-f参数,-t参数列表记录监控命令的-t参数列表,-d参数列表记录监控命令的-d参数。
步骤14、RPC服务器模块的handler处理器解析监控命令,将监控命令中的-f参数、-t参数和-d参数分别插入到-f参数列表、-t参数列表和-d参数列表中。-f参数列表可以表示为[{fieldname1,value11,value12},{fieldname2,value22,value23},……],-t参数列表可以表示为[<tagname1,tagvalue1>,<tagname2,tagvalue2>,……],-d参数列表可以表示为[timestamp1,timestamp2,……]。
步骤15、RPC服务器模块的handler处理器分别读取缓冲区管理模块中的tag表、timestamp表和field表,使用三级检索算法处理tag表、timestamp表和field表。如图3所示,在三级检索算法中,一二三级检索依次进行,前一级检索的结果是后一级检索的条件。
如果某一级检索对应的参数列表为空,则跳过本级检索。
如果某一级检索为起始检索阶段,则使用该级检索对应数据点表进行检索。例如,当-t参数列表为空时,则直接进入二级检索,由于此时二级检索为起始检索节点,则使用-d参数列表在对应的timestamp表中进行检索,获得符合条件的数据点集合B,然后再进入三级检索,使用-f参数列表在数据点集合B中进行检索,获得符合条件的数据点集合C;
如图3所示,三级检索算法的具体过程表示为:
在一级检索阶段,首先判断-t参数列表是否为空,如果为空则跳过本阶段。如果不为空,则创建数据点集合A,然后使用-t参数列表在tag表中进行检索,检索过程是:依次遍历-t参数列表[<tagname1,tagvalue1>,<tagname2,tagvalue1>,……],获得对应的元素X,然后在tag表[<<tagname1,tagvalue11>,[data_point1,data_point2,……]>,……]中查找所有与元素X相同的主键key,并将主键key对应的数据点插入到数据点集合A中。数据点集合A就为本检索阶段的结果集。
在二级检索阶段,首先判断上一级检索是否执行,如果已执行,则设置本阶段的源数据点集合为上一阶段的结果集;如果没有执行,则设置本阶段的源数据点集合为timestamp表。如果-d参数列表为空,则跳过本检索阶段;如果-d参数列表不为空,则创建数据点集合B,并使用-d参数在本阶段的源数据点集合上进行检索,检索过程是:依次遍历-d参数列表[timestamp1,timestamp2,……],获得对应的元素X,然后在本阶段的源数据点集合中查找所有数据点元素,如果数据点元素Y的timestamp字段与元素X相同,则将该数据点元素Y插入到数据点集合B。数据点集合B就为本检索阶段的结果集。
在三级检索阶段,首先判断上一级检索是否执行,如果已执行,则设置本阶段的源数据点集合为上一阶段的结果集;如果没有执行,则设置本阶段的源数据点集合为field表。如果-f参数列表为空,则跳过本检索阶段;如果-f参数列表不为空,则创建数据点集合C,并使用-f参数在本阶段的源数据点集合上进行检索,检索过程是:依次遍历-f参数列表[{fieldname1,value11,value12},{fieldname2,value22,value23},……],获得对应的元素X,然后在本阶段的源数据点集合中查找所有数据点元素Y,如果数据点元素Y的fieldname字段与元素X相同,并且数据的元素Y的fieldvalue取值在元素X的两个value取值之间,则将该数据点插入到数据点集合C。数据点集合C就为本检索阶段的结果集。
步骤16、RPC服务器模块将通过三级检索方式获得的结果集合返回给命令行控制台模块;
步骤17、命令行控制台模块对结果集进行格式化显示,每一行显示一个数据点的数据,数据点的时间戳、域(field)和标签(tag)之间用空格分隔。
实施例二:
本发明的实施例提供了一种装置,包括如下模块:
网关设备模块,用于采集各终端产生的时序数据,并对采集的时序数据进行自定义协议封装;
TCP服务器模块,用于解析经封装的时序数据获得数据点;
缓冲区管理模块,用于将数据点缓冲保存至缓冲区形成数据点集合;
RPC服务模块,用于对数据点集合进行数据检索;
命令行控制台模块,用于发起检索请求并显示检索结果。
进一步的,所述RPC服务模块包括如下单元:
指令获取单元,用于获取用户输入的监控指令;
指令解析单元,用于解析监控指令,获取指令信息;
算法检索单元,用于根据指令信息,基于三级检索算法对数据点集合进行数据检索。
实施例三:
本发明实施例提供了一种装置,包括处理器和存储介质,所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行实施例一中任一项所述方法的步骤。
实施例四:
本发明实施例提供了一种系统,包括若干终端设备、以及实施例二或实施例三中任一项的装置,所述装置用于实时监控所述终端设备生成的时序数据。
本发明所提供的监控方法、装置和系统,能够实时显示监控,能有效地管理时序数据,进行多维实时查询,提高了实时监控的准确性和效率,能够实时调整和获取时序数据的监控结果,提高了时序数据监控管理的灵活性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。