CN114722119A - 数据同步方法及系统 - Google Patents
数据同步方法及系统 Download PDFInfo
- Publication number
- CN114722119A CN114722119A CN202210334000.XA CN202210334000A CN114722119A CN 114722119 A CN114722119 A CN 114722119A CN 202210334000 A CN202210334000 A CN 202210334000A CN 114722119 A CN114722119 A CN 114722119A
- Authority
- CN
- China
- Prior art keywords
- data
- flink
- topic
- cdc
- consumed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Abstract
本申请实施例提供了一种数据同步方法,包括:通过第一流处理框架Flink的flink‑cdc‑connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据;通过flink‑cdc‑connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。本申请可以支持到分钟级数据可见粒度。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种数据同步方法及系统。
背景技术
随着大数据时代的到来,传统的数据存储和分析工具(典型代表MySQL技术体系)已经很难满足企业分析业务需求了。但是,传统的数据存储和分析工具也有着大数据领域工具不具备的特性,比如,使用范围的广泛性,保持数据的一致性(事务处理),数据更新高效性等等。因此,为了满足分析业务需求,一般都需要将传统数据存储系统中的数据同步至大数据存储平台中进行数据分析。
现有技术中,一般采用Datax(阿里巴巴集团内被广泛使用的离线数据同步工具/平台)来实现数据同步。然而,发明人发现,Datax同步方式对传统数据库来说是属于慢查询,不能满足日益增加的时效性需求,仅能支持天/小时同步,无法支持到分钟级数据可见粒度。
发明内容
本申请实施例的目的是提供一种数据同步方法及系统,可以解决现有技术中的采用Datax同步方式不能支持到分钟级数据可见粒度的同步。
本申请实施例的一个方面提供了一种数据同步方法,包括:
通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据;
通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;
通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。
可选地,所述传统数据存储系统为关系型数据库管理系统MySQL,所述大数据存储平台为数据湖HUDI。
可选地,所述传统数据存储系统包括多个待同步的MySQL,所述通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据包括:
通过flink-cdc-connectors组件创建多个flink cdc任务,其中,flink cdc任务的数量与待同步的MySQL的数量相同;
通过多个flink cdc任务分别消费多个MySQL中的多张数据表中的全量数据和增量变更数据。
可选地,所述通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据包括:
通过第一流处理框架Flink获取配置信息,所述配置信息包括所述flink-cdc-connectors组件消费的多张数据表的名称;
flink-cdc-connectors组件根据所述配置信息消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据。
可选地,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:
flink-cdc-connectors组件在消费到的每一张数据表中的全量数据和增量变更数据时,为消费到的每一条数据添加一个版本字段;
通过flink-cdc-connectors组件将添加有版本字段的数据写入至消息系统Kafka中的一个主题Topic中。
可选地,所述通过flink-cdc-connectors组件将添加有版本字段的数据写入至消息系统Kafka中的一个主题Topic中包括:
通过flink-cdc-connectors组件将添加有版本字段的数据转换为具有预设格式的二进制数据,并将所述二进制数据封装成row类型的数据写入至消息系统Kafka中的一个主题Topic中。
可选地,所述传统数据存储系统采用分库分表的方式存储数据时,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:
flink-cdc-connectors组件将消费到的多个数据库中属于同一张数据表的全量数据和增量变更数据写入至消息系统Kafka中的同一个主题Topic中。
可选地,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:
flink-cdc-connectors组件从预设的connectors组件中获取用户预先配置的数据路由规则,所述数据路由规则用于确定每一张数据表写入的主题Topic;
flink-cdc-connectors组件根据所述数据路由规则将消费到的每一张数据表中的全量数据和增量变更数据写入消息系统Kafka中的与数据表相对应的主题Topic中。
可选地,所述通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中包括:
通过第二流处理框架Flink创建多个Flink任务,其中,Flink任务的数量与Kafka中的主题Topic的数量相同;
通过多个Flink任务分别从所述消息系统Kafka中的多个主题Topic消费数据;
通过每一个Flink任务将消费出的数据写入至大数据存储平台中的与所述每一个Flink任务对应的数据表中。
可选地,所述通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中的步骤之前,还包括:
通过预设的大数据管理平台下发的数据字段变更消息给所述第二流处理框架Flink,并通过所述大数据管理平台对大数据存储平台中的数据表信息进行更新;
所述第二流处理框架Flink根据所述数据字段变更消息确定等待写入至大数据存储平台中的一个数据表中的数据;
通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中还包括:
第二流处理框架Flink在接收到预设的数据写入指令时,将所述等待写入至大数据存储平台中的一个数据表中的数据写入至对应的数据表中。
可选地,所述方法还包括:
所述大数据存储平台在接收到数据导出指令后,将所述大数据存储平台中存储的数据导出至下游存储系统中。
本申请实施例的一个方面还提供了一种数据同步系统,所述系统包括传统数据存储系统、第一流处理框架Flink、消息系统Kafka、第二流处理框架Flink及大数据存储平台,其中:
第一流处理框架Flink,用于通过flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据,并将将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;
所述第二流处理框架Flink,用于从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。
本申请还提供了一种计算机设备,所述计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例提供的数据同步方法,通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据,并通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;以及通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。本申请的数据同步方法,由于是采用流处理框架Flink结合消息系统Kafka的方式来实现数据同步,从而可以快速的将传统数据存储系统中的数据存储至大数据存储平台,实现分钟级数据可见粒度的数据同步。
附图说明
图1示意性示出了本申请一实施方式中的数据同步系统的架构示意图;
图2示意性示出了本申请一实施方式的数据同步方法的流程图;
图3为意性示出了本申请实施例中通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据的步骤细化流程示意图;
图4示意性示出了本申请实施例中通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据的步骤细化流程示意图;
图5示意性示出了本申请实施例中通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中的步骤细化流程示意图;
图6示意性示出了本申请实施例中通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中的步骤细化流程示意图;
图7示意性示出了本申请实施例中通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中的步骤细化流程示意图;
图8为本申请实施例提供的执行数据同步方法的计算机设备的硬件结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
图1示意性示出了本申请一实施方式中的数据同步系统的架构示意图,在示例性的实施方式中,该数据同步系统可以包括以下几部分:传统数据存储系统10、第一流处理框架Flink 20、消息系统Kafka 30、第二流处理框架Flink 40及大数据存储平台50。
传统数据存储系统10可以理解为利用传统的数据存储和分析工具的数据存储系统。例如,关系型数据库管理系统(MySQL),Oracle、DB2等。
第一流处理框架Flink 20及第二流处理框架Flink 40为由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。
消息系统Kafka 30为由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统。在数据同步系统的架构中,所述Kafka 30可以通过Kafka集群实现,起到数据削峰填谷的作用。传统数据存储系统10中的不同数据表中的数据可以被分流到kafka集群中的不同的Topic(主题)中。
大数据存储平台50可以理解为利用大数据领域的数据存储和分析工具的平台。例如,数据湖HUDI、分布式文件系统中的大数据存储介质Hive等。
图2示意性示出了根据本申请实施例一实施方式的数据同步方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。
如图2所示,该数据同步方法可以包括步骤S20~步骤S22,其中:
步骤S20,通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据。
具体地,flink-cdc-connectors组件是流处理框架Flink中的一个可以直接从MySQL、PostgreSQL等数据库直接读取全量数据和增量变更数据的source组件。其中,cdc(Change Data Capture),是一种用于捕获数据库中数据变更的技术。
所述传统数据存储系统可以理解为利用传统的数据存储和分析工具的数据存储系统。例如,为关系型数据库管理系统(MySQL),Oracle、DB2等。
下面将所述传统数据存储系统以关系型数据库管理系统MySQL为例进行说明。
所述全量数据为MySQL中的数据表中的所有数据。
所述增量变更数据为针对全量数据发生变更后的数据。
在本实施例中,flink-cdc-connectors组件在从MySQL中消费数据时,分为全量阶段消费数据和增量阶段消费数据。其中,在全量阶段消费数据时,会采用分块(chunk)的方式进行数据的读取。当全表快照读取完后,会进入增量阶段消费数据,具体而言,flink-cdc-connectors组件会通过获取binlog position来得到增量的变更记录,即获取增量变更数据。
在本实施例中,在flink-cdc-connectors组件消费数据的过程中,为了保证数据的不丢不重,可以采用flink checkpoint机制将处理完成的数据位点记录到checkpoint中,如果后续发生异常则可以根据checkpoint继续从发生异常的数据位点消费数据。其中,flink checkpoint机制是Flink中用于实现容错的机制。
在一示例性的实施方式中,当所述传统数据存储系统包括多个待同步的MySQL。参阅图3,所述通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据包括:步骤S30,通过flink-cdc-connectors组件创建多个flink cdc任务,其中,flink cdc任务的数量与待同步的MySQL的数量相同;步骤S31,通过多个flink cdc任务分别消费多个MySQL中的多张数据表中的全量数据和增量变更数据。
在本实施例中,当所述传统数据存储系统由N个MySQL组成时,用户可以自己从中选择需要同步的MySQL,比如,用户选择M个MySQL进行同步,则该M个MySQL即为所述待同步的MySQL。需要说明的是,N与M为正整数,且M小于或者等N。
作为示例,所述传统数据存储系统包括2个待同步的MySQL时,分别为MySQL DB1及MySQL DB2,创建的flink cdc任务分别为flink cdc job1及flink cdc job2。在创建完flink cdc任务后,可以通过flink cdc job1从MySQLDB1中消费多张数据表中的全量数据和增量变更数据,通过flink cdc job2从MySQL DB2中消费多张数据表中的全量数据和增量变更数据。
需要说明的是,flink cdc job1、flink cdc job2与MySQL DB1及MySQL DB1的对应关系,可以在创建flink cdc任务时进行配置,也可以根据预设规则进行确定,在本实施例中不作限定。
在一示例性的实施方式中,由于Flink CDC官方原生的CDAS和CTAS语法支持场景有限,即Flink CDC官方原生的CDAS和CTAS语法仅支持单库单表,因此,在本实施例中,为了实现flink-cdc-connectors组件可以消费多张数据表,需要预先在Flink中通过添加配置信息来实现flink-cdc-connectors组件可以消费多张数据表。
参阅图4,所述通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据包括:步骤S40,通过第一流处理框架Flink获取配置信息,所述配置信息包括所述link-cdc-connectors组件消费的多张数据表的名称;步骤S41,flink-cdc-connectors组件根据所述配置信息消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据。
作为示例,用户可以通过配置一个sql ddl文件来存储所述配置信息。其中,sqlddl文件可以包括connector(连接器)字段、MySQL地址字段(hostname)、MySQL端口字段(port)、MySQL用户名字段(username)、MySQL密码字段(password)、MySQL数据库名称字段(database-name)、Debezium Format字段及数据表名称字段(table-name)。
需要说明的是,ddl表示数据定义语言(CREATE,ALTER,DROP,DECLARE)。
在本实施例中,由于配置信息中明确记载了flink-cdc-connectors组件所需要消费的数据表的名称,因此,flink-cdc-connectors组件在消费数据的过程中,可以直接根据配置信息中记载的数据表的名称从MySQL中找到需要消费的数据表。
步骤S21,通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中。
具体地,flink-cdc-connectors组件在消费到一张数据表中的全量数据和增量变更数据后,会将该数据表中所有的全量数据和增量变更数据都写入同一个主题Topic中。比如,将table a中的全量数据和增量变更数据写入至Topic a中,将table b中的全量数据和增量变更数据写入至Topic b中。
需要说明的是,本实施例中的消息系统Kafka是以Kafka集群的方式来存储数据的。
在本实施例中,为了保证写入至Kafka中的数据不丢失,可以通过kafka client开启ack=all,这样,当所有副本都接收到数据后,才会ack。此外,为了避免脏选举,可以通过kafka server来保证replicas大于1。
在一示例性的实施方式中,参阅图5,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:步骤S50,flink-cdc-connectors组件在消费到的每一张数据表中的全量数据和增量变更数据时,为消费到的每一条数据添加一个版本字段;步骤S51,通过flink-cdc-connectors组件将添加有版本字段的数据写入至消息系统Kafka中的一个主题Topic中。
具体地,由于写入至Kafka中的数据可能存在重复和乱序问题,为了后续在对大数据存储平台中存储的数据进行分析时,可以方便解决数据重复和乱序问题,在本实施例中,flink-cdc-connectors组件在消费到每一条数据时,可以为该数据添加一个版本字段,这样,写入至Kafka中的每一条数据将会有一个版本字段,同时,后续存入至大数据存储平台中的数据也会具有一个版本字段。
当需要对大数据存储平台中的数据进行分析时,可以根据同一个数据的不同版本号来实现数据去重处理,并根据版本号实现数据排序。
需要说明的是,flink-cdc-connectors组件在为消费的每一条数据添加版本字段时,可以采用单调递增的方式生成版本字段,然后,将生成的版本字段添加至数据中。
在一示例性的实施方式中,所述通过flink-cdc-connectors组件将添加有版本字段的数据写入至消息系统Kafka中的一个主题Topic中包括:通过flink-cdc-connectors组件将添加有版本字段的数据转换为具有预设格式的二进制数据,并将所述二进制数据封装成row类型的数据写入至消息系统Kafka中的一个主题Topic中。
具体地,所述预设格式为changelog-json格式。
在本实施例中,由于MySQL中的数据字段可能会发生变更,为了使得MySQL中的数据字段发生变更后,可以自动感知到数据变更,并将字段变更后的数据也能写入至Kafka中,用户可以在flink-cdc-connectors组件中新增一种format方式,即新增changelogbytes序列化方式。其中,changelog bytes序列化方式是一种会在flink-cdc-connectors组件对数据反序列化时,不再进行column转换和解析,而是将所有column直接转换为changelog-json二进制传输,并且会将该二进制数据直接封装成row类型再写入至Kafka中的一个主题Topic中。
在一示例性的实施方式中,当传统数据存储系统采用分库分表的方式存储数据时,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:flink-cdc-connectors组件将消费到的多个数据库中属于同一张数据表的全量数据和增量变更数据写入至消息系统Kafka中的同一个主题Topic中。
具体地,flink-cdc-connectors组件在从多个数据库中消费到属于同一个数据表的数据时,会将这些数据写入至同一个主题Topic中,从而实现数据表的合并。
在一实施方式中,当采用分库分表方式存储数据时,由于mysql主键可能使用自增主键,若直接对数据进行同步,则会造成写入至HUDI中的数据表的主键相同,存在数据相互覆盖问题。
在本实施例中,为了解决上述问题,可以在flink-cdc-connectors组件在将数据写入至Kafka中时,为每一条数据添加一个带上实例、数据库及数据表的字段。这样,在HUDI中,可以使用实例、数据库及数据表来做中的HUDI中的数据表的联合主键。
在一示例性的实施方式中,参阅图6,通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:步骤S60,flink-cdc-connectors组件从预设的connectors组件中获取用户预先配置的数据路由规则,所述数据路由规则用于确定每一张数据表写入的主题Topic;步骤S61,flink-cdc-connectors组件根据所述数据路由规则将消费到的每一张数据表中的全量数据和增量变更数据写入消息系统Kafka中的与数据表相对应的主题Topic中。
具体地,预设的connectors组件为用于存储用户预先自定义配置的数据路由规则的connectors(连接器)。
在本实施例中,flink-cdc-connectors组件在做多表同步的场景时,由于是监听一个mysql库的消息,但需要将一个mysql库中的不同数据表的数据分发到不同的kafkatopic中,因此,可以通过增加了一个connector,通过该connector来存储用户自定义配置的数据路由规则,从而可以将不同数据表中的数据将路由到不同的kafka broken、kafkatopic中。
在一示例性的实施方式中,参阅图7,所述通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中包括:步骤S70,通过第二流处理框架Flink创建多个Flink任务,其中,Flink任务的数量与Kafka中的主题Topic的数量相同;步骤S71,通过多个Flink任务分别从所述消息系统Kafka中的多个主题Topic消费数据;步骤S72,通过每一个Flink任务将消费出的数据写入至大数据存储平台中的与所述每一个Flink任务对应的数据表中。
作为示例,所述Kafka中包括3个Topic,分别为Topic a、Topic b及Topicc;创建的flink任务分别为flink job1、flink job2及flink job3;大数据存储平台中包括3个数据表,分别为hudi table a、hudi table b及hudi table c。在创建完flink任务后,可以通过flink job1从Topic a中消费数据,并将消费到的数据写入至hudi table a中;通过flinkjob2从Topic b中消费数据,并将消费到的数据写入至hudi table b中;通过flink job3从Topic c中消费数据,并将消费到的数据写入至hudi table c。
需要说明的是,Topic a、Topic b、Topic c与flink job1、flink job2、flinkjob3以及hudi table a、hudi table b、hudi table c的对应关系,可以在创建flink任务时进行配置,也可以根据预设规则进行确定,在本实施例中不作限定。
步骤S22,通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。
具体地,大数据存储平台可以理解为利用大数据领域的数据存储和分析工具的平台。例如,数据湖HUDI、分布式文件系统中的大数据存储介质Hive等。
下面将所述大数据存储平台以数据湖HUDI为例进行说明。
需要说明的是,Hudi是一个Data Lakes的开源方案,Hudi是Hadoop Updates andIncrementals的简写,它是由Uber开发并开源的Data Lakes解决方案。
在本实施例中,Flink从一个Topic中消费出的数据会存入至大数据存储平台中与该Topic相对应的数据表中。也就是说,一个Topic对应一个数据表。比如,可以将Topic a中消费到的数据存入hudi table a中,将从Topic b中消费到的数据存入hudi table b中。
在一示例性的实施方式中,由于传统数据存储系统中的数据字段可能会发生变更,比如,传统数据存储系统中新增加了字段,或者某个数据字段的类型发生了变更,比如,某个数据字段的类型由int类型变更为long类型。在出现上述变更时,为了实现字段变更后的数据可以仍然可以同步至大数据存储平台,所述通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中的步骤之前,还包括:通过预设的大数据管理平台下发的数据字段变更消息给所述第二流处理框架Flink,并通过所述大数据管理平台对大数据存储平台中的数据表信息进行更新;所述第二流处理框架Flink根据所述数据字段变更消息确定等待写入至大数据存储平台中的一个数据表中的数据。
具体地,大数据管理平台可以为berserker,berserker是b站的大数据平台系统。
在本实施例中,当大数据管理平台接收到由传统数据存储系统的管理平台通过异步方式发送的数据字段变更消息时,大数据管理平台会将该数据字段变更消息转发给所述第二流处理框架Flink,以便所述第二流处理框架Flink根据所述数据字段变更消息确定等待写入至大数据存储平台中的一个数据表中的数据。其中,等待写入至大数据存储平台中的一个数据表中的数据为数据字段发生变更的数据。
在本实施例中,当用户想要对统数据存储系统的数据字段进行变更时,用户可以通过传统数据存储系统的管理平台发起DDL变更工单,以通过该DDL变更工单将数据字段进行变更。
在一实施方式中,用户可以通过传统数据存储系统的管理平台发起DDL变更工单时,若该DDL变更工单为预先配置的可以自动审批的工单,则可以直接审批通过该工单,并根据审批通过后的工单对数据字段进行变更。
在另一实施方式中,若该DDL变更工单为不是预先配置的可以自动审批的工单,则该工单需要通过用户在所述大数据管理平台中进行人工审批,并在用户人工审批通过后,再由大数据管理平台下发数据字段变更消息给所述第二流处理框架Flink,并通过所述大数据管理平台对大数据存储平台中的数据表信息进行更新。
通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中还包括:第二流处理框架Flink在接收到预设的数据写入指令时,将所述等待写入至大数据存储平台中的一个数据表中的数据写入至对应的数据表中。
具体地,所述数据写入指令用于将所述等待写入至大数据存储平台中的一个数据表中的数据写入至对应的数据表中。
本实例中,通过在接收到数据写入指令时,实现从Kafka中回放数据,从而实现将发生字段变更的数据同步至大数据存储平台中。
本申请实施例提供的数据同步方法,通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据,并通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;以及通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。本申请的数据同步方法,由于是采用流处理框架Flink结合消息系统Kafka的方式来实现数据同步,从而可以快速的将传统数据存储系统中的数据存储至大数据存储平台,实现分钟级数据可见粒度的数据同步。
在一示例性的实施方式中,所述方法还包括:
所述大数据存储平台在接收到数据导出指令后,将所述大数据存储平台中存储的数据导出至下游存储系统中。
具体地,当需要将大数据存储平台中的数据导出值下游存储系统中,可以调用数据调度系统的虚任务接口发出数据导出指令,以通知大数据存储平台ready,并启动数据导出任务,从而实现数据的导出操作。
本实施还提供一种数据同步系统,所述系统包括传统数据存储系统、第一流处理框架Flink、消息系统Kafka、第二流处理框架Flink及大数据存储平台,其中:
第一流处理框架Flink,用于通过flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据,并将将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;
所述第二流处理框架Flink,用于从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。
图8示意性示出了根据本申请实施例的适于实现数据同步方法的计算机设备10的硬件架构示意图。本实施例中,计算机设备10是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图8所示,计算机设备10至少包括但不限于:可通过系统总线相互通信链接存储器120、处理器121、网络接口122。其中:
存储器120至少包括一种类型的计算机可读存储介质,该可读存储介质可以是易失性的,也可以是非易失性的,具体而言,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器120可以是计算机设备10的内部存储模块,例如该计算机设备10的硬盘或内存。在另一些实施例中,存储器120也可以是计算机设备10的外部存储设备,例如该计算机设备10上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器120还可以既包括计算机设备10的内部存储模块也包括其外部存储设备。本实施例中,存储器120通常用于存储安装于计算机设备10的操作系统和各类应用软件,例如多媒体内容联播方法的程序代码等。此外,存储器120还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器121在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其它多媒体内容联播芯片。该处理器121通常用于控制计算机设备10的总体操作,例如执行与计算机设备10进行数据交互或者通信相关的控制和处理等。本实施例中,处理器121用于运行存储器120中存储的程序代码或者处理数据。
网络接口122可包括无线网络接口或有线网络接口,该网络接口122通常用于在计算机设备10与其它计算机设备之间建立通信链接。例如,网络接口122用于通过网络将计算机设备10与外部终端相连,在计算机设备10与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图8仅示出了具有部件120~122的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器120中的多媒体内容联播方法可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器121)所执行,以完成本申请。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的用于通过所述数据质量监控平台实现的数据质量监控方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据;
通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;
通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (14)
1.一种数据同步方法,其特征在于,所述方法包括:
通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据;
通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;
通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。
2.根据权利要求1所述的数据同步方法,其特征在于,所述传统数据存储系统为关系型数据库管理系统MySQL,所述大数据存储平台为数据湖HUDI。
3.根据权利要求2所述的数据同步方法,其特征在于,所述传统数据存储系统包括多个待同步的MySQL,所述通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据包括:
通过flink-cdc-connectors组件创建多个flink cdc任务,其中,flink cdc任务的数量与待同步的MySQL的数量相同;
通过多个flink cdc任务分别消费多个MySQL中的多张数据表中的全量数据和增量变更数据。
4.根据权利要求1所述的数据同步方法,其特征在于,所述通过第一流处理框架Flink的flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据包括:
通过第一流处理框架Flink获取配置信息,所述配置信息包括所述flink-cdc-connectors组件消费的多张数据表的名称;
flink-cdc-connectors组件根据所述配置信息消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据。
5.根据权利要求1所述的数据同步方法,其特征在于,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:
flink-cdc-connectors组件在消费到的每一张数据表中的全量数据和增量变更数据时,为消费到的每一条数据添加一个版本字段;
通过flink-cdc-connectors组件将添加有版本字段的数据写入至消息系统Kafka中的一个主题Topic中。
6.根据权利要求5所述的数据处理方法,其特征在于,所述通过flink-cdc-connectors组件将添加有版本字段的数据写入至消息系统Kafka中的一个主题Topic中包括:
通过flink-cdc-connectors组件将添加有版本字段的数据转换为具有预设格式的二进制数据,并将所述二进制数据封装成row类型的数据写入至消息系统Kafka中的一个主题Topic中。
7.根据权利要求1所述的数据同步方法,其特征在于,所述传统数据存储系统采用分库分表的方式存储数据时,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:
flink-cdc-connectors组件将消费到的多个数据库中属于同一张数据表的全量数据和增量变更数据写入至消息系统Kafka中的同一个主题Topic中。
8.根据权利要求1所述的数据处理方法,其特征在于,所述通过flink-cdc-connectors组件将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中包括:
flink-cdc-connectors组件从预设的connectors组件中获取用户预先配置的数据路由规则,所述数据路由规则用于确定每一张数据表写入的主题Topic;
flink-cdc-connectors组件根据所述数据路由规则将消费到的每一张数据表中的全量数据和增量变更数据写入消息系统Kafka中的与数据表相对应的主题Topic中。
9.根据权利要求1所述的数据处理方法,其特征在于,所述通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中包括:
通过第二流处理框架Flink创建多个Flink任务,其中,Flink任务的数量与Kafka中的主题Topic的数量相同;
通过多个Flink任务分别从所述消息系统Kafka中的多个主题Topic消费数据;
通过每一个Flink任务将消费出的数据写入至大数据存储平台中的与所述每一个Flink任务对应的数据表中。
10.根据权利要求1所述的数据同步方法,其特征在于,所述通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中的步骤之前,还包括:
通过预设的大数据管理平台下发的数据字段变更消息给所述第二流处理框架Flink,并通过所述大数据管理平台对大数据存储平台中的数据表信息进行更新;
所述第二流处理框架Flink根据所述数据字段变更消息确定等待写入至大数据存储平台中的一个数据表中的数据;
通过第二流处理框架Flink从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中还包括:
第二流处理框架Flink在接收到预设的数据写入指令时,将所述等待写入至大数据存储平台中的一个数据表中的数据写入至对应的数据表中。
11.根据权利要求1至10任一项所述的数据同步方法,其特征在于,所述方法还包括:
所述大数据存储平台在接收到数据导出指令后,将所述大数据存储平台中存储的数据导出至下游存储系统中。
12.一种数据同步系统,其特征在于,所述系统包括传统数据存储系统、第一流处理框架Flink、消息系统Kafka、第二流处理框架Flink及大数据存储平台,其中:
第一流处理框架Flink,用于通过flink-cdc-connectors组件消费传统数据存储系统中的多张数据表中的全量数据和增量变更数据,并将将消费到的每一张数据表中的全量数据和增量变更数据写入至消息系统Kafka中的一个主题Topic中;
所述第二流处理框架Flink,用于从所述消息系统Kafka中消费数据,并将从每一个主题Topic中消费出的数据写入至大数据存储平台中的一个数据表中。
13.一种计算机设备,所述计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至11任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210334000.XA CN114722119A (zh) | 2022-03-30 | 2022-03-30 | 数据同步方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210334000.XA CN114722119A (zh) | 2022-03-30 | 2022-03-30 | 数据同步方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114722119A true CN114722119A (zh) | 2022-07-08 |
Family
ID=82239559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210334000.XA Pending CN114722119A (zh) | 2022-03-30 | 2022-03-30 | 数据同步方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114722119A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033646A (zh) * | 2022-08-11 | 2022-09-09 | 深圳联友科技有限公司 | 一种基于Flink&Doris构建实时数仓系统的方法 |
CN115391361A (zh) * | 2022-08-24 | 2022-11-25 | 国任财产保险股份有限公司 | 一种基于分布式数据库的实时数据处理方法及其装置 |
CN115510101A (zh) * | 2022-09-13 | 2022-12-23 | 中电金信软件有限公司 | 数据处理方法及装置、电子设备及可读存储介质 |
CN116204593A (zh) * | 2023-03-17 | 2023-06-02 | 北京金和网络股份有限公司 | 一种数据实时同步的方法、系统、设备及存储介质 |
-
2022
- 2022-03-30 CN CN202210334000.XA patent/CN114722119A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033646A (zh) * | 2022-08-11 | 2022-09-09 | 深圳联友科技有限公司 | 一种基于Flink&Doris构建实时数仓系统的方法 |
CN115033646B (zh) * | 2022-08-11 | 2023-01-13 | 深圳联友科技有限公司 | 一种基于Flink&Doris构建实时数仓系统的方法 |
CN115391361A (zh) * | 2022-08-24 | 2022-11-25 | 国任财产保险股份有限公司 | 一种基于分布式数据库的实时数据处理方法及其装置 |
CN115510101A (zh) * | 2022-09-13 | 2022-12-23 | 中电金信软件有限公司 | 数据处理方法及装置、电子设备及可读存储介质 |
CN116204593A (zh) * | 2023-03-17 | 2023-06-02 | 北京金和网络股份有限公司 | 一种数据实时同步的方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536761B (zh) | 报表数据查询方法及服务器 | |
CN114722119A (zh) | 数据同步方法及系统 | |
CN108491475B (zh) | 数据快速批量导入方法、电子装置及计算机可读存储介质 | |
WO2022126974A1 (zh) | 基于Kafka的增量数据同步方法、装置、设备及介质 | |
US11042503B1 (en) | Continuous data protection and restoration | |
CN108874558B (zh) | 分布式事务的消息订阅方法、电子装置及可读存储介质 | |
US11860741B2 (en) | Continuous data protection | |
CN107958010B (zh) | 用于在线数据迁移的方法及系统 | |
WO2017080431A1 (zh) | 一种基于日志解析的数据库复制方法及装置 | |
CN107256206B (zh) | 字符流格式转换的方法和装置 | |
US8370303B1 (en) | Generating snapshots of data tables | |
CN111339073A (zh) | 实时数据处理方法、装置、电子设备及可读存储介质 | |
AU2017254506B2 (en) | Method, apparatus, computing device and storage medium for data analyzing and processing | |
US9971563B2 (en) | Systems and methods for low interference logging and diagnostics | |
CN113535856B (zh) | 数据同步方法及系统 | |
CN105900093A (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN113051102B (zh) | 文件备份方法、装置、系统、存储介质和计算机设备 | |
EP2904520B1 (en) | Reference data segmentation from single to multiple tables | |
US11243777B2 (en) | Process stream replication for content management system synchronization | |
CN110019169B (zh) | 一种数据处理的方法及装置 | |
CN114077518A (zh) | 数据快照方法、装置、设备及存储介质 | |
CN112035230A (zh) | 一种任务调度文件生成方法、装置及存储介质 | |
CN112925835A (zh) | 数据同步方法、装置和服务器 | |
CN110795920A (zh) | 一种文档生成方法及设备 | |
WO2022121387A1 (zh) | 数据存储方法、装置、服务器及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |