一种基于高速并发消息框架的流式数据处理的方法技术

技术编号:36707032 阅读:41 留言:0更新日期:2023-03-01 09:30
一种基于高速并发消息框架的流式数据处理的方法,包括:确定处理流式数据的关系数据库PostgreSQL,并在该中,关系数据库PostgreSQL通过SQL语句创建流式数据扩展模块;数据生产者针对流式数据Stream启用多个工作进程,并将数据插入到流失数据Stream中,并将流式数据随机发送到一个工作进程中;数据接收者通过基于ZeroMQ的API接口接收多个工作进程,并对应的将数据生产者发送来的数据发送到对应的队列里面,工作进程能够在对应的进程间通信获取数据;数据接收者对接收到的流式数据聚合操作生成流视图。聚合操作生成流视图。聚合操作生成流视图。

【技术实现步骤摘要】
一种基于高速并发消息框架的流式数据处理的方法


[0001]本专利技术涉及电力系统的信息技术处理领域,具体涉及基于高速并发消息框架的流式数据处理的方法。

技术介绍

[0002]电力系统是国家运行的基础,是现代生活无法缺失的一部分;一旦电力系统由任何问题,都会对整个社会的生产生活造成巨大的影响。一旦电力系统发生任何故障,人类社会将会彻底进入黑暗状态,所以保持电力通常是政府最应该首先解决的问题。近年来,随着我国智能电网高速建设,对整个电力系统的自动化要求也越来越高。
[0003]随着物联网(IoT)设备广泛的运用,流式数据出现在越来越多的场景,比如交通实时监测和追踪、水文监测、物流动态、网络协议层流量分析、FEED实时分析,金融数据实时处理等。通常这些数据需要进行实时、高速、高吞吐计算,现有数据库无法满足以上要求。

技术实现思路

