一种基于Flink流计算技术的多源异构数据实时处理系统及方法与流程

文档序号:18704186发布日期:2019-09-17 23:24阅读:2290来源:国知局
一种基于Flink流计算技术的多源异构数据实时处理系统及方法与流程

本发明涉及一种多源异构数据实时处理系统及方法,特别是涉及一种基于flink流计算技术的多源异构数据实时处理系统及方法。



背景技术:

在互联网+时代,为了适应业务的快速开发、弹性伸缩等需求,企业的it系统架构正向docker容器集群和微服务方向演进,这种架构提高了资源利用率、带来了更大的灵活性、支持高并发场景。

但是随着业务规模的扩大、服务之间调用关系复杂度的增加,日志输出量越来越多,在面对故障和性能问题时,分析的难度更大,因此,如何对系统输出的大量数据进行分析,找出其中有价值的信息,帮助运维人员提高效率,为现有的业务分析系统提供补充是亟待解决的问题,由此,多源异构数据实时处理技术应运而生。

目前,为解决当前问题,多源异构数据实时处理技术主要是通过建立自定义数据实时处理任务对文件日志、agent输出、消息队列等多种来源输出的数据进行清洗切分,灵活地配置数据集的维度和指标生成时序数据,图形化展现数据集中的数据,根据已配置的报警规则通知联系人,减轻运维人员的压力,找到和业务相关的有价值信息。

然而,针对该问题,目前的多源异构数据实时处理技术的解决方法还存在一些不足之处:

1、没有提供可以构建数据清洗和切分规则的可视化图形界面,而是通过配置文件实现。

2、日志数据没有转换为结构化的时序数据,从而无法按照时间、维度进行指标值分组计算。

3、没有提供可配置的数据交互图表展现界面。

flink是一个高效的基于内存计算的分布式数据处理平台,是apache的顶级项目之一。它的核心是一个流式数据流引擎(streamingdataflowengine),提供了数据流的分布式数据分布、通信和容错功能,具有高效、可靠、可扩展等特性,并且与hadoop生态系统有着很好的兼容性。flink使用dataset来描述并行计算的数据集,并对相应的数据集提供了丰富的诸如map、reduce、join、group之类数据处理接口。然而,目前,还未出现基于flink流计算技术的多源异构数据实时处理技术。



技术实现要素:

为克服上述现有技术存在的不足,本发明之目的在于提供一种基于flink流计算技术的多源异构数据实时处理系统及方法,通过对现有业务系统中输出的多种来源不同结构的大量数据进行分析,通过关键信息匹配业务经过的所有系统处理节点,找到日志事件和业务之间的相关性,帮助运维人员提高效率,为现有的业务分析系统提供补充。

为达上述目的,本发明提出一种基于flink流计算技术的多源异构数据实时处理系统,包括:

数据采集侧,用于通过日志方式和/或sdk方式和/或mq方式同时获取分散在多个系统组件中的异构数据,经过初步处理后以连续流的方式发送给kafka;

任务管理平台侧,用于配置数据源类型、配置异构数据的清洗和切分规则以及配置数据集的维度和指标,并于所有配置完成后基于flink流计算技术启动数据实时处理任务,并于数据实时计算后根据数据集定义存入存储单元;

数据展现和输出侧,用于获取数据集中的结果以图表方式展现或者通过接口方式输出。

优选地,所述日志方式为利用日志数据采集器实时读取指定日志文件的新增内容,发送给日志搜集模块,将获得的数据经日志搜集模块过滤后送入kafka;所述sdk方式为支持应用或容器中嵌入agent上传数据作为数据源,agent上传数据给后台服务,数据经过后台服务处理后进入kafka;或由agent直接把数据发送给kafka作为数据源;所述mq方式为支持kafka消息队列作为数据源,数据直接发送给kafka。

优选地,所述任务管理平台侧包括:

