基于Flink实现的端到端一致性数据实时处理方法及介质技术

技术编号:36603072 阅读:35 留言:0更新日期:2023-02-04 18:20
本发明专利技术涉及一种基于Flink实现的端到端一致性数据实时处理方法及介质,所述方法应用于Flink流式数据处理运行环境,包括以下步骤:1)获取topic,所述topic包括schema topic和data topic,将每一topic转换为一条数据流,所述数据流包括schema stream和data stream;2)对每一所述数据流进行数据预处理;3)对所述schema stream按设定键进行分流,将切分出的数据与该设定键对应的data stream融合,形成重新融合后的多条数据流;4)基于Watermark和窗口技术对接收的数据流进行排序及相应业务处理;5)采用两阶段提交方式将处理后数据插入到目标端。与现有技术相比,本发明专利技术具有保证端到端始终一致、解决乱序问题避免了容错恢复时导致目标端出现的幂等性问题等优点。出现的幂等性问题等优点。出现的幂等性问题等优点。

【技术实现步骤摘要】
基于Flink实现的端到端一致性数据实时处理方法及介质


[0001]本专利技术涉及一种端到端一致性数据处理方法,尤其是涉及一种基于Flink实现的端到端一致性数据实时处理方法及介质。

技术介绍

[0002]在数据实时处理相关业务系统中为了水平扩展,达到提高并发的目的,一般通过直接利用其底层组件的(或者间接实现)分布式特性实现。而在分布式系统中,通常由于各底层组件对于分布式的特性及性能表现不同,会产生数据不一致的情况。在本数据实时处理方案中,以技术选型为Debezium、Kafka、Flink组件分别提供采集、传输、处理功能为例,为保证业务的正常运行,必须提供任务级端到端的一致性方案。
[0003]端到端一致性是指在涉及CDC(变化数据捕捉),如数据库实时同步、构建数据仓库、数据湖、实时分析、数据大屏等相关场景中,源端数据库经过过滤、清洗、脱敏、加密、转换等处理后,写入到目标端数据库时保证不会出现数据的丢失、重复、乱序等情况。当源端数据发生更改时,保证目标端及时、正确、持久的写入更改数据。端到端一致性包括两部分:严格的顺序保证、一致性语义exactly once(当流处理应用程序发生故障恢复时,同步到目标端的数据没有丢失或冗余重复)的保证。
[0004]现有技术处理端到端一致性上还存在无法全面考虑各环节关系、一致性处理可靠性不高的不足。

技术实现思路

