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

一种基于CDC的异构数据源准实时数据同步方法及系统与流程

2022-03-30 10:22:26 来源:中国专利 TAG:
一种基于cdc的异构数据源准实时数据同步方法及系统
技术领域
:1.本发明涉及数据处理
技术领域
:,尤其涉及一种基于cdc的异构数据源准实时数据同步方法及系统。
背景技术
::2.多个存在业务关联的系统之间,经常会存在高密度的数据协作场景。一般系统间数据协作的方式包含两种:第一种为定时批量同步,即在每天的系统访问的低谷期,由数据下游系统主动向上游系统发起数据同步请求,通过接口获取全量数据或一定时间范围内的增量数据;第二种为实时同步,即上游系统数据发生改变时主动向下游系统推送数据,下游系统接收后进行处理和存储。定时同步方案导致数据的时效性大大降低,无法用于t 0的协作场景,只能用于t 1场景,并且大批量的数据同步对于网络抖动、连接中断等问题适应性也较差。实时同步场景虽然时效性较高,但当上游业务变化场景较多时,每个场景都需要调用数据推送接口,耦合度较高,难以运维。因此,系统间的数据同步需要使用低耦合的准实时数据同步方案。3.cdc(changedatacapture,变动数据捕获)是数据库级别实现增量抽取的解决方案之一。cdc对数据源表的插入(insert)、更新(update)或删除(delete)等操作进行捕获,并提取变化数据,将这些变化按照时间顺序记录下来,以一种可控的方式提供给目标系统或其他服务。cdc可用于数据库之间的数据同步及备份场景。4.但是,现有技术使用cdc的解决方案中,仍然存在有源表与目标表之间依赖性强,且对于源表与目标表的结构一致性有一定要求,不能很好的支持异构表之间数据同步。技术实现要素:5.为解决现有技术的不足,本发明提出一种基于cdc的异构数据源准实时数据同步方法及系统,解决定时同步方案数据延迟较大的问题,同时将数据同步与业务流程解耦,保证松耦合设计,减少调用依赖,并可支持源表与目标表异构,数据同步更加灵活易用。本发明提出的数据同步方法可以保证数据的顺序同步,且减少重复数据同步处理,提高同步效率,降低资源消耗,在故障发生时可以迅速修复,最大程度降低对系统的影响。6.为实现以上目的,本发明所采用的技术方案包括:7.一种基于cdc的异构数据源准实时数据同步方法,其特征在于,包括:8.设定至少一个源表和至少一个目标表,所述源表和目标表中的数据至少包含主键字段和更新时间字段;9.根据主键字段设定数据更新所对应的主题以及提交主题的偏移量,所述主题为单分区的主题;10.监听源表数据变化,并将源表的数据变化依据其主键字段推送至对应的主题形成序列化的消息;11.根据偏移量从主题中拉取指定数量的消息,并反序列化得到待更新数据;12.比对待更新数据和保存在目标表中的已存在数据;13.当待更新数据的主键字段与已存在数据的主键字段相同,且待更新数据的更新时间字段小于已存在数据的更新时间字段,则丢弃对应的待更新数据;14.当待更新数据的主键字段与已存在数据的主键字段不同,或待更新数据的更新时间字段等于或大于已存在数据的更新时间字段,则将待更新数据依据目标表数据对象格式转换为待存储数据,所述待存储数据至少包含主键字段和更新时间字段;15.将待存储数据存入目标表;16.根据待更新数据处理结果更新偏移量。17.进一步地,所述源表和目标表为同构或异构。18.进一步地,所述方法还包括:19.通过更改目标表数据对象格式将待更新数据转换为对应不同目标表的待存储数据;20.不更改源表,通过更改监听源表数据变化的指定范围改变源表的数据同步范围。21.进一步地,所述源表和目标表之间数据流转关系固定不可变,目标表中的数据不可反向同步至源表。22.进一步地,所述方法还包括:23.至少设定第一源表、第一目标表和第二目标表;24.设定第一目标表从第一源表同步数据,同时第一目标表作为第二源表向第二目标表同步数据;25.第二目标表的数据不可经任何数据流转关系反向同步至第一源表。26.进一步地,所述根据偏移量从主题中拉取指定数量的消息具备幂等性。27.本发明还涉及一种基于cdc的异构数据源准实时数据同步系统,其特征在于,包括:28.数据库源表,用于储存更新所需的源数据;29.数据库目标表,用于储存目标数据,并根据源数据更新目标数据;30.cdc模块,用于监听源表数据变化,并将源表的数据变化形成序列化的消息推送至消息中间件模块;31.消息中间件模块,用于根据主题保存消息;32.消费模块,用于根据偏移量从消息中间件模块中拉取指定数量的消息并反序列化得到待更新数据传递至数据库目标表。33.进一步地,所述数据库源表、数据库目标表、cdc模块、消息中间件模块和/或消费模块采用集群方式部署。34.本发明还涉及一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。35.本发明还涉及一种电子设备,其特征在于,包括处理器和存储器;36.所述存储器,用于存储至少包含主键字段和更新时间字段的数据;37.所述处理器,用于通过调用至少包含主键字段和更新时间字段的数据,执行上述的方法。38.本发明的有益效果为:39.采用本发明所述基于cdc的异构数据源准实时数据同步方法及系统,解决定时同步方案数据延迟较大的问题,同时将数据同步与业务流程解耦,保证松耦合设计,减少调用依赖,并可支持源表与目标表异构,数据同步更加灵活易用,可适用于异构的数据同步场景,同时对于网络抖动和连接断开场景也具有相应解决方案,是系统间数据准实时同步的优选方案。附图说明40.图1为本发明基于cdc的异构数据源准实时数据同步方法流程示意图。41.图2为本发明基于cdc的异构数据源准实时数据同步系统结构示意图。具体实施方式42.为了更清楚的理解本发明的内容,将结合附图和实施例详细说明。43.本发明第一方面涉及一种基于cdc的异构数据源准实时数据同步方法,流程如图1所示,包括:44.设定至少一个源表和至少一个目标表,所述源表和目标表中的数据至少包含主键字段和更新时间字段,其中,源表和目标表可选的为同构或异构,其使用的数据库结构选型也可以为同构或异构,均不影响后续步骤执行;45.根据主键字段设定数据更新所对应的主题以及提交主题的偏移量,所述主题为单分区的主题,即每个主题topic只包含一个分区partition,且设置为手动提交主题的偏移量offset;46.监听源表数据变化,并将源表的数据变化依据其主键字段推送至对应的主题形成序列化的消息,当需要更改数据同步的范围时,优选的通过更改监听源表数据变化的指定范围改变源表的数据同步范围,无需对源表本身作出变更;47.根据偏移量从主题中拉取指定数量的消息,并反序列化得到待更新数据,优选的,根据偏移量从主题中拉取指定数量的消息具备幂等性,确保相同的请求始终获得相同的反馈;48.比对待更新数据和保存在目标表中的已存在数据;49.当待更新数据的主键字段与已存在数据的主键字段相同,且待更新数据的更新时间字段等于或小于已存在数据的更新时间字段,则丢弃对应的待更新数据;50.当待更新数据的主键字段与已存在数据的主键字段不同,或待更新数据的更新时间字段大于已存在数据的更新时间字段,则将待更新数据依据目标表数据对象格式转换为待存储数据,所述待存储数据至少包含主键字段和更新时间字段,优选的,对应不同的目标表,采用不同的目标表数据对象格式将待更新数据转换为对应不同目标表的待存储数据;51.将待存储数据存入目标表;52.根据待更新数据处理结果更新偏移量。53.特别的,上述方法的执行中,源表和目标表之间数据流转关系固定不可变,目标表中的数据不可反向同步至源表,即仅用于数据的单向同步。但是,本发明所述方法仍然可以支持多个不同目标表从同一源表获取更新数据,仅需设定个目标表对应的主题即可分别获取所需的更新数据。进一步地,采用本发明方法进行数据流转时不能形成闭环,但可以支持数据依次向下一级传递,优选的可以设定设定第一目标表从第一源表同步数据,同时第一目标表作为第二源表向第二目标表同步数据,但第二目标表的数据不可经任何数据流转关系反向同步至第一源表。54.本发明第二方面涉及一种结构如图2所示的基于cdc的异构数据源准实时数据同步系统,包括:55.数据库源表,用于储存更新所需的源数据;56.数据库目标表,用于储存目标数据,并根据源数据更新目标数据;57.cdc模块,用于监听源表数据变化,并将源表的数据变化形成序列化的消息推送至消息中间件模块;58.消息中间件模块,用于根据主题保存消息;59.消费模块,用于根据偏移量从消息中间件模块中拉取指定数量的消息并反序列化得到待更新数据传递至数据库目标表。60.特别是,数据库源表、数据库目标表、cdc模块、消息中间件模块和/或消费模块可以根据需要采用集群方式部署,避免单点故障隐患。61.以下通过具体的实施例进一步说明本发明方法及系统的应用。62.binlog是mysql维护的一种二进制日志,主要用来记录mysql数据库表结构变更以及对数据更新或潜在发生更新的sql语句。开源框架canal主要用途是基于mysql数据库增量日志解析,提供增量数据订阅和消费功能。通过监听mysqlbinlog日志,canal可以获取到mysql数据库所有的数据变更信息,并转存到不同的目的地,实现数据的主从同步。本实施例中源表和目标表均基于mysql数据库存储,并使用canal实现cdc模块。63.假设需要将mysql数据库a中的表tablea同步至mysql数据库b中的tablea_target,tablea与tablea_target同构。cdc模块监听tablea,并将变更数据发送至作为消息中间件模块的kafka集群的主题topica。主题topica只包含一个分区。64.编写消费模块consumera,监听消息中间件模块kafka的主题topica,配置kafka为手动提交偏移量offset,并将接收模式设置为latest。消费模块consumera每次从主题topica中获取100条消息(预设值),并逐条解析。对于每条数据,消费模块consumera通过数据主键字段判断目标表tablea_target中是否存在同一条数据,若不存在记录则执行插入操作,若存在则比对更新时间,更新时间大于等于目标表tablea_target中记录的更新时间,则执行更新操作。存储成功则更新主题的偏移量offset,存储失败则将偏移量offset回滚。65.部署层面,消息中间件模块和cdc模块可选择基于zookeeper搭建高可用集群。66.以上所述仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换等都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。当前第1页12当前第1页12
再多了解一些

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

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

相关文献