配置单元,用于配置数据源类型、配置异构数据的清洗和切分规则以及配置数据集的维度和指标;

数据处理单元,用于于所有配置完成后基于flink流计算技术启动数据实时处理任务,并于数据实时计算后根据数据集定义存入存储单元,每个数据实时处理任务对应一个flink数据切分任务,一个任务中可以有多个数据集,每个数据集对应一个flink数据集计算任务。

优选地,于配置数据源类型时,若选择日志数据作为数据源,则需要输入日志路径,若选择嵌入sdkagent上报数据作为数据源,则需要输入sdkagent的accesskeys,若选择mq作为数据源,则需要输入kafka的topic。

优选地,于配置异构数据的清洗和切分规则时,采用图形拖拽积木块的方式构建数据切分规则,并于获取抓取的实时数据后,数据切分预览根据定义的数据切分规则进行试切分。

优选地,于配置数据集的维度和指标时,根据切分后的数据定义数据集,并需输入过滤条件、聚合维度、统计指标、时间字段等参数。

优选地,所述数据处理单元进一步包括:

flink清洗和切分单元,用于消费kafka中的数据,根据切分规则对数据切分和逻辑处理,并将切分数据再次放入kafka;

flink计算单元,从kafka消费数据后按照时间、维度实时聚合计算,并将计算后的结果存入存储单元;

存储单元,包括elasticsearch搜索服务器以及influxdb时序数据库,所述elasticsearch搜索服务器用于存储原始数据,所述influxdb时序数据库用于保存所述flink计算单元聚合计算后的时序数据。

优选地,所述配置单元还用于配置自定义报警规则,所述数据处理单元还包括flink报警处理单元,用于从kafka的topic中消费数据后,根据所述报警规则实时判断是否需要报警,生成报警记录,并通知联系人。

优选地,所述任务管理平台侧还包括查询单元,用于根据获取的输入条件查询每个数据集中已经计算完成的数据。

为达到上述目的,本发明还提供一种基于flink流计算技术的多源异构数据实时处理方法,包括如下步骤:

步骤s1,于数据采集侧,通过日志方式或sdk方式或mq方式同时获取分散在多个系统组件中的异构数据,经过初步处理后以连续流的方式发送给kafka;

步骤s2,于任务管理平台侧,配置数据源类型,配置异构数据的清洗和切分规则以及配置数据集的维度和指标,并于所有配置完成后基于flink流计算技术启动数据实时处理任务,并将数据实时计算后根据数据集定义存入时序数据库;

步骤s3,获取所述任务管理平台侧数据集中的结果以图表方式展现或者通过接口方式输出。

与现有技术相比,本发明一种基于flink流计算技术的多源异构数据实时处理系统及方法通过对现有业务系统中输出的多种来源不同结构的大量数据进行分析,通过关键信息(如traceid、订单号等)匹配业务经过的所有系统处理节点,找到日志事件和业务之间的相关性,帮助运维人员提高效率,为现有的业务分析系统提供补充。

附图说明

图1为本发明一种基于flink流计算技术的多源异构数据实时处理系统的结构示意图;

图2为本发明一种基于flink流计算技术的多源异构数据实时处理方法的步骤流程图;

图3为本发明具体实施例中基于flink流计算技术的多源异构数据实时处理系统的功能模块图;

图4为本发明具体实施例中基于flink流计算技术的多源异构数据实时处理系统的逻辑架构图。

具体实施方式

以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

在介绍本发明之前,先介绍本发明所涉及的几个开源组件:

1、elasticsearch

作为终极日志的存储组件,可实现分布式的存储、实时搜索和海量数据分析,并可将日志持久化到磁盘。而且提供开源的restfulapi接口实现日志的直接导入。

2、logstash

可以收集各种格式和来源的数据,可按需要的存储格式编写解析脚本,实现数据格式的统一化输出。

3、filebeat

为轻量化的日志采集组件,可在服务器上安装,实现日志的持续收集和发送。

