本发明属于电力系统自动化,具体涉及一种基于influxdb时序库的配电物联网报文浏览系统与方法。
背景技术:
1、配电物联网遵循云-管-边-端体系架构,端设备实时采集设备的运行数据,边设备汇集端设备数据并上报至物联管理平台,物联管理平台接收边设备上报的采集报文并推送至配电云主站,同时物联管理平台接收配电云主站下发的控制报文,并转发至边设备执行。配电云主站中的报文浏览子系统实时收集、存储和展示配电物联网中的各种交互报文信息,同时与实时监控、告警管理等子系统相结合,能够有效定位设备接入、运行过程中存在的问题,为用户提供更为全面、高效的服务。
2、现阶段报文浏览子系统通常使用文件或关系库进行报文存储,但由于配电物联网领域报文数据量巨大,文件存储方式面临查询效率低下、数据难以管理等问题,并且文件存储通常不支持高效的并发读写操作;同样关系库在面对海量业务报文时也存在写入性能瓶颈,查询性能受到数据表大小、索引等因素的影响。
技术实现思路
1、发明目的:针对现有技术的不足,本发明提供一种基于influxdb时序库的配电物联网报文浏览系统与方法,满足配电物联网海量传输报文的处理、存储和展示需求,使用户可以更有效地定位设备接入、运行过程中存在的问题。
2、技术方案:第一方面,一种基于influxdb时序库的配电物联网报文浏览系统,包括:报文订阅模块、influxdb代理模块和前端展示模块;
3、所述报文订阅模块,为后端交互报文订阅业务模块,用于从消息总线订阅配电物联网边/端设备上下行交互报文,并将报文解析成自定义的配电物联网报文业务对象,所述报文订阅模块根据报文类型的不同包含不同的报文订阅单元;
4、所述influxdb代理模块,为后端时序库代理业务模块,用于根据报文业务对象生成存储到influxdb时序库所需的信息,将报文业务对象存储到influxdb时序库中,并根据查询指令从influxdb时序库中获取报文;
5、所述前端展示模块,为前端报文显示模块,用于通过浏览器展示边/端设备交互报文信息,并支持报文筛选和自动刷新功能。
6、进一步的,所述报文订阅模块包括:模型变化报文订阅单元、实时量测报文订阅单元、工况状态报文订阅单元和控制指令报文订阅单元;
7、所述模型变化报文订阅单元,用于从消息总线上订阅模型变化主题,并将接收的模型变化消息解析成报文业务对象,所述模型变化消息指端设备模型的增加、删除消息;
8、所述实时量测报文订阅单元,用于从消息总线上订阅实时量测主题,并将接收的实时量测消息解析成报文业务对象,所述实时量测消息包含实时遥测、实时遥信数据;
9、所述工况状态报文订阅单元,用于从消息总线上订阅设备状态主题,并将接收的边/端设备上下线消息解析成报文业务对象;
10、所述控制指令报文订阅单元,用于从消息总线上订阅控制指令主题,并将配电云主站下发的控制指令消息解析成报文业务对象;
11、所述报文业务对象,为用于存储接收报文消息的对象,包含消息id、终端id、边设备id、报文类型、服务类型、报文内容、事件时间属性;所述终端id为物联管理平台分配给边或端设备的唯一标识,用于区分报文所属设备信息;所述边设备id为物联管理平台分配给边设备的唯一标识,用于区分报文所属边设备信息;所述报文类型,根据订阅消息主题不同划分为模型变化报文、工况状态报文、实时量测报文和控制指令报文四类报文;所述服务类型为报文消息中“serviceid”对应的值,用于区分报文的服务子类型;所述报文内容为报文订阅模块各个单元从消息总线上订阅到的报文消息字符串;所述消息id为报文消息的唯一标识;所述事件时间为关联的事件发生的时间。
12、进一步的,所述influxdb代理模块包括:报文存储单元、报文查询单元;
13、所述报文存储单元,根据报文业务对象生成存储到influxdb时序库所需的库名、表名、标签、字段,并执行时序库写入动作,其中每类消息使用不同的库,每个边设备创建对应的表,实现分库分表存储报文数据;
14、所述报文查询单元,根据报文查询指令生成查询所需的库表名称以及查询语句,并执行查询动作返回查询结果。
15、进一步的,根据报文业务对象生成存储到influxdb时序库所需的库名、表名、标签、字段包括:
16、报文订阅模块的各订阅单元将接收的报文消息解析成报文业务对象后,根据报文类型生成库名,根据边设备id生成表名,根据消息id、终端id、边设备id、服务类型、事件时间中的一项或多项生成标签,根据消息id、终端id、边设备id、报文类型、服务类型、报文内容、事件时间分别生成对应的字段。
17、进一步的,所述前端展示模块包括:报文显示单元、报文筛选单元和报文刷新单元;
18、所述报文显示单元,根据边设备id、报文类型展示交互报文列表信息,列表字段包含设备名称、接收时间、服务类型和报文内容中的一项或多项信息;
19、所述报文筛选单元,根据页面所选边设备id、报文类型、设备名称、起止时间和服务类型中的一项或多项信息生成报文查询指令,并根据查询结果更新报文列表显示;
20、所述报文刷新单元,根据页面刷新间隔配置,定时生成报文查询指令,并根据查询结果自动刷新报文列表显示。
21、第二方面,一种基于influxdb时序库的配电物联网报文浏览方法,基于上述的报文浏览系统,所述方法包括以下步骤:
22、报文订阅模块各单元从消息总线上订阅交互报文,并解析成报文业务对象;
23、报文订阅模块各单元调用报文存储单元的报文业务对象插入方法保存数据;
24、前端展示模块根据页面配置的检索条件生成报文查询指令,并调用报文查询单元的批量查询方法获取数据;
25、报文查询单元将查询到的报文数据返回给前端展示模块,前端展示模块根据返回数据在页面进行展示。
26、进一步的,所述报文订阅模块各单元从消息总线上订阅交互报文,并解析成报文业务对象,包括:
27、通过模型变化报文订阅单元订阅模型变化主题消息,通过实时量测报文订阅单元订阅实时量测主题消息,通过工况状态报文订阅单元订阅设备状态主题消息,通过控制指令报文订阅单元订阅控制指令主题消息,其中所述模型变化消息指端设备模型的增加、删除消息,所述实时量测消息包含实时遥测、实时遥信数据;
28、各订阅单元根据接收的消息结构,解析出终端id、边设备id、报文类型、服务类型、报文内容、接收时间属性并组合成报文业务对象,其中报文类型根据订阅主题不同赋值为不同的类型码,所述终端id为物联管理平台分配给边或端设备的唯一标识,用于区分报文所属设备信息;所述边设备id为物联管理平台分配给边设备的唯一标识,用于区分报文所属边设备信息;所述报文类型,根据订阅消息主题不同划分为模型变化报文、工况状态报文、实时量测报文和控制指令报文四类报文;所述服务类型为报文消息中“serviceid”对应的值,用于区分报文的服务子类型;所述报文内容为报文订阅模块各个单元从消息总线上订阅到的报文消息字符串;所述消息id为报文消息的唯一标识;所述事件时间为关联的事件发生的时间。
29、进一步的,所述报文订阅模块各单元调用报文存储单元的报文业务对象插入方法保存数据,包括:
30、各订阅单元将接收的报文消息解析成报文业务对象后,根据报文类型生成库名,根据边设备id生成表名,根据消息id、终端id、边设备id、服务类型、事件时间中的一项或多项生成标签,根据消息id、终端id、边设备id、报文类型、服务类型、报文内容、事件时间分别生成对应的字段;
31、报文存储单元完成初始化influxdb时序库连接后,使用报文插入方法将报文订阅单元传入的标签、字段、接收时间信息存储到时序库对应库名的表中,完成报文的分库分表存储。
32、进一步的,前端展示模块根据页面配置的检索条件生成报文查询指令,并调用报文查询单元的批量查询方法获取数据,包括:
33、根据前端设备列表页面上选择的需要查询报文的边设备进入边设备详情页面,根据在边设备详情页面上选择的报文类型进入报文详情子页面,根据在报文详情子页面配置的接收时间段、服务类型、端设备名称参数,响应于点击查询按钮生成查询指令,其中在报文详情子页面不进行参数配置时默认查询边设备最近接收到的指定条数报文;
34、根据前端页面的http请求调用报文查询单元的报文查询接口,报文查询接口根据查询指令中的边设备id、报文类型、端设备id、服务类型、起止时间、页码、每页条数中的一个或多个属性生成访问库表名称和查询语句,并调用报文查询方法;
35、报文查询方法根据库表名称和查询语句从influxdb时序库中获取符合条件的数据。
36、进一步的,所述报文查询单元将查询到的报文数据返回给前端页面,前端页面根据返回数据进行展示,包括:
37、报文查询单元的报文查询接口将获取到的报文数据返回给前端页面请求服务;
38、前端页面请求服务接收到返回数据后,更新页面报文列表显示信息。
39、有益效果:
40、(1)本发明提供一种基于influxdb时序库的配电物联网报文浏览系统与方法,采用influxdb时序库存储报文,能够提升5倍以上的存储与访问性能,并且支持对存储报文的压缩,设置报文的过期时间,有效节约存储空间,能够解决海量配电物联网交互报文存储与访问的难题,协助定位设备接入、运行过程的问题,提高配电网运维效率。
41、(2)本发明使用influxdb存储报文时,按照消息类型分配库(database),每类消息分配单独的库,同时按照边设备id生成表(measurement),每个边设备一张表,使得同一类型同一边设备的报文数据存储在一张表中,既能防止单表数据量过大,又符合报文浏览系统按边设备报文类型展示报文信息列表的需求,提升存取效率。
42、(3)本发明使用influxdb存储报文时,按照终端id、服务类型等生成标签(tags),加上时序库本身的时间索引,与前端页面检索条件相匹配,能有效提升报文查询效率。
43、(4)本发明采用前后端分离架构,报文订阅模块、influxdb代理模块为后端服务模块,前端展示模块为前端web模块,前后端之间基于http协议用过api接口进行数据交互,能够支持多用户并发访问,系统也更加高效、灵活和安全。
1.一种基于influxdb时序库的配电物联网报文浏览系统,其特征在于,包括:报文订阅模块、influxdb代理模块和前端展示模块;
2.根据权利要求1所述的系统,其特征在于,所述报文订阅模块包括:模型变化报文订阅单元、实时量测报文订阅单元、工况状态报文订阅单元和控制指令报文订阅单元;
3.根据权利要求1所述的系统,其特征在于,所述influxdb代理模块包括:报文存储单元、报文查询单元;
4.根据权利要求3所述的系统,其特征在于,根据报文业务对象生成存储到influxdb时序库所需的库名、表名、标签、字段包括:
5.根据权利要求1所述的系统,其特征在于,所述前端展示模块包括:报文显示单元、报文筛选单元和报文刷新单元;
6.一种基于influxdb时序库的配电物联网报文浏览方法,其特征在于,基于权利要求1所述的报文浏览系统,所述方法包括以下步骤:
7.根据权利要求6所述的方法,其特征在于,所述报文订阅模块各单元从消息总线上订阅交互报文,并解析成报文业务对象,包括:
8.根据权利要求7所述的方法,其特征在于,所述报文订阅模块各单元调用报文存储单元的报文业务对象插入方法保存数据,包括:
9.根据权利要求6所述的方法,其特征在于,前端展示模块根据页面配置的检索条件生成报文查询指令,并调用报文查询单元的批量查询方法获取数据,包括:
10.根据权利要求6所述的方法,其特征在于,所述报文查询单元将查询到的报文数据返回给前端页面,前端页面根据返回数据进行展示,包括:
