System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于FlinkCDC技术整库实时同步的方法技术_技高网

一种基于FlinkCDC技术整库实时同步的方法技术

技术编号:40956175 阅读:4 留言:0更新日期:2024-04-18 20:32
本发明专利技术属于大数据处理技术领域,涉及一种基于FlinkCDC技术整库实时同步的方法,适用于数据实时处理转换迁移。实时同步配置技术,可配置全库同步和特定表同步,还可实现源端和目标端同一表不同结构的数据同步;实时调度技术,如果同步配置发生变化,CDC可动态监听配置变化,添加新的同步任务;动态FlinkCDC任务生成技术,把同步配置信息转换为FlinkSQL,根据配置的Flink和目标端的表映射关系,通过FlinkTable API创建Flink的Table,动态产生插入,更新,删除的FlinSQL,然后根据源端数据的变化类型,执行不同的FlinkSQL。解决原有FlinkCDC开发复杂性高、开发难度大,且不能灵活配置的现有技术不足问题,基于常用的Oracle,MySql等数据库的实时同步进行封装,可以简单配置后直接部署使用。

【技术实现步骤摘要】

本专利技术属于大数据处理,涉及一种基于flinkcdc技术整库实时同步的方法,适用于数据实时处理转换迁移。


技术介绍

1、1、由于数据实时同步的需求以及流式数据处理技术的发展。随着互联网和大数据技术的快速发展,医院对于数据的实时分析和处理需求越来越高,这使得cdc技术逐渐成为一种重要的数据处理手段。

2、2、传统的cdc方法如使用canal或debezium等工具,虽然可以实现数据变更的捕获,但在处理海量数据和复杂业务逻辑时,可能会遇到性能瓶颈和数据一致性问题。此外,这些工具通常需要与特定的数据库类型进行绑定,无法实现跨数据库的统一处理。

3、3、flink cdc的出现,基于apache flink框架,解决了传统cdc工具的一些问题。flink是一个大规模数据处理引擎,可以高效地处理流式数据,并且具有强大的容错性和可扩展性。flink cdc利用flink的数据处理能力,将数据库的变更转换为有序、幂等的变更流,并提供了统一的api接口。

4、4、传统基于数据库日志的cdc技术,存在对源库对锁表,占用源库大量连接等问题。在使用原生flinkcdc 相关api进行同步时,需要结合实际数据库和场景进行定制化开发,对技术人员要求较高。因此,亟需改进一些新方法简化flinkcdc的使用。


技术实现思路

1、本专利技术目的在于解决如下问题:

2、1、解决传统实时同步工具性能瓶颈问题,如:整库或单表数据量过大,同步时间超长,源库锁表等。

3、2、解决同步过程中出现异常中断,导致必须重新开始同步以及数据不一致的问题。

4、3、解决原有flinkcdc开发复杂性高、开发难度大,且不能灵活配置的现有技术不足问题,基于常用的oracle,mysql等数据库的实时同步进行封装,可以简单配置后直接部署使用。

5、解决上述技术问题,提供一种基于flinkcdc技术整库实时同步的方法。

6、一种基于flinkcdc技术整库实时同步的方法,包括如下步骤:

7、s1、基于配置信息,采用flinkcdc的 sql api或datastream api把源表封装成对应数据库的的source

8、a、源库整库同步

9、a1、首先根据配置的源库和目标库映射,使用jdbc获取源库的需采集表的schema信息,构建成table对象用于描述采集数据表的metadata,table对象中包涵name、databasetype、comment和所有字段的集合,字段信息包含fieldname,fieldtype,fieldlength,fieldscale;

10、a2、其次根据源表的metadata信息,依次循环源表把表名,表字封装成flinkcdc的source源端配置或源端flink sql;

11、a3、然后把flinkcdc的source配置构建成datastreamsource流或根据动态的flink sql通过flink sql api构建flink sql的执行环境;

12、b、部分表同步,按源表结构直接写入目标库

13、b1、首先根据配置源表和目标库映射,获取源表的配置信息转换成source的metadata;

14、b2、其次根据源表的配置信息,依次循环源表把表名,表字封装成flinkcdc的source源端配置或源端flink sql;

15、b3、然后把flinkcdc的source配置构建成datastreamsource流或根据动态的flink sql通过flink sql api构建flink sql的执行环境;

16、c、部分表同步,源表和目标表结构不同写入目标库

17、c1、首先根据配置源表和目标表映射,获取源表的配置信息转换成source的metadata;

18、c2、剩下步骤跟上面两种同步方式一样;

19、s2、基于配置信息和source的 metadata信息,采用finkcdc的sqlapi或datastream api把目标表封装成对应数据库的sink;

20、a、获取source metadata配置信息

21、b、循环source中的metadata信息,根据每个source配置的同步方式,得到其flinkcdc的sink配置或目标端的flink sql

22、b1、整库同步和按源表结构直接同步,根据源表的source信息按表名,字段名封装成flinkcdc的sink配置或目标端的flink sql;

23、b2、源表和目标表结构不同写入目标库,根据源表和目标表的字段映射,把目标表的表名,字段名封装成flinkcdc的sink配置或目标端的flink sql;

24、c、扩展预留的数据转换接口,对原始的flinksql的sink可根据转换需要关联其他表进行数据清洗或转换,通过预留的richsinkfunction对sink进行扩展,实现字段值等转换;

25、d、封装flinkcdc的source源端配置及sink目标端配置,根据source配置构建datastreamsource流,支持mysql、oracle常见数据库。

26、所述根据封装的source配置构建datastreamsource流,并按照不同的表名进行map把source分流,并设置相应的parallelism并行度,把封装的sink添加到datastreamsource中。

27、所述封装好的flinkcdc任务提交到flink集群执行。

28、本专利技术的有益效果:

29、1、实时同步配置技术,可配置全库同步和特定表同步,还可实现源端和目标端同一表不同结构的数据同步;

30、2、实时调度技术,如果同步配置发生变化,cdc可动态监听配置变化,添加新的同步任务;

31、3、动态flinkcdc任务生成技术,把同步配置信息转换为flinksql,根据配置的flink和目标端的表映射关系,通过flinktable api创建flink的table,动态产生插入,更新,删除的flinsql,然后根据源端数据的变化类型,执行不同的flinksql;

32、4、分流技术,通过datastreamsource对不同采集表分流,用不同的flink子任务并行执行,把数据同步到目标端;

33、5、数据清洗转换技术,通过预留的接口,可扩展原来接口,根据源端数据,对传入数据进行数据类型,字段值等转换,或添加目标库的时间戳,批次等信息。

本文档来自技高网
...

【技术保护点】

1.一种基于FlinkCDC技术整库实时同步的方法,其特征在于包括如下步骤:

2.根据权利要求1所述的一种基于FlinkCDC技术整库实时同步的方法,其特征在于所述根据封装的Source配置构建DataStreamSource流,并按照不同的表名进行Map把Source分流,并设置相应的parallelism并行度,把封装的Sink添加到DataStreamSource中。

3.根据权利要求1所述的一种基于FlinkCDC技术整库实时同步的方法,其特征在于所述封装好的FlinkCDC任务提交到Flink集群执行。

【技术特征摘要】

1.一种基于flinkcdc技术整库实时同步的方法,其特征在于包括如下步骤:

2.根据权利要求1所述的一种基于flinkcdc技术整库实时同步的方法,其特征在于所述根据封装的source配置构建datastreamsource流,并按照不同的表名进行map把s...

【专利技术属性】
技术研发人员:蔡文强刘磊刘聪毛智勇
申请(专利权)人:中电信医疗健康科技有限公司
类型:发明
国别省市:

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

1