4、kafka

为一种高吞吐量的分布式发布订阅消息系统,能够持久性和容错性的存储日志流,可以解决日志收集的速度和处理的速度不一致问题。

图1为本发明一种基于flink流计算技术的多源异构数据实时处理系统的结构示意图。如图1所示,本发明一种基于flink流计算技术的多源异构数据实时处理系统,包括:

数据采集侧10,用于通过日志方式或sdk(softwaredevelopmentkit,软件工具包)方式或mq(messagequeue,消息队列,也叫消息中间件)方式同时获取分散在多个系统组件中的异构数据,经过初步处理后以连续流的方式发送给kafka。在本发明具体实施例中,数据采集侧10采集到的异构数据例如除了有时间戳、调用链跟踪traceid、错误堆栈、应用服务等系统信息外,还有和业务相关的订单号、手机号、商品标识等信息,本发明不以此为限。

所述日志方式指的是利用日志数据采集器实时读取指定日志文件的新增内容,发送给日志搜集模块,将获得的数据经日志搜集模块过滤后送入kafka,在本发明具体实施例中,于所述在数据采集侧10的服务器中安装filebeat轻量型日志采集器,它能够读取并转发日志行,还可以从中断的位置重新开始,读取数据上传logstach,并于所述logstach中配置数据的过滤规则,多个filebeat上传的数据通过logstach过滤处理后进入kafka,也就是说,数据采集侧10支持日志文件作为数据源,利用filebeat实时读取指定日志文件新增内容,发送给logstach,数据经过logstach过滤后进入kafka;

所述sdk方式指的是支持应用或容器中嵌入agent上传数据作为数据源,agent上传数据给后台服务,数据经过后台服务处理后进入kafka,当然agent也可以直接把数据发送给kafka作为数据源;

所述mq方式指的是支持kafka消息队列作为数据源,数据直接发送给kafka。

任务管理平台侧20,用于配置数据源类型,配置异构数据的清洗和切分规则以及配置数据集的维度和指标,并于所有配置完成后基于flink流计算启动数据实时处理任务,并于数据实时计算后根据数据集定义存入存储单元。

具体地,任务管理平台侧20包括:

配置单元201,用于配置数据源类型,若选择日志数据作为数据源,则需要输入日志路径,若选择嵌入sdkagent上报数据作为数据源,则需要输入sdkagent的accesskeys,若选择mq作为数据源,则需要输入kafka的topic,在本发明具体实施例中,配置单元201支持配置多种数据来源,并且试抓取上传的数据,检验配置的数据源是否正确;配置单元201还用于配置异构数据的清洗和切分规则,在本发明具体实施例中,可通过在web管理控制台界面中通过图形化积木块方式进行定义切分规则,支持单、多分隔符切分器和简单的逻辑运算,输入测试数据预览清洗和切分结果,具体地,配置单元20可通过web管理控制台界面采用图形拖拽积木块的方式构建数据切分规则,并于获取抓取的实时数据后,数据切分预览根据定义的数据切分规则进行试切分,以帮助使用者判断切分规则配置的是否正确;配置单元20还用于配置数据集的维度和指标,即根据切分后的数据定义数据集,需要输入过滤条件、聚合维度、统计指标、时间字段等参数,一个实时数据计算任务可以定义多个数据集,数据集基于切分后的数据进行实时计算。

数据处理单元202,于所有配置完成后基于flink流计算技术启动数据实时处理任务,并于数据实时计算后根据数据集定义存入时序数据库。在本发明中,每个数据实时处理任务对应一个flink数据切分任务,一个任务中可以有多个数据集,每个数据集对应一个flink数据集计算任务,任务启动后,任务对应的切分任务和所属的数据集计算任务全部启动,数据源中的新增数据最终都会进入kafka,flink数据切分任务消费kafka中的数据,根据切分规则对数据切分和逻辑处理,切分处理结果再次放入kafka,flink数据集计算任务从kafka消费数据后按照时间、维度实时聚合计算后存入时序数据库。