[0004]本申请提供了一种基于高速并发消息框架的流式数据处理的方法,典型的可以应用在高速高吞吐的流式数据处理
以提高数据处理的实时性。
[0005]为了达到上述目的,本申请实施例提出了一种基于高速并发消息框架的流式数据处理的方法,其特征在于,包括:
[0006]确定处理流式数据的关系数据库PostgreSQL,并在该中,关系数据库PostgreSQL通过SQL语句创建流式数据扩展模块;
[0007]数据生产者针对流式数据Stream启用多个工作进程,并将数据插入到流失数据Stream中,并将流式数据随机发送到一个工作进程中;数据接收者通过基于ZeroMQ的API接口接收多个工作进程,并对应的将数据生产者发送来的数据发送到对应的队列里面,工作进程能够在对应的进程间通信获取数据;
[0008]数据接收者对接收到的流式数据,按照指定的时间间隔进行高吞吐数据聚合操作,并将聚合后的数据持久化到数据库的流视图中;其中该流视图为一张物化视图表;
[0009]使用SQL语言持续查询流式数据统计聚合结果,或将接收的流式数据进行实时转换后,存储到外部存储中或作为另一个流式数据处理的输入。
[0010]进一步的,所述方法还包括:在进行聚合前,在每条数据都打上当前时间戳标签,以支持对流式数据滑动窗口查询;其中滑动窗口与所述PostgreSQL数据库内置的聚合函数关联以实现滑动聚合。
[0011]进一步的,所述方法还包括:基于触发,对流式数据进行转换,并将转换后的流式数据作为另一个流式数据处理的输入,或将转换后的流式数据写入到外部数据存储中。
[0012]进一步的,所述数据接收者对接收到的流式数据,按照指定的时间间隔进行高吞吐数据聚合操作,包括:
[0013]数据接收者在通过FDW将数据插入到流式数据Stream后,通过ZeroMQ发送到对应
的多个并发的工作worker进程;
[0014]将工作进程写入到对应的聚合combiner进程,并通过聚合进程对数据进行聚合,最后将聚合后的数据写入对应的物理表中以生成流视图;其中所述聚合进程每隔预定时间进行数据聚合。
[0015]进一步的,所述方法还包括:为流失图设定存活时间以定期对流视图中的过期数据进行清理。
[0016]进一步的,所述方法还包括:当一个流视图造成了未预估的系统负载或抛出异常时需要在问题修复前让流视图暂时停止工作,当异常解决后,再次激活流视图处理流式数据。
[0017]进一步的,所述方法还包括:当一个流视图造成了未预估的系统负载或抛出异常时需要在问题修复前让流视图暂时停止工作,当异常解决后,再次激活流视图处理流式数据。
[0018]本申请的上述技术方案的有益效果如下:上述技术方案提出了一种基于高速并发消息框架的流式数据处理的方法,可以实现流式数据集上进行SQL查询,特别适用于数据的概要和聚合、基于滑动窗口的性能计算、文本索引和过滤等查询场景。使用此方法处理数据可减少流数据的输入,显著地减少持久化到磁盘中的数据量,因为聚合后的结果才被存储下来。原始数据(foreign table)一旦被需要它的持续查询读取后就会被销毁。此种技术可实现占用较小的硬件资源实现高效的大数据量处理。此外,原始数据流式写入后,会被已声明的流式查询实时地转换和提取,可成型的输出加载到数据库,而不必周期性地处理颗粒数据,可消除许多数据传输中的ETL过程,非常适用于要求能实时查询结果的需求。
附图说明
[0019]图1为本申请实施例的基于高速并发消息框架的流式数据处理的方法的流程示意图;
[0020]图2为ZMQ的工作流程示意图。
具体实施方式
[0021]为使本申请要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0022]近年来,国家电网公司加快打造具有全球竞争力的世界一流能源互联网企业的战略部署,贯彻公司“三型两网”战略,落实泛在电力物联网建设。为满足国家电网公司对电工装备实时监造和质量监督的需要,作为电工装备供应商,需要对国网公司要求的物资种类的生产制造和检验试验数据进行实时传输。电工装备业务面向的主体具有专业独特性,物资数据具有品类多样、生产工艺不一、关键数据采集类型和结果复杂的特性,尤其是不同生产工艺的电工装备数据更需要结合其生产过程进行评判和分析,并且随着各工厂侧终端的不断接入,必将不断产生海量、异构、多源的复杂数据,传统的云计算架构难以满足数据处理和前端服务的高效实时需求,海量数据集中接入极易造成网络拥塞。
[0023]专利技术人发现,关系数据库无法处理实时、高速、高吞吐流式数据;这样导致关系数据库无法应用在电力系统这样的复杂工况下。为此,专利技术人提出了一种在PostgreSQL数据
库下的基于高速并发消息框架的流式数据处理方法,用来在精简后的流式数据集上进行SQL查询,以增加关系数据库的功能。其主要的功能包括:概要和聚合;基于滑动时间窗口的性能计算;文本索引和过滤;空间信息过滤等。
[0024]在实现方面,本申请实施例的技术方案中,是采用:FDW(Foreign Data Wrappers,外部数据包装器)技术实现流式数据导入操作,以将流式数据发送到PostgreSQL数据库;PostgreSQL数据库采用高速并发消息框架模块高速接收数据;接收的流式数据按照指定的时间间隔进行高吞吐数据聚合操作,并将聚合后的数据持久化到数据库一张物化视图表中,从而可以使用SQL语言持续查询流式数据统计聚合结果;或者接收的流式数据进行实时转换后,存储到外部存储中或作为另一个流式输入。
[0025]本申请的实施例提出了一种应用于PostgreSQL数据库的基于高速并发消息框架的流式数据处理的方法。本申请的技术方案应用于PostgreSQL数据库,对PostgreSQL数据库采用FDW访问外部流式数,使用ZeroMQ接收FDW传入的流式数据,实现N对N的高速消息处理。其中,ZeroMQ是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于高速并发消息框架的流式数据处理的方法,其特征在于,包括:确定处理流式数据的关系数据库PostgreSQL,并在该中,关系数据库PostgreSQL通过SQL语句创建流式数据扩展模块;数据生产者针对流式数据Stream启用多个工作进程,并将数据插入到流失数据Stream中,并将流式数据随机发送到一个工作进程中;数据接收者通过基于ZeroMQ的API接口接收多个工作进程,并对应的将数据生产者发送来的数据发送到对应的队列里面,工作进程能够在对应的进程间通信获取数据;数据接收者对接收到的流式数据,按照指定的时间间隔进行高吞吐数据聚合操作,并将聚合后的数据持久化到数据库的流视图中;其中该流视图为一张物化视图表;使用SQL语言持续查询流式数据统计聚合结果,或将接收的流式数据进行实时转换后,存储到外部存储中或作为另一个流式数据处理的输入。2.根据权利要求1所述的方法,所述方法还包括:在进行聚合前,在每条数据都打上当前时间戳标签,以支持对流式数据滑动窗口查询;其中滑动窗口与所述PostgreSQL数据库内置的聚合函数关联以实现滑动聚合。3.根据权利要求1所述的方法,所述方法还包括:基于触...

【专利技术属性】
技术研发人员:裴振军钟金柱王伟
申请(专利权)人:北京许继电气有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1