一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向传感流数据的实时处理系统的制作方法

2022-04-20 22:02:37 来源:中国专利 TAG:
面向传感流数据的实时处理系统的制作方法

本发明涉及流式计算、实时计算和服务计算领域,尤其涉及一种面向传感流数据的实时处理系统。

背景技术

随着物联网、传感和移动设备、实时计算等技术的不断发展,正逐渐积累并形成一类新的大数据,这类数据来自于不同类型的传感设备,具有实时到达、持续不间断、变化快等特征,被称为传感流数据。传感流数据来自于物理世界和人类社会生产生活的方方面面,如社交网络、健康医疗、智慧城市、能源行业等,可以体现物理世界、人类社会生产生活的实际状态。不同来源的传感流数据被称为多源传感流数据。随着传感设备数据的激增,传感流数据涉及的领域也愈来愈广,其中蕴含的价值也就随之增加。对这类大规模多源传感流数据进行实时处理,深入加工和分析,提取其中有价值的部分,将对行业和社会信息化带来新的促动促进和影响。

传感流数据的处理需求复杂多变,业务人员要进行相应的算法定制,不仅需要相关的编程知识,更要应对繁琐的处理流程和冗长的开发周期。目前,大批开源的流数据处理框架和应用系统之间较为独立分散,没有形成一套从数据接入到计算再到数据应用服务化的流程。同时,流数据处理系统的配置与编写程序较为繁琐,所需的技术往往具有陡峭的学习曲线,用户无法把工作的重心放到业务逻辑本身。现有技术中公开了一些可视化流处理系统,如公开号为CN109710215A的专利文献《分布式流计算的可视化流程处理引擎及其使用方法》、公开号为CN110007913A的专利文献《可视化的数据处理流程设置方法、装置、设备及存储介质》以及公开号为CN110020021A的专利文献《基于可视化的数据流处理方法》等。分析上述文献中的技术细节可知,其对流式处理、实时计算与处理结果服务化的支持并不完整和完善,主要体现在以下几个方面:

第一,现有技术对流数据的处理业务支持不足。现有技术大多是针对流式处理提供一些细粒度的底层处理算子,如连接、映射、分组和过滤等操作。现有技术没有基于业务需求为用户提供一些粗粒度但具有共性的处理算子,对缺乏流式处理经验的用户十分不友好,系统的可扩展性也不够强。

第二,现有技术对自定义算子支持不足。现有技术大多基于大数据处理平台已有的处理算子的封装,没有提供给用户自定义算子的接口,存在对于某些特定业务无法完成的问题。

第三,现有技术对处理结果服务化支持不足。系统在对流数据进行实时处理后,需要将处理结果封装为接口提供给其他应用系统,或者以可视化的方式提供给用户。现有技术没有提供处理结果的二次分享和接入到其他系统中持续集成的便利。



技术实现要素:

为解决上述现有技术中存在的问题,提供一种面向传感流数据的实时处理系统,包括数据接入模块、流程配置模块、规则解析引擎模块、实时处理模块,其中:

所述数据接入模块用于注册并定义数据结构,构建实时流数据管道,为上层应用提供实时流数据接入;

所述流程配置模块用于通过交互页面选择并连接算子和配置相关参数值,构建流处理工作流程,所述交互页面上的算子包含预定的流处理算子以及自定义算子;

所述规则解析引擎模块用于解析所述流程配置模块构建的流处理工作流程,映射生成对应的流式处理任务,将所述流式处理任务下达到实时处理模块;

所述实时处理模块接收从规则解析引擎传来的所述流式处理任务,在流式处理平台上分布式地执行任务,生成处理结果。

优选的,所述的系统还包括服务化模块和服务监控模块,所述服务化模块将所述处理结果可视化展示,并通过WebSocket协议发送至应用系统和/或将处理结果封装为RESTful接口;所述服务监控模块实时监控所述流式处理任务的运行状态,并用于服务分享与服务重启。