具体地,数据处理单元202进一步包括:

flink清洗和切分单元2021,用于消费kafka中的数据,根据切分规则对数据切分和逻辑处理,并将切分数据再次放入kafka;

flink计算单元2022,从kafka消费数据后按照时间、维度实时聚合计算,并将计算后的结果存入存储单元2023,具体地说,flink计算单元2022从kafka的topic中消费数据后,则根据数据集定义按照时间、维度分组聚合计算指标、复合指标值,计算后存储入时序数据库。需说明的是,每个数据集都有各自对应的flinkjob任务,可以消费同一个kafkatopic中的已切分数据,生成不同的数据集。

存储单元2023,用于存储相关数据。在本发明具体实施例中,存储单元2023包括elasticsearch搜索服务器以及influxdb时序数据库,其中elasticsearch搜索服务器用于存储原始数据,influxdb时序数据库用于保存flink计算单元2022聚合计算后的时序数据。

在本发明具体实施例中,数据采集侧10采集到的异构数据中除了有时间戳、调用链跟踪traceid、错误堆栈、应用服务等系统信息外,还有和业务相关的订单号、手机号、商品标识等信息,于任务管理平台侧20根据所述配置异构数据的清洗切分规则、聚合数据集的维度和指标,把订单号、时间戳、调用链跟踪traceid数据存储在一个数据集中,启动flink实时计算任务后,业务和系统双向关联的数据就会进入数据集,这样就可以通过关键信息(如系统跟踪traceid、订单号等)匹配业务经过的所有系统处理节点。

优选地,配置单元201还可配置自定义报警规则,每个新建报警需要输入上一步定义的数据集、报警通知方式和通知对象、报警规则,在本发明具体实施例中,每条报警规则需要输入以下参数:

·最近几分钟

·数据集中的指标

·平均值、合计、最大值、最小值

·大于等于、小于等于、环比上升/下降%、昨日同比上升/下降%

·阀值

一个报警任务内可以定义多条报警规则。

相应地,数据处理单元202还包括flink报警处理单元,用于从kafka的topic中消费数据后,根据报警规则实时判断是否需要报警,生成报警记录,并通知联系人,例如采用短信或者邮件方式通知联系人。

优选地,所述任务管理平台侧20完成任务和报警规则的定义后,可以启动和停止任务,即所述任务管理平台侧20可以启动、停止实时数据处理flink任务,flink清洗和切分单元2021的数据切分任务、每个数据集的数据计算任务(flink计算单元2022)、报警任务(flink报警处理单元)都作为一个单独的flinkjob运行。每个数据集计算完成的数据放入时序数据库influxdb。如果符合报警规则,报警任务生成报警记录并通知联系人。

优选地,所述任务管理平台侧20还包括查询单元,用于查询每个数据集中已经计算完成的数据。具体地,所述任务管理平台侧20可通过web管理控制台界面获取输入时间范围、时间间隔查询每个数据集中已经计算完成的数据。也就是说,所述任务管理平台侧20还提供数据集中数据的外部查询功能,外部带参数的http查询请求发送到后台服务,查询结果放在response中以json串形式返回。

优选地,所述任务管理平台侧20还可通过于web管理控制台界面中定义数据集中数据的图表展现方式,输入数据集编号及其需要展现的指标、选择图表类型及其配置项后,可根据已配置项以图表方式显示数据集中的数据,在本发明具体实施例中,所述web管理控制台界面使用antdesignreact.js前端框架读取postgresql中的任务配置数据,使用bizcharts.js以图表方式展现存储在influxdb数据集中的时序数据。

数据展现和输出侧30,用于获取数据集中的结果以图表方式展现或者通过接口方式输出,也就是说,本发明提供外部接口输出保存在数据集中的时序数据,用户获取数据后自行设计图表展现数据。