[0005]本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种保证端到端始终一致的基于Flink实现的端到端一致性数据实时处理方法。
[0006]本专利技术的目的可以通过以下技术方案来实现:
[0007]一种基于Flink实现的端到端一致性数据实时处理方法,该方法应用于Flink流式数据处理运行环境,包括以下步骤:
[0008]1)获取topic,所述topic包括schema topic和data topic,将每一topic转换为一条数据流,所述数据流包括schema stream和data stream;
[0009]2)对每一所述数据流进行数据预处理;
[0010]3)对所述schema stream按设定键进行分流,将切分出的数据与该设定键对应的data stream融合,形成重新融合后的多条数据流;
[0011]4)基于Watermark和窗口技术对接收的数据流进行排序及相应业务处理;
[0012]5)采用两阶段提交方式将处理后数据插入到目标端。
[0013]进一步地,所述schema topic包含所有库和表的数据定义语句。
[0014]进一步地,每张表对应一个所述data topic,该data topic包含关于该表的数据操纵语句。
[0015]进一步地,所述数据预处理包括将json转为pojo以及空数据过滤。
[0016]进一步地,所述设定键为库名与表名的结合。
[0017]进一步地,所述多条数据流包括融合后的数据流以及schema stream中其余数据形成的数据流。
[0018]进一步地,所述基于Watermark和窗口技术对接收的数据流进行排序具体为:
[0019]为每一条数据流配置对应的Watermark、事件时间、窗口大小以及窗口函数;
[0020]在接收每一条数据流时,基于Watermark等待迟到数据,并基于所述窗口大小将窗口内数据按照事件时间排序,触发后续的窗口函数。
[0021]进一步地,所述业务处理包括数据库实时同步、构建数据仓库、数据湖、实时分析和/或数据大屏处理。
[0022]进一步地,所述两阶段提交方式具体为:
[0023]51)上一个数据库事件完成时,开启一个新的事务,本次事务中每条数据到来时触发一次数据写入;当前数据库事件到来时,对本次事务进行预提交,如果数据写入和预提交全部成功,则表示第一个阶段成功,否则触发终止回滚事务;
[0024]52)当所有的操作实例完成数据库事件,且都执行完预提交时,产生所有操作实例执行正式提交的指令,完成正式提交。
[0025]本专利技术还提供一种计算机可读存储介质,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如上所述基于Flink实现的端到端一致性数据实时处理方法的指令。
[0026]与现有技术相比,本专利技术具有以下有益效果:
[0027]1)通过Watermark、窗口解决Kafka单分区内部的乱序问题,通过全局Watermark解决流级别多分区之间的乱序问题,可达到表级别的实时同步,行级别的端到端一致性。
[0028]2)通过将schema stream和data stream分流与融合的方式解决了schema topic和data topic的乱序问题,保证了表结构增量修改前后,端到端始终一致。
[0029]3)2PC中通过开启事务避免了容错恢复时导致目标端出现的幂等性问题,本专利技术仅解析before、after数据,避免了直接执行SQL语句导致的幂等性问题。
[0030]4)异常、任务暂停等情况下通过Checkpoint和Savepoint支持断点续传,不影响端到端的一致性。
附图说明
[0031]图1为Kafka消息分区示意图;
[0032]图2为Flink并行任务处理示意图;
[0033]图3为本专利技术应用的整体框架示意图;
[0034]图4为处理数据时顺序的理想情况和实际情况;
[0035]图5为流级顺序示意图;
[0036]图6为独立处理schema stream、data stream导致的任务级乱序问题;
[0037]图7为解决任务级乱序问题设计的分流与融合的方案;
[0038]图8为本专利技术端到端一致性数据处理的流程图。
具体实施方式
[0039]下面结合附图和具体实施例对本专利技术进行详细说明。本实施例以本专利技术技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本专利技术的保护范围不限于下述的实施例。
[0040]1、问题的提出
[0041]端到端一致性涉及的各组件Debezium、Kafka、Flink,构成了端到端一致性中至关重要的每一环。为了实现更可靠的端到端一致性数据实时处理,需要充分考虑、分析各组件的对于顺序、一致性语义特性的支持。
[0042](1)顺序保证
[0043]Debezium作为采集组件,为采集到的表结构、行数据都提供了事件时间字段,为后续按照事件时间处理数据提供了依据。Kafka为了做到水平扩展,将一个topic的数据分布到多个partition(分区)中,每个partition是一个有序的队列,如图1所示,而各个partition中的消息比较独立,很难有一种高效的方法来判断不同partition中数据的顺序。
[0044]Flink本质上是分布式框架。每个算子可以单独设置并行度,由此产生一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Flink实现的端到端一致性数据实时处理方法,其特征在于,该方法应用于Flink流式数据处理运行环境,包括以下步骤:1)获取topic,所述topic包括schema topic和data topic,将每一topic转换为一条数据流,所述数据流包括schema stream和data stream;2)对每一所述数据流进行数据预处理;3)对所述schema stream按设定键进行分流,将切分出的数据与该设定键对应的data stream融合,形成重新融合后的多条数据流;4)基于Watermark和窗口技术对接收的数据流进行排序及相应业务处理;5)采用两阶段提交方式将处理后数据插入到目标端。2.根据权利要求1所述的基于Flink实现的端到端一致性数据实时处理方法,其特征在于,所述schema topic包含所有库和表的数据定义语句。3.根据权利要求1所述的基于Flink实现的端到端一致性数据实时处理方法,其特征在于,每张表对应一个所述data topic,该data topic包含关于该表的数据操纵语句。4.根据权利要求1所述的基于Flink实现的端到端一致性数据实时处理方法,其特征在于,所述数据预处理包括将json转为pojo以及空数据过滤。5.根据权利要求1所述的基于Flink实现的端到端一致性数据实时处理方法,其特征在于,所述设定键为库名与表名的结合。6.根据权利要求1所述的基于Flink实现的端到端一致性数据实时处理方法,其特征在于,所述...

【专利技术属性】
技术研发人员:董海峰
申请(专利权)人:上海爱数信息技术股份有限公司
类型:发明
国别省市:

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

1