优选的,所述流式处理平台为Flink分布式大数据处理引擎。

优选的,所述流处理算子包括数据源算子、流式处理算子、数据挖掘预处理算子和服务化算子。

优选的,所述数据源算子至少包括Kafka中的Topic、HBase、MySQL 和多源异构传感器中的一种。

优选的,所述流式处理算子至少包括根据时间戳多流合并、流拆分、数值过滤和窗口内求均值中的一种。

优选的,所述数据挖掘预处理算子至少包括异常检测、归一化、窗口内随机抽取和特征编码中的一种。

优选的,所述服务化算子至少包括写入Kafka、写入HBase、通过 Websocket协议发送和生成RESTful API中的一种。

优选的,所述实时流数据管道为基于发布/订阅的分布式消息系统 Kafka。

根据本发明的另一方面,还提供一种上述面向传感流数据的实时处理系统的使用方法,包括:

步骤S1:通过所述数据接入模块注册并配置数据源;

步骤S2:根据业务需求,通过所述流程配置模块将相应的数据源算子、流处理算子、数据挖掘预处理算子和服务化算子,连接构成并填写相应参数,构建流处理工作流程;

步骤S3:规则解析引擎模块对所述构建的流处理工作流程进行解析,根据其中包含的处理逻辑和相关参数,将其与本地代码库中的代码片段进行一一映射,组合成流处理及服务化作业;

步骤S4:所述实时处理模块运行步骤S3生成的流处理及服务化作业,根据作业中选择的服务化组件,通过服务化模块,在流式处理平台上分布式地执行任务,生成处理结果。

优选的,所述步骤S4还包括将将所述处理结果进行分布式存储、图表可视化和接口封装。

优选的,所述的使用方法还包括:

步骤S5:通过所述服务监控模块,实时监控流处理任务的运行状态,同时支持服务分享和服务重启功能。

与现有技术相比较,本发明的面向传感流数据的实时处理系统,能够通过简单易懂的拖拽组合连接方式来进行流数据的实时处理和处理结果的服务化,可以快速地实现流数据处理流程,并及时生成服务提供给其他用户或系统,满足对数据获取的不同需求。

附图说明

图1是根据本发明一个实施例的系统的功能模块图。

图2是根据本发明一个实施例的系统中,将用户自定义的流处理任务转换成的XML文件。

图3示出了根据本发明一个实施例的数据流逻辑图。

图4示出了根据本发明一个实施例的XML文件与数据流逻辑图的对应关系。

图5示出了根据本发明一个实施例的数据流图与代码片段的映射关系。

图6是根据本发明一个实施例的系统将数据流逻辑图映射成的Flink 任务。

图7示出了根据本发明一个实时例的Flink集群执行Flink作业的过程。

图8是根据本发明一个实施例的用户自定义的流处理任务的实例图。

图9是根据本发明一个实施例的实时处理结果可视化的实例图。

图10示出了根据本发明一个实施例的系统的模块架构图。

具体实施方式

下面结合附图和具体实施例对本发明加以说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

现有可视化流处理系统存在对自定义算子支持不足、流程配置繁琐和不支持处理结果服务化等问题,为解决上述问题,本发明提供一种面向传感流数据的实时处理系统,如图1所示,概括说来,包括数据接入模块、流程配置模块、规则解析引擎模块、实时处理模块、服务化模块和服务监控模块等六个模块,其中,规则解析引擎模块和实时处理模块是核心模块。以下逐一说明上述六个模块。