图2为本发明一种基于flink流计算技术的多源异构数据实时处理方法的步骤流程图。如图2所示,本发明一种基于flink流计算技术的多源异构数据实时处理方法,包括如下步骤:

步骤s1,于数据采集侧,通过日志方式或sdk方式或mq方式同时获取分散在多个系统组件中的异构数据,经过初步处理后以连续流的方式发送给kafka。

所述日志方式指的是利用日志数据采集器实时读取指定日志文件的新增内容,发送给日志搜集模块,将获得的数据经日志搜集模块过滤后送入kafka,在本发明具体实施例中,于所述在数据采集侧10的服务器中安装filebeat轻量型日志采集器,它能够读取并转发日志行,还可以从中断的位置重新开始,读取数据上传logstach,并于所述logstach中配置数据的过滤规则,多个filebeat上传的数据通过logstach过滤处理后进入kafka,也就是说,数据采集侧10支持日志文件作为数据源,利用filebeat实时读取指定日志文件新增内容,发送给logstach,数据经过logstach过滤后进入kafka;

所述sdk方式指的是支持应用或容器中嵌入agent上传数据作为数据源,agent上传数据给后台服务,数据经过后台服务处理后进入kafka,当然agent也可以直接把数据发送给kafka作为数据源;

所述mq方式指的是支持kafka消息队列作为数据源,数据直接发送给kafka。

步骤s2,于任务管理平台侧,配置数据源类型,配置异构数据的清洗和切分规则以及配置数据集的维度和指标,并于所有配置完成后基于flink流计算技术启动数据实时处理任务,并将数据实时计算后根据数据集定义存入时序数据库,即于配置完成后,实时读取kafka中的数据,基于flink流计算根据切分规则实时切分提取需要的数据后再次放入kafka,基于flink流计算根据数据集定义按照时间、维度进行聚合计算,并在时序数据库中存储计算后结果。

在本发明具体实施例中,对于配置数据源类型,若选择日志数据作为数据源,则需要输入日志路径,若选择嵌入sdkagent上报数据作为数据源,则需要输入sdkagent的accesskeys,若选择mq作为数据源,则需要输入kafka的topic,也就是说,本发明支持配置多种数据来源,并且试抓取上传的数据,检验配置的数据源是否正确;对于配置异构数据的清洗和切分规则,在本发明具体实施例中,可通过在web管理控制台界面中通过图形化积木块方式进行定义切分规则,支持单、多分隔符切分器和简单的逻辑运算,输入测试数据预览清洗和切分结果;对于配置数据集的维度和指标,切分后的数据根据时间、维度分组聚合计算指标值,具体地,可通过web管理控制台界面采用图形拖拽积木块的方式构建数据切分规则,并于获取抓取的实时数据后,数据切分预览根据定义的数据切分规则进行试切分,以帮助使用者判断切分规则配置的是否正确;对于配置数据集的维度和指标,即根据切分后的数据定义数据集,需要输入过滤条件、聚合维度、统计指标、时间字段等参数,一个实时数据计算任务可以定义多个数据集,数据集基于切分后的数据进行实时计算。

当所有配置完成后启动数据实时处理任务,并将数据实时计算后根据数据集定义存入时序数据库。在本发明中,每个数据实时处理任务对应一个flink数据切分任务,一个任务中可以有多个数据集,每个数据集对应一个flink数据集计算任务,任务启动后,任务对应的切分任务和所属的数据集计算任务全部启动,数据源中的新增数据最终都会进入kafka,flink数据切分任务消费kafka中的数据,根据切分规则对数据切分和逻辑处理,结果再次放入kafka,flink数据集计算任务从kafka消费数据后按照时间、维度实时聚合计算后存入时序数据库。

优选地,于步骤s2中,还配置自定义报警规则,当从kafka的topic中消费数据后,根据报警规则实时判断是否需要报警,生成报警记录,并通知联系人,例如采用短信或者邮件方式通知联系人。