一、数据接入模块:所述数据接入模块用于注册并定义数据结构,构建实时流数据管道,为上层应用(如数据分析平台、数据展示平台、报表中心等)提供实时流数据接入。系统接入的绝大部分流数据都是原始未经处理的数据,这些数据种类繁多,格式不统一,需要在系统中进行注册并定义数据结构,构建实时流数据管道,再进行分析计算。数据接入模块支持接收的数据源包括来自传统数据库存储、分布式文件系统存储、消息队列、传感器直接接入等。通过数据接入模块注册数据源,并填写数据源相关信息,如IP、端口号、传输协议和数据流格式等。其中,传统数据库如 MySQL数据库和Oracle数据库,需要配置IP地址、端口号、数据库名和用户的帐号密码等信息;分布式文件系统存储如Hive,Hive是一个建立在Hadoop(Hadoop是支持数据密集型分布式应用程序的开源软件框架) 架构之上的数据仓库,需要配置HDFS文件路径或Hive表相关信息;消息队列如Kafka,需要配置IP地址、端口和Topic(主题)名称;传感器为支持MQTT(Message Queuing Telemetry Transport,消息队列遥测传输) 协议的任意传感器,需要配置IP地址、端口和所在分组的信息。根据本发明的一个实施例,用户通过数据接入模块注册数据源的流程包括:用户首先选择所需的数据接入模块,在模块的配置信息页面中填入相关参数(IP 地址、端口号、用户的账号密码等信息),点击『连通测试』按钮,系统会尝试与数据源建立连接,若连接成功,用户需要继续配置数据源的相关字段、字段类型和字段分隔符(制表符、逗号、斜线等)。

二、流程配置模块:包括流程配置页面,页面上有不同的算子,包括预定义算子和自定义算子,按功能分为数据源算子、流数据处理算子、数据挖掘预处理算子和服务化算子。每一个算子都与一个提前封装好的代码片段对应。

现有技术大多是针对流式处理提供一些细粒度的底层处理算子,如连接、映射、分组和过滤等操作。

其中,“连接”算子是指系统连接其他组件来接入或输出数据,因为分布式流处理框架需要通过连接数据库、HDFS和Kafka等组件,来实现数据源的接入和处理结果的输出。其中,Kafka是一个分布式、支持分区和多副本的基于ZooKeeper(ZooKeeper是为大型分布式计算提供分布式配置服务、同步服务和命名注册的软件框架)协调的分布式发布订阅消息系统,它的最大特性是可以实时处理大量数据以满足各种需求场景,例如基于Hadoop(Hadoop Distributed File System,Hadoop分布式文件系统)的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,Web/Nginx 日志、访问日志,消息服务等。其中,Storm是批量、分布式处理流式数据的计算框架,Spartk是开源集群运算框架。生产者发送至Kafka的数据被各个服务器发布到Kafka的Topic中,然后消费者通过消费这些Topic 来做实时的监控分析,或者装载到Hadoop、数据仓库中做离线分析和挖掘。

“映射”算子是指MapReduce(映射归纳,是Google提出的一个软件架构,用于大规模数据集的并行运算)中的Map(映射)操作,算子每次的输入为一条数据,在Map操作里对数据进行解析和处理后,输出一或多条数据。Map操作的具体操由用户自己定义和实现,例如,输入为“20200725\3.1415926”,用户自定义的Map操作为将输入的数据根据制表符“\”切割为两条数据,经过Map操作后,输出为“20200725”和“3.1415926”。

“分组”算子是根据数据的键值进行分类,将同类的数据分组归纳到一起,并将分组后的数据进行简单数学计算。

“过滤”算子是根据用户提前设定的判断条件,对所有数据进行判断,结果为真的数据保留下来,其他数据被丢弃。

本发明基于业务需求为用户提供一些粗粒度但具有共性的处理算子。

根据本发明的一个实施例,数据源算子包括连接Kafka中Topic的算子、连接HBase的算子、连接MySQL的算子和连接多源异构传感器的算子。

根据本发明的一个实施例,流式处理算子包括根据时间戳内连接、流拆分、数值过滤和窗口内求均值等算子。其中,“根据时间戳内连接”算子是将多条输入的数据流中的每条数据,根据数据的时间戳进行关联操作,将时间戳相同的数据关联在一起成为一条数据,不能被关联的数据则被丢弃,实现多条数据流合并成一条数据流。“流拆分”算子将一条数据流拆分为多个数据流。用户指定数据中某个字段,再指定判断条件,对数据流中每条数据做判断,将判断结果相同的数据输出到同一条数据流,实现将一个流划分为多个流。“数值过滤”算子是将数据流中不符合规则的数据过滤掉。用户指定判断条件,对数据流中的每条数据做判断,结果为真的数据保留下来,结果为假的数据被过滤掉。“窗口内求均值”算子的含义是指对一段时间窗口内的数据计算出均值。对于流处理系统,流入的数据是无限的,所以对于聚合或连接等操作,流处理系统需要对流入的数据进行分段,然后基于每一段数据进行相关操作。消息的分段即称为窗口,流处理系统支持的窗口有很多类型,最常见的就是时间窗口,基于时间间隔对消息进行分段处理。

根据本发明的一个实施例,数据挖掘预处理算子包括归一化、删除列、异常检测、窗口内随机抽取和特征编码等算子。其中,“归一化”算子是把数字型数据根据数据的取值范围映射到0到1范围之内再进行处理,例如,某条数据流中的数据的取值范围为0~100,则将实际值为65的数据映射为0.65。“删除列”算子是指一条数据流中的数据可能有多个列,将其中的某一列数据删除。“异常检测”算子是根据设定的阈值判断输入的数据是否异常,异常的数据会被打上“异常”标签,正常的数据会被打上“正常”标签。“窗口内随机抽取”算子是在一段时间窗口内,根据用户设置的抽取比例,按比例随机抽取出一部分数据,没有被抽取到的数据会被丢弃掉。“特征编码”算子是把输入数据中的标签列作为特征向量进行编码,例如采用机器学习中的One-Hot编码。

根据本发明的一个实施例,服务化算子包括写入Kafka、写入HBase、通过WebSocket协议发送和生成RESTful API等算子。其中,写入Kafka 是指写入Kafka中的主题Topic(一个Topic可作为一个流处理任务的消息队列);HBase是一个开源的非关系型分布式数据库(NoSQL),运行于 HDFS文件系统之上,它可以对稀疏文件提供极高的容错率;WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层;RESTful API是符合REST设计风格的Web API,REST (Representational State Transfer,表现层状态转换)是基于超文本传输协议 (HTTP)的万维网络服务的软件架构风格。

根据本发明的一个实施例,流程配置模块还支持自定义算子,通过上传的自定义算子以满足不同的业务需求和提高系统的可扩展性。自定义算子例如包含能被Flink DataStream API中窗口算子调用的流式处理相关代码,能以jar包的形式上传到系统并被系统解析。Flink是分布式的流处理框架,Flink DataStream API提供对数据流进行流处理操作的API (Application Programming Interface,应用编程接口)。根据本发明的一个实施例,在上传自定义算子后,可以通过前端页面将上传的自定义算子进行注册,包括为算子命名和配置参数,注册后的算子可以在流程配置页面上直接使用。为了规范用户自定义算子的使用范围,系统将范围限定在 Flink自带的窗口算子中,Flink的窗口算子中有apply()方法,用户自定义的算子将会在该方法中被调用,实现对流数据进行判断。用户利用系统的功能将实现的用于实现业务逻辑的java代码进行编译打包,注册自定义算子后,这个jar包会被系统发送至Flink集群上用于存储依赖库的文件夹下。根据java的类加载机制,用户自定义的流处理逻辑在JAVA虚拟机动态加载,并在流处理任务中产生作用。