步骤s3,获取所述任务管理平台侧数据集中的结果以图表方式展现或者通过接口方式输出,也就是说,本发明还提供外部接口输出保存在数据集中的时序数据,用户获取数据后自行设计图表展现数据。

以下将通过具体实施例来说明本发明之基于flink流计算技术的多源异构数据实时处理系统的处理过程。图3为本发明具体实施例中基于flink流计算技术的多源异构数据实时处理系统的功能模块图,图4为本发明具体实施例中基于flink流计算技术的多源异构数据实时处理系统的逻辑架构图。如图3及图4所示,该基于flink流计算技术的多源异构数据实时处理系统的处理过程如下:

数据采集侧,支持日志数据作为数据源,filebeat实时读取指定日志文件新增内容,发送给logstach,数据经过logstach过滤后进入kafka;支持应用或容器中嵌入sdk上传数据作为数据源,sdk上传数据给后台服务,数据经过处理后进入kafka,支持kafka消息队列作为数据源,数据直接发送给kafka。

管理控制台侧,支持配置数据源类型,如果选择日志数据作为数据源,需要输入日志路径,如果选择嵌入sdkagent上报数据作为数据源,需要输入sdkagent的accesskeys,如果选择mq作为数据源,需要输入kafka的topic;管理控制台侧还支持配置异构数据的清洗和切分规则,在界面中通过图形化积木块方式进行定义切分规则,输入测试数据预览清洗和切分结果;支持配置数据集的维度和指标,切分后的数据根据时间、维度分组聚合计算指标值,在本发明实施例中,管理控制台侧包括:

数据接收层,用于接收数据采集侧上传的数据;

数据处理层,当所有配置完成后启动数据实时处理任务,每个数据实时处理任务对应一个flink数据切分任务,一个任务中可以有多个数据集,每个数据集对应一个flink数据集计算任务。任务启动后,任务对应的切分任务和所属的数据集计算任务全部启动。数据源中的新增数据最终都会进入kafka,flink任务消费kafka中的数据,根据切分规则对数据切分和逻辑处理,结果再次放入kafka,flink数据集计算任务从kafka消费数据后按照时间、维度实时聚合计算后存入存储层,其中存储层包括elasticsearch搜索服务器以及influxdb时序数据库,其中elasticsearch搜索服务器用于存储原始数据,influxdb时序数据库用于保存聚合计算后的时序数据。

所述管理控制台侧还支持输入时间范围、时间粒度查询数据集中的数据。支持配置图表类型及其选项展示数据集中数据。如果图表展现界面不能满足用户需求,支持通过http接口对外提供查询数据集中数据的服务,输入时间范围、时间粒度、指标和维度列表作为查询条件,返回数据集中的多条时序数据。

在本实施例中,管理控制台侧使用antdesignreact或bizchart前端框架图表展现数据库中的时序数据。

控制台,用于提供任务数据源定义、任务切分规则定义、任务数据集定义、任务管理(启动/停止)、外部接口服务、数据集查询、交互图表、告警服务。

综上所述,本发明一种基于flink流计算技术的多源异构数据实时处理系统及方法通过对现有业务系统中输出的多种来源不同结构的大量数据进行分析,由于数据采集侧采集到的异构数据中除了有时间戳、调用链跟踪traceid、错误堆栈、应用服务等系统信息外,还有和业务相关的订单号、手机号、商品标识等信息,根据任务管理平台侧中所述配置异构数据的清洗切分规则、聚合数据集的维度和指标,把订单号、时间戳、调用链跟踪traceid数据存储在一个数据集中,启动flink实时计算任务后,业务和系统双向关联的数据就会进入数据集,这样就可以通过关键信息(如系统跟踪traceid、订单号等)匹配业务经过的所有系统处理节点,找到日志事件和业务之间的相关性,帮助运维人员提高效率,为现有的业务分析系统提供补充。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1