在流程配置页面中,可用拖拽方式选取算子,以连线的方式将具有前后逻辑关系的算子连接,可配置相关参数或在自定义算子的配置页面上填写java语言代码做逻辑判断,来自定义流数据处理及服务化的过程,快速又自然地实现流数据处理及服务化的任务,从而解决业务需求多变的问题。在前端页面通过拖拽连接算子所定义的数据处理流程,可以例如以XML 文件的形式存储。数据处理流程以XML中不同层次的元素展现,如图2 所示,XML文件中的元素分为operator(算子)和connector(连接类)。每个算子对应一个operator,具有唯一id,通过前端页面为自定义算子配置的参数以键值对(key-value)形式存在。具有前后依赖关系的算子之间的连线通过连接类connector进行记录,connector的实际含义为算子间的依赖关系,每个connector保存了其前驱和后继的operator的id。图2中定义了三个算子,分别是Datasource、DataClean和Datasink。Datasource 算子是数据源算子,表示用户选择从Kafka中接入数据,其中配置的三个 parameter表示用户需要连接的Kafka的IP地址、端口号和主题名称。 DataClean算子是数据清洗算子(即数据过滤算子),用户手动配置一个阈值(如案例中parameter的threshold为40),凡是大于阈值的数据都会被清洗掉。Datasink算子为数据汇算子(即服务化算子),表示用户选择将处理后的结果写入Kafka中,其中配置的三个parameter表示用户需要发往的Kafka的IP地址、端口号和主题名称。

三、规则解析引擎模块:规则解析引擎模块接收由流程配置模块生成的包含操作逻辑及相关参数的XML文件并进行解析,再提交至分布式集群上的实时处理模块。规则解析引擎模块遍历XML文件中的每个operator 和connector,将XML文件转换为数据流逻辑图,用于指导数据流的实现。 XML描述的是一种中间形式,可以轻松地将工作流转换为数据流逻辑图。图3示出了根据本发明一个实施例的数据流逻辑图,数据流逻辑图是一种有向无环图,用于重新编码任务流程的执行过程,图中的顶点称为算子,表示计算,例如,图3中的Source、Operator、Sink是算子,图中的边表示数据依赖关系。算子是数据流程序的基本功能单元,它们从输入获取数据,对其进行计算,然后产生数据并发往输出以供后续处理,没有输入端的算子称为数据源,没有输出端的算子称为数据汇。一个数据流逻辑图至少要有一个数据源和一个数据汇。图4示出了根据本发明一个实施例的 XML文件与数据流逻辑图的对应关系,其中,XML文件中有三个operator 元素,两个connect元素,从第1行至第5行是第1个operator元素,其 class属性是Datasource,是数据源算子,对应于数据流图中的Datasource 顶点,其name属性是CPUSensor1,其三个parameter子元素的属性key分别是ip、port、topic,分别表示数据源的IP地址、端口号、topic,属性value 对应于ip、port、topic的具体值。XML文件中的第6至8行是第2个 operator元素,其class属性是DataClean,是数据过滤算子,其name属性是DataClean,对应于数据流图中的DataClean顶点,其包含一个parameter 子元素,该元素的key属性是threshold,表示是阈值,其value属性是40,表示阈值是40。XML文件中的第9至13行是第3个operator元素,其 class属性为Datasink,表示数据汇算子,其name属性是DataCleanTopic,对应于数据流图中的Datasink顶点,其三个parameter子元素的key属性分别是ip、port、topic,表示数据汇的IP地址、端口号、topic,属性value 对应于ip、port、topic的具体值。XML文件的第14行为第1个connect元素,其属性from_op和to_op表示数据流的流出算子和流入算子,由于 from_op为CPUSensor1(第1个opertator的名称),to_op为DataClean(第 2个operator的名称),因此,其对应于数据流图中的Datasource顶点指向 DataClean顶点的有向边。XML文件的第15行是第2个connect元素,由于其from_op为DataClean(第2个opertator的名称),to_op为 DataCleanTopic(第3个operator的名称),其对应于数据流图中的DataClean 顶点指向Datasink顶点的有向边。

后端程序根据广度优先遍历算法解析数据流逻辑图,将其中的每一个算子与提前封装好的代码片段做映射,并填入相关参数,组合出可执行的任务代码。这些参数中,一部分参数,如数据源的信息、异常检测的阈值和REST服务的信息等,是用户在流程配置模块的前端页面上配置好的,另一部分参数,如数据在流处理过程中在算子间传递的格式,是系统在解析数据流逻辑图的过程中根据前驱节点计算出的。图5示出了根据本发明一个实施例的数据流图与代码片段的映射关系,其中,501表示数据流处理流程的数据流图,该图中包括数据源、流式处理和服务化三个顶点,有向边表示数据流向。502表示映射的代码片段,分别是数据源代码片段、流处理代码片段和服务化代码片段,参数包含两部分,分别是传入参数和根据前驱节点计算出的参数。代码片段和参数共同构成了Flink作业的代码,图6示出了根据本发明一个实施例的Flink作业的代码,即一个能在分布式流处理引擎Flink上运行的任务。最后,规则解析引擎模块将Flink 作业提交至实时处理模块。

四、实时处理模块:是系统中执行流式处理任务的功能模块,目的是对系统接收到的流数据进行实时的分析处理。实时处理模块接收来自规则解析引擎模块的Flink作业,通过javax库中的JavaCompiler进行编译,然后打包成一个包含了数据流逻辑图、执行代码对应的class文件、相关的类库以及其他资源的JAR文件,再通过http请求提交至Flink集群。基于在服务器集群上部署的Flink,本系统采用Flink提供的RESTful接口向集群提交Flink任务的JAR包,Flink可根据用户在前端配置的并发度将作业自动分解成多个流处理任务,依靠Flink提供的高吞吐低延迟计算能力,将流处理任务分布在集群中并发执行。其中,Flink自带的RESTful接口,不仅可以用来提交、启动和取消Flink作业,也可以用来查询正在运行的作业以及最近完成的作业的状态和统计信息。例如上传jar包的接口为 ip:8000/jars/upload,对该接口发送携带jar包的post请求,可以将jar包上传至Flink集群。图7示出了根据本发明一个实时例的Flink集群执行 Flink作业的过程,其中,Flink作业是由规则解析引擎模块生成,经过编译打包生成例如名称为Task.jar的JAR文件,将Task.jar文件通过Restful API提交到Flink集群,Flink生成多个并发任务,分别为Task 1、Task 2、… Task n,Flink将上述多个任务分布在集群中并发执行。

五、服务化模块:提供处理结果的可视化展示,也可将处理结果通过 WebSocket协议发送至应用系统,或将处理结果封装为RESTful接口。根据本发明的一个实施例,服务化模块将实时处理模块中计算得到的数据结果,以服务化的形式提供给用户或其他应用系统。系统为其他应用系统提供可视化图表展示、写入Kafka中的主题Topic(一个Topic可作为一个流处理任务的消息队列)、写入HBase、写入MySQL、通过WebSocket协议发送以及动态生成RESTful API。根据本发明的一个实施例,为了将处理结果直观、丰富的展现给用户,通过系统的计算处理,得到的结果需要以柱状图、折线图、饼图、散点图、K线图等可视化图表在前端进行展示,本系统使用开源插件ECharts进行可视化展示,图9是根据本发明一个实施例的实时处理结果可视化的实例图,其中,以曲线形式展示了火电厂工业设备的实时值和预测值。

根据本发明的一个实施例,为了实现接口格式的统一,系统统一使用 REST接口服务化模块,提供了标准化的使用方法,对外提供统一的接口,保证复杂环境下的可靠传输,便于不同的应用系统和用户使用。例如,集群ip为10.5.81.243,用户在前端配置的接口名称为“AnomalyDetectionREST_1”,端口号为9092,则系统生成的REST接口为10.5.81.243:9092/AnomalyDetectionREST_1。

服务的生命周期与流处理任务同步,可动态生成或取消,随着流处理任务的生成而生成,随着流处理任务的取消而取消。用户可以根据自己的业务需求,选择合适的服务化接口,服务会随着流处理任务的启动和杀死,相应地生成和取消。当流处理任务启动时,服务自动生成,用户可以在服务展示页面选择相应的服务;当流处理任务被杀死后,服务也会随之被取消。

六、服务监控模块:提供流处理任务运行状态的实时监控,并提供服务分享与服务重启功能。服务监控模块将流处理任务的运行状态展示给用户,并提供服务分享和服务重启功能。该模块将实时监控集群上所有正在运行或运行完成的流处理任务,将流处理任务的运行状态(如吞吐率、CPU 使用率和内存使用率等)以折线图的形式展现出来,方便用户观察每个任务的运行状态,来避免集群上CPU使用率过高等问题;同时将流处理任务的运行参数(如开始时间,持续时间,结束时间和当前是否完成等参数) 以表格的形式展示出来,方便用户来判断任务是否完成或运行超时。服务分享功能是指用户可将流处理及服务化任务的流程和配置信息保存并分享给他人,实现方法是将任务流程XML持久化存储。服务重启功能是指用户可以将之前运行完成或手动取消的任务重新启动。

图10示出了根据本发明一个实施例的系统的模块架构图,其中也给出了系统的使用方法。根据本发明的一个实施例,提供一种面向所述传感流数据的实时处理系统的使用方法,包括以下步骤:

步骤S1:用户通过数据接入模块指定流数据源信息和流数据源的结构信息。例如,用户首先要在系统上注册配置数据源,数据源是获取流数据的来源,用于指定流数据从哪接入,包括从Kafka中的Topic接入、从HBase 中接入,从MySQL中接入等,并填写数据源相关参数,如IP、端口号、传输协议和数据表名等。用户按照真实数据流格式填写分隔符、字段名称、编码等结构信息,并通过流数据源管理页面将配置好的流数据源信息和流数据源的结构信息以XML的形式提交到本系统中,存储到例如系统的 MySQL数据库中。

步骤S2:用户根据业务需求,通过流程配置模块上传或选择相应的数据源、流处理算子、数据挖掘预处理算子和服务化算子,并填写相应参数。流程配置模块将用户自定义的流处理及服务化过程映射为相应的XML文件。例如,通过系统前端可视化界面选择相应的流处理算子,再配置任务的相关参数,将各个算子按照数据流逻辑连接起来,自定义创建流数据处理及服务化任务。

系统提供的操作算子包括数据源、流处理算子、数据挖掘预处理算子和服务化算子。其中,流处理算子包括:根据时间戳合并流、根据Key值拆分流、窗口内求计算、归并和数值过滤等;数据挖掘预处理算子包括:特征选择、缺失值填充、异常检测、特征编码和XGBoost预测器等;服务化算子包括:写入Kafka、写入MySQL、通过WebSocket协议传输和生成 RESTful API等。

根据本发明的一个实施例,要定义一个自定义流处理算子,首先,用户要在本地编写好能被Flink DataStream API中的窗口算子调用的流式处理相关的代码,将自定义的流处理算子以jar包格式封装好。

然后,用户例如通过前端页面上的“上传”按钮,选择上传本地的Jar 包,系统会将jar包发送至Flink集群上用来存储依赖库的文件夹下。上传后,用户要通过前端页面上的算子注册功能,为自定义算子命名,注册完成后,在前端页面上自动生成对应的自定义算子。用户自定义的流处理算子与系统自带的流处理算子使用方法相同。通过拖拽选择自定义算子,配置信息和连接算子,用户可以轻松定义一个流处理任务,如图8所示,801 为用户自定义的流处理任务,802为页面调整工具,包括放大、缩小和清空等功能,803为自定义算子的信息配置模块。流程配置模块将用户自定义的流处理及服务化过程映射为相应的XML文件。

步骤S3:规则解析引擎模块对步骤S2定义中生成XML文件进行解析,根据其中包含的处理逻辑和相关参数,将其与本地代码库中的代码片段进行一一映射,组合成流处理及服务化作业,并提交至实时处理模块。根据本发明的一个实施例,规则解析引擎模块对步骤S2定义中生成的 XML格式的流处理过程定义文件进行解析,转换成数据流逻辑图,根据其中包含的处理逻辑和相关参数,将operator节点与系统代码库中的Flink代码字符串片段通过自定义算子的名称进行映射,并将配置参数匹配到代码片段中;根据XML文件中的connector元素形成有向无环图DAG,再通过深度优先遍历DFS遍历各个operator节点,将代码片段有序组合成基于 Flink的流处理及服务化作业,再提交至流式处理平台上的实时处理模块。

步骤S4:通过实时处理模块运行步骤S3生成的流处理及服务化作业,根据作业中选择的服务化算子,通过服务化模块,将实时处理得到的结果进行分布式存储,图表可视化和接口封装。根据本发明的一个实施例,通过实时处理模块应用javax库中的JavaCompiler编译和打包步骤S3生成的流处理及服务化作业,生成一个包含数据流逻辑图、执行代码、相关类库和其他资源的JAR包。集群上的Flink运行JAR包,从数据源中接入实时的传感流数据,进行分布式计算。根据作业中选择的服务化算子,根据服务路由,将实时处理得到的结果进行分布式存储或动态封装成可调用的接口提供给其他系统,并以可视化图表动态展示,以及在系统页面上直观显示实时处理的结果。如图9所示,系统将真实值和预测值两条数据流进行了动态的可视化展示,方便用户监控结果。

步骤S5:通过服务监控模块,实时监控流处理任务的运行状态,并支持服务分享和服务重启功能。根据本发明的一个实施例,通过服务监控模块实时监控在集群上正在运行或已完成的流处理任务。通过监控每个任务的内存使用率和CPU使用率的信息,可以适当地取消一些占用集群资源过大的任务,从而保证集群上其他任务的运行速度。实时到达的数据会暂时存放在消息队列Kafka中,等待Flink消费,取消一些任务不会导致数据丢失。每个任务的状态包括正在运行、已完成、已取消和运行错误。对于每个任务,可以通过服务分享功能,将保存任务配置流程和配置信息的 XML文件下载保存并分享给他人;对于已完成或者已取消的任务,可以将任务重新启动,系统将数据库里持久化保存的任务XML文件重新编译打包并提交至集群运行。

本发明针对目前传感流数据处理技术中,因为传感流数据的数据量大、实时到达、持续不间断、有序性且数据价值对时间敏感等特征,以及各类流数据处理框架互相独立,导致的业务人员开发效率低的问题,给出了一种基于可视化界面配置流数据处理过程并将处理结果服务化的系统的设计与实现。能够通过简单易懂的拖拽组合连接方式来进行流数据的实时处理和处理结果的服务化,简化开发人员的配置工作。并设计了一套规则引擎将数据处理逻辑映射成对流数据的基本操作单元的组合连接,同时系统利用现有的HBase、Kafka以及Flink实现了高吞吐和低延迟的数据处理需求。

综上所述,本发明基于Flink分布式计算框架和流程建模技术,将IoT (Internet of Things,物联网)背景下的传感流数据处理及处理结果的服务化封装成为一种服务提供给用户。系统允许用户注册数据源、上传并拖拽组合流数据处理和服务化算子、配置相关参数,来定义传感流数据处理及服务化的过程,快速又自然地实现传感流数据处理及服务化的任务,将处理结果进行图表可视化展示或经由服务路由实时推送到其它应用系统,满足不同的业务需求。

应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献