CN113377863B - 数据同步方法、装置、电子设备及计算机可读存储介质 - Google Patents
数据同步方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113377863B CN113377863B CN202010163241.3A CN202010163241A CN113377863B CN 113377863 B CN113377863 B CN 113377863B CN 202010163241 A CN202010163241 A CN 202010163241A CN 113377863 B CN113377863 B CN 113377863B
- Authority
- CN
- China
- Prior art keywords
- data
- synchronization
- data synchronization
- server
- source
- 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.)
- Active
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据同步方法、装置、电子设备及计算机可读存储介质,所述方法包括:响应于接收到数据同步任务,数据同步主服务器将所述数据同步任务拆分为两个或多个数据同步子任务;所述数据同步主服务器将所述数据同步子任务分配给数据同步从服务器;所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端。该技术方案能够在不增加数据负载压力的情况下,有效实现从RDS到HBase的实时数据同步和列数据同步,同时还能够克服不同版本HBase之间的版本兼容问题。
Description
技术领域
本发明实施例涉及数据库数据控制技术领域,具体涉及一种数据同步方法、装置、电子设备及计算机可读存储介质。
背景技术
随着数据技术的发展,数据库的应用也越来越广泛。HBase是一种常用的分布式Nosql非关系型数据库,相比于RDS(Relational Database Service)关系型数据库,HBase具有数据的切分治理全自动,对数据写入十分友好,支持动态列等特点,因此对于某一些应用场景,HBase能够很好的弥补RDS的不足。鉴于上述HBase的特点,在某些应用场景中需要将RDS数据同步至HBase中,比如:1、为了不影响在线业务的查询,需要将在线业务数据同步至HBase,以结合其他大数据组件进行离线数据分析;2、利用HBase支持动态列的功能,将mysql中的多张表构建成一张HBase宽表,以基于HBase实现宽表查询;3、将HBase实现为RDS的历史数据库,即将RDS中的历史数据存至HBase中,使RDS只存储热数据,以节约RDS存储成本。但目前还未存在将RDS实时数据有效同步至HBase的技术方案。
现有技术中开源的数据传递工具Sqoop和Datax可以借助MapReduce(大规模数据集并行运算工具)来将RDS历史存量数据迁移至HBase,具体地,Sqoop根据RDS表中的字段将迁移任务拆分成多个子任务,每个子任务通过JDBC(Java DataBase Connectivity,Java数据库连接)读取RDS对应区间中的数据,然后再通过调用HBase客户端API将数据写入到目标HBase集群中。上述方案虽然能够实现数据的迁移,但存在以下缺陷:1、只能够支持全量数据的批量迁移,若想实现增量数据迁移,需要定期启动Sqoop任务来同步近一段时间的增量数据,因此无法实现低延迟的实时数据同步;2、需通过JDBC读取RDS的数据,大表的数据迁移会产生大量查询请求访问RDS,进而导致RDS的负载变高影响线上业务;3、RDS和HBase表结构之间的映射不够灵活,不支持将RDS表中的列同步至HBase中;4、同步至不同版本的HBase存在版本兼容问题。
发明内容
本发明实施例提供一种数据同步方法、装置、电子设备及计算机可读存储介质。
第一方面,本发明实施例中提供了一种数据同步方法。
具体的,所述数据同步方法,包括:
响应于接收到数据同步任务,数据同步主服务器将所述数据同步任务拆分为两个或多个数据同步子任务;
所述数据同步主服务器将所述数据同步子任务分配给数据同步从服务器;
所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端。
结合第一方面,本发明实施例在第一方面的第一种实现方式中,所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端,包括:
所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,其中,所述数据同步通道至少包括:数据读取器、数据转换器、数据存储队列和数据写入器;
所述数据读取器读取所述源数据端中的源数据;
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端。
结合第一方面和第一方面的第一种实现方式,本发明实施例在第一方面的第二种实现方式中,所述数据读取器读取所述源数据端中的源数据,被实施为:
所述数据读取器读取与所述源数据端对应的分布式发布订阅消息队列中的源数据同步数据,其中,所述分布式发布订阅消息队列中存储有数据传输服务器借助解析所述源数据端日志数据对于所述源数据端进行数据同步得到的源数据同步数据。
结合第一方面、第一方面的第一种实现方式和第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述预设数据映射规则为预设支持动态列的数据映射规则。
结合第一方面的第一种实现方式、第一方面的第二种实现方式和第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中,被实施为:
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据根据预设字段信息进行散列分区,将得到的分区数据分别写入至两个或多个数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端,被实施为:
确定与所述两个或多个数据存储队列对应的数据写入器,并利用所述数据写入器将对应数据存储队列中的数据写入至所述目标数据端。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式和第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,还包括:
所述数据同步从服务器获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,并将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式和第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,所述将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中,被实施为:
响应于接收到连续点位数据写入成功反馈信息,将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式和第一方面的第六种实现方式,本公开在第一方面的第七种实现方式中,所述数据同步从服务器启动时向所述分布式应用程序协调服务器进行注册,以将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,响应于所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障,所述数据同步主服务器基于前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给非故障数据同步从服务器以继续进行数据同步。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式、第一方面的第六种实现方式和第一方面的第七种实现方式,本公开在第一方面的第八种实现方式中,还包括:
响应于监测到数据同步出现异常,执行异常处理流程。
第二方面,本发明实施例中提供了一种数据同步装置。
具体的,所述数据同步装置,包括:
数据同步主服务器,被配置为响应于接收到数据同步任务,将所述数据同步任务拆分为两个或多个数据同步子任务,并将所述数据同步子任务分配给数据同步从服务器;
数据同步从服务器,被配置为根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端。
结合第二方面,本发明实施例在第二方面的第一种实现方式中,所述根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端的部分被配置为:
所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,其中,所述数据同步通道至少包括:数据读取器、数据转换器、数据存储队列和数据写入器;
所述数据读取器读取所述源数据端中的源数据;
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端。
结合第二方面和第二方面的第一种实现方式,本发明实施例在第二方面的第二种实现方式中,所述数据读取器读取所述源数据端中的源数据的部分被配置为:
所述数据读取器读取与所述源数据端对应的分布式发布订阅消息队列中的源数据同步数据,其中,所述分布式发布订阅消息队列中存储有数据传输服务器借助解析所述源数据端日志数据对于所述源数据端进行数据同步得到的源数据同步数据。
结合第二方面、第二方面的第一种实现方式和第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述预设数据映射规则为预设支持动态列的数据映射规则。
结合第二方面的第一种实现方式、第二方面的第二种实现方式和第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中的部分被配置为:
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据根据预设字段信息进行散列分区,将得到的分区数据分别写入至两个或多个数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端,被实施为:
确定与所述两个或多个数据存储队列对应的数据写入器,并利用所述数据写入器将对应数据存储队列中的数据写入至所述目标数据端。
结合第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式和第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,所述数据同步从服务器还被配置为:
获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,并将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式和第二方面的第五种实现方式,本公开在第二方面的第六种实现方式中,所述将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中的部分被配置为:
响应于接收到连续点位数据写入成功反馈信息,将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式和第二方面的第六种实现方式,本公开在第二方面的第七种实现方式中,所述数据同步从服务器还被配置为启动时向所述分布式应用程序协调服务器进行注册,以将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,响应于所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障,所述数据同步主服务器基于前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给非故障数据同步从服务器以继续进行数据同步。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式、第二方面的第六种实现方式和第二方面的第七种实现方式,本公开在第二方面的第八种实现方式中,所述数据同步主服务器还被配置为:
响应于监测到数据同步出现异常,执行异常处理流程。
第三方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持数据同步装置执行上述数据同步方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述数据同步装置还可以包括通信接口,用于数据同步装置与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储数据同步装置所用的计算机指令,其包含用于执行上述数据同步方法为数据同步装置所涉及的计算机指令。
本发明实施例提供的技术方案可包括以下有益效果:
上述技术方案通过将数据同步任务拆分为两个或多个数据同步子任务分配给数据同步从服务器,使其根据分配的数据同步子任务创建数据同步通道,并借助数据同步通道实现从源数据端到目标数据端的数据同步。该技术方案能够在不增加数据负载压力的情况下,有效实现从RDS到HBase的实时数据同步和列数据同步,同时还能够克服不同版本HBase之间的版本兼容问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明实施例。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本发明实施例的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本发明一实施方式的数据同步方法的流程图;
图2示出根据图1所示实施方式的数据同步方法的步骤S103的流程图;
图3示出根据本发明另一实施方式的数据同步方法的流程图;
图4示出根据本发明再一实施方式的数据同步方法的流程图;
图5为根据本发明一实施方式的数据同步整体流程示意图;
图6为根据本发明一实施方式的数据同步服务器执行数据同步的整体流程示意图;
图7示出根据本发明一实施方式的数据同步装置的结构框图;
图8示出根据本发明一实施方式的电子设备的结构框图;
图9是适于用来实现根据本发明一实施方式的数据同步方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本发明实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本发明实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明实施例。
本发明实施例提供的技术方案借助SQL操作对象数据的属性信息来对于所述SQL操作指令进行分级优化,得到优化后的SQL操作指令,以便于后续利用优化后的SQL操作指令直接对于压缩数据进行操作。该技术方案适用性强,避免了繁琐的数据解压过程,在很大程度上节省了被解压数据的存储空间,简化了数据操作流程,提高了数据操作性能。
图1示出根据本发明一实施方式的数据同步方法的流程图,适用于数据同步服务器,如图1所示,所述数据同步方法包括以下步骤S101-S103:
在步骤S101中,响应于接收到数据同步任务,数据同步主服务器将所述数据同步任务拆分为两个或多个数据同步子任务;
在步骤S102中,所述数据同步主服务器将所述数据同步子任务分配给数据同步从服务器;
在步骤S103中,所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端。
上文提及,随着数据技术的发展,数据库的应用也越来越广泛。在一些应用场景下,需要将RDS数据同步至HBase中,但目前还未存在将RDS实时数据有效同步至HBase的技术方案。现有技术中开源的数据传递工具Sqoop和Datax虽然能够实现数据的迁移,但由于存在众多缺陷,均无法满足实时数据同步的需求。
考虑到上述问题,在该实施方式中,提出一种数据同步方法,该方法通过将数据同步任务拆分为两个或多个数据同步子任务分配给数据同步从服务器,使其根据分配的数据同步子任务创建数据同步通道,并借助数据同步通道实现从源数据端到目标数据端的数据同步。该技术方案能够在不增加数据负载压力的情况下,有效实现从RDS到HBase的实时数据同步和列数据同步,同时还能够克服不同版本HBase之间的版本兼容问题。
在本发明一实施方式中,所述数据同步任务指的是用户、服务器或处理器等数据同步需求方提出的以对数据进行同步传输为目的的任务,所述数据同步服务器接收到所述数据同步任务后,根据所述数据同步任务携带的任务信息进行处理,以最终实现所述数据同步任务所要求的数据同步。其中,所述数据同步任务可携带以下信息中的一种或多种:源数据端识别信息、源数据端源数据库识别信息、源数据端源数据库源数据表识别信息、源数据端源数据库源数据表源数据列识别信息、目标数据端识别信息、目标数据端目标数据库识别信息、目标数据端目标数据库目标数据表识别信息、目标数据端目标数据库目标数据表目标数据列识别信息、数据同步字段信息、预设数据转换规则等等。基于所述数据同步任务携带的信息,即可根据源数据信息、目标数据信息、数据同步字段信息和预设数据转换规则实现符合所述数据同步任务要求的数据同步。
在本发明一实施方式中,所述数据同步服务器包括数据同步主服务器和一个或多个数据同步从服务器,其中,所述数据同步主服务器在接收到所述数据同步任务后,将所述数据同步任务拆分为两个或多个数据同步子任务,并将所述数据同步子任务分配给数据同步从服务器。其中,在对所述数据同步任务进行拆分时,可根据所述数据同步子任务的总数据量、每个数据同步子任务的数据量、所述数据同步从服务器的数量、所述数据同步从服务器的数据处理容量等因素对于所述数据同步任务进行拆分,比如,若某一数据同步任务意于对于多个源数据表进行数据同步,则可根据所述数据同步从服务器的数量将所述数据同步任务分为多个数据同步子任务,使得每一数据同步子任务执行对于某一源数据表的数据同步。其中,所述数据同步子任务与数据同步从服务器之间的对应关系可以是一对一,也可以是多对一,即,当所述数据同步从服务器数量充足时,可以将不同数据同步子任务分配给不同的数据同步从服务器进行处理,使得每一数据同步从服务器处理一个数据同步子任务,当所述数据同步从服务器数量紧张时,也可以将两个或多个数据同步子任务分配给同一数据同步从服务器进行处理。
在本发明一实施方式中,如图2所示,所述步骤S103,即所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端的步骤,包括以下步骤S201-S204:
在步骤S201中,所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,其中,所述数据同步通道至少包括:数据读取器、数据转换器、数据存储队列和数据写入器;
在步骤S202中,所述数据读取器读取所述源数据端中的源数据;
在步骤S203中,所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中;
在步骤S204中,所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端。
在本发明一实施方式中,所述数据同步从服务器接收到分配的数据同步子任务之后,通过创建相应的数据同步通道,并借助所述数据同步通道来实现将源数据端中的数据同步至目标数据端,其中,所述数据同步通道至少包括:数据读取器、数据转化器、数据存储队列和数据写入器。也就是说,所述数据同步从服务器通过所述数据读取器从所述源数据端中读取源数据,通过数据转化器对于读取得到的数据根据预设数据映射规则进行映射转化,并将映射转化后的数据写入至数据存储队列中,最后通过所述数据写入器将所述数据存储队列中的数据写入至目标数据端中,以实现数据的同步。
在本发明一实施方式中,所述步骤S202,即所述数据读取器读取所述源数据端中的源数据的步骤,可被实施为:
所述数据读取器读取与所述源数据端对应的分布式发布订阅消息队列中的源数据同步数据,其中,所述分布式发布订阅消息队列中存储有数据传输(DTS,DataTransmission Service)服务器借助解析所述源数据端日志数据对于所述源数据端进行数据同步得到的源数据同步数据。
考虑到RDS会将每次数据操作、操作时间、操作前的数据和操作后的数据均实时写入至binlog日志文件中,因此,为了避免数据的采集或获取对于在线数据业务产生影响,在该实施方式中,源数据端RDS在提供对外数据订阅服务时,通过启动日志解析进程去实时抓取RDS实例的binlog日志文件数据,然后再通过解析RDS日志数据,将RDS数据实时地同步到Kafka分布式发布订阅消息队列中,而所述Kafka分布式发布订阅消息队列就可以作为提供对外数据订阅服务的数据入口。进一步地,在该实施方式中,当所述数据读取器需要读取源数据端的源数据时,可以直接到与所述源数据端对应的分布式发布订阅消息队列中进行源数据的读取,比如,借助数据传输服务器提供的安装文件从所述分布式发布订阅消息队列中读取源数据。
在本发明一实施方式中,考虑到源数据端与目标数据端存储数据的格式、存储数据的规则均有可能存在不同之处,为了保障数据在转存过程中能够维持其准确性和有效性,因此,在所述步骤S203中在将需要同步的数据写入数据存储队列之前,需要首先根据预设数据映射规则对于所述源数据进行映射转化,转化为适合目标数据端存储的数据。其中,对于所述源数据进行映射转化所使用的预设数据映射规则为预设支持动态列的数据映射规则,也可以称之为表结构的映射规则,所述预设支持动态列的数据映射规则可包括源数据端识别信息、源数据端源数据库识别信息、源数据端源数据库源数据表识别信息、源数据端源数据库源数据表源数据列识别信息等源数据识别信息与目标数据端识别信息、目标数据端目标数据库识别信息、目标数据端目标数据库目标数据表识别信息、目标数据端目标数据库目标数据表目标数据列识别信息等目标数据识别信息之间的映射关系,比如:源数据端识别信息与目标数据端识别信息之间的映射关系、源数据端源数据库识别信息与目标数据端目标数据库识别信息之间的映射关系、源数据端源数据库源数据表识别信息与目标数据端目标数据库目标数据表识别信息之间的映射关系、源数据端源数据库源数据表源数据列识别信息与目标数据端目标数据库目标数据表目标数据列识别信息之间的映射关系等等。
在本发明一实施方式中,所述步骤S203,即所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中的步骤,可被实施为:
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据根据预设字段信息进行散列分区,将得到的分区数据分别写入至两个或多个数据存储队列中;
所述步骤S204,即所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端,可被实施为:
确定与所述两个或多个数据存储队列对应的数据写入器,并利用所述数据写入器将对应数据存储队列中的数据写入至所述目标数据端。
上述得到的RDS订阅数据是按照时间顺序进行保序的,但是如上文所述,所述数据同步服务器设置了多个数据写入器读取数据,即采用了读写异步的方式,以实现多线程工作,提高系统的吞吐量,但该处理方式很难避免数据乱序的问题,即由于多个数据写入器的存在,使得RDS新数据有可能先于旧数据被同步到HBase中,从而导致旧数据覆盖掉新数据。因此,在该实施方式中,在将映射转化后的数据写入至数据存储队列中时,首先根据预设字段信息对于所述映射转化后的数据进行散列分区,再将得到的分区数据分别写入至两个或多个数据存储队列中,然后再利用与所述两个或多个数据存储队列对应的数据写入器将对应数据存储队列中的数据写入至所述目标数据端,这样就能够使得具有同一特征值的数据被同一数据写入器处理,从而有效避免了多线程处理有可能导致的数据乱序问题。其中,所述散列分区处理比如可以为计算所述映射转化后的数据的散列值,然后将具有相同散列值的数据作为同一分区数据,其中,所述散列值比如可以为哈希值。
在本发明一实施方式中,所述方法还包括数据同步从服务器将数据同步状态信息发送给数据同步主服务器进行数据点位同步的步骤,即如图3所示,所述数据同步方法包括以下步骤S301-S304:
在步骤S301中,响应于接收到数据同步任务,数据同步主服务器将所述数据同步任务拆分为两个或多个数据同步子任务;
在步骤S302中,所述数据同步主服务器将所述数据同步子任务分配给数据同步从服务器;
在步骤S303中,所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端;
在步骤S304中,所述数据同步从服务器获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,并将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中。
为了对于数据点位同步信息进行管理,对于数据同步进程进行控制,在该实施方式中,在数据同步的过程中,所述数据同步从服务器会实时或者按照预设时间间隔获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,再将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中。其中,所述数据同步状态信息可包括以下信息中的一种或多种:当前已经实现同步的数据点位信息、相应数据同步通道标识信息等等,其中,所述数据点位用于表征数据的同步进度,比如所述数据点位可以为已同步数据包的序号等等。
在本发明一实施方式中,所述步骤S304,即所述将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中的步骤,可被实施为:
响应于接收到连续点位数据写入成功反馈信息,将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作。
考虑到数据在同步过程中有可能会出现传输故障从而导致部分数据同步失败的情况,此时,为了对于数据同步状态进行有效有序的管理,在该实施方式中,所述数据同步主服务器只有当接收到连续点位数据写入成功反馈信息时,才将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作,以实现同步数据的断点续传。比如,若某一数据写入器需要进行同步的数据有数据包1-数据包6,但在数据传输过程中,只接收到了数据包1、数据包2、数据包3和数据包5的数据写入成功反馈信息,此时,所述数据同步主服务器只将数据包3的点位同步信息持久化存储至分布式应用程序协调服务器中,同时使数据写入器对于写入失败的数据包4和数据包6执行重新写入操作,若后续收到数据包4的数据写入成功反馈信息,此时所述数据同步主服务器可将数据包5的点位同步信息持久化存储至分布式应用程序协调服务器中,待到收到数据包6的数据写入成功反馈信息时,再将数据包6的点位同步信息持久化存储至分布式应用程序协调服务器中。
在本发明一实施方式中,所述方法还包括当检测到数据同步从服务器出现故障时的处理步骤,即所述数据同步从服务器在启动时向所述分布式应用程序协调服务器进行注册,以将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,响应于所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障,所述数据同步主服务器基于前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给非故障数据同步从服务器以继续进行数据同步。
为了对于数据同步从服务器进行状态监测,同时保障数据同步流程的正常执行,在该实施方式中,所述数据同步从服务器在启动时首先向所述分布式应用程序协调服务器进行注册,以在其进行数据同步的过程中将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,同时,当所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障时,所述数据同步主服务器基于发生故障的数据同步从服务器前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给其他非故障、处于存活状态的数据同步从服务器以继续进行数据的同步,从而避免了由于数据同步从服务器故障而导致的数据同步传输中断事故。
在本发明一实施方式中,所述方法还包括当监测到数据同步出现异常时,执行异常处理流程的步骤,即如图4所示,所述数据同步方法包括以下步骤S401-S404:
在步骤S401中,响应于接收到数据同步任务,数据同步主服务器将所述数据同步任务拆分为两个或多个数据同步子任务;
在步骤S402中,所述数据同步主服务器将所述数据同步子任务分配给数据同步从服务器;
在步骤S403中,所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端;
在步骤S404中,响应于监测到数据同步出现异常,执行异常处理流程。
为了保障数据同步流程的正常进行,在数据同步过程中,所述数据同步服务器会监控整个数据同步流程的状态,比如数据同步写耗时、数据同步写延迟、数据同步读耗时、数据同步读延迟、队列等待耗时等等,其中,所述数据同步写耗时、数据同步写延迟、数据同步读耗时、数据同步读延迟、队列等待耗时的示意图如图6所示,当监测到数据同步流程的状态出现异常,就可启动异常处理流程,其中,所述异常处理流程可包括以下处理中的一种或多种:故障定位、数据重传、异常报警等等。比如,若监测到数据同步写耗时超过预设写耗时阈值,则说明数据写入流程部分可能存在故障,可进一步进行数据写入故障排查,执行异常报警等等;若监测到数据同步读耗时超过预设读耗时阈值,则说明数据读取流程部分可能存在故障,可进一步进行数据读取故障排查,执行异常报警等等。
图5为根据本发明一实施方式的数据同步整体流程示意图,如图5所示,源数据端RDS实时抓取RDS实例的binlog日志文件数据,数据传输服务器从RDS处拉取binlog日志文件数据,对其进行解析据,并同步到Kafka分布式发布订阅消息队列中,用以提供对外数据订阅服务的数据入口。数据同步服务器借助所述数据传输服务器提供的安装文件以及所述数据入口读取源数据,对所述源数据进行处理后写入目标数据端。
图6为根据本发明一实施方式的数据同步服务器执行数据同步的整体流程示意图,如图6所示,数据同步服务器从与源数据端对应的、借助解析源数据端日志数据得到的分布式发布订阅消息队列中读取源数据,根据预设数据映射规则对源数据进行映射转化,将映射转化后的数据进行散列分区,将得到的分区数据分别写入至数据存储队列中,对应的数据写入器再将数据存储队列中的数据分别写入至目标数据端,在上述数据同步过程中,根据数据同步状态信息得到的数据点位同步信息还会按照预设时间间隔持久化存储至分布式应用程序协调服务器中。
下述为本发明装置实施例,可以用于执行本发明方法实施例。
图7示出根据本发明一实施方式的数据同步装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,可实现为数据同步服务器。如图7所示,所述数据同步装置包括:
数据同步主服务器701,被配置为响应于接收到数据同步任务,将所述数据同步任务拆分为两个或多个数据同步子任务,并将所述数据同步子任务分配给数据同步从服务器;
数据同步从服务器702,被配置为根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端。
上文提及,随着数据技术的发展,数据库的应用也越来越广泛。在一些应用场景下,需要将RDS数据同步至HBase中,但目前还未存在将RDS实时数据有效同步至HBase的技术方案。现有技术中开源的数据传递工具Sqoop和Datax虽然能够实现数据的迁移,但由于存在众多缺陷,均无法满足实时数据同步的需求。
考虑到上述问题,在该实施方式中,提出一种数据同步装置,该装置通过将数据同步任务拆分为两个或多个数据同步子任务分配给数据同步从服务器,使其根据分配的数据同步子任务创建数据同步通道,并借助数据同步通道实现从源数据端到目标数据端的数据同步。该技术方案能够在不增加数据负载压力的情况下,有效实现从RDS到HBase的实时数据同步和列数据同步,同时还能够克服不同版本HBase之间的版本兼容问题。
在本发明一实施方式中,所述数据同步任务指的是用户、服务器或处理器等数据同步需求方提出的以对数据进行同步传输为目的的任务,所述数据同步服务器接收到所述数据同步任务后,根据所述数据同步任务携带的任务信息进行处理,以最终实现所述数据同步任务所要求的数据同步。其中,所述数据同步任务可携带以下信息中的一种或多种:源数据端识别信息、源数据端源数据库识别信息、源数据端源数据库源数据表识别信息、源数据端源数据库源数据表源数据列识别信息、目标数据端识别信息、目标数据端目标数据库识别信息、目标数据端目标数据库目标数据表识别信息、目标数据端目标数据库目标数据表目标数据列识别信息、数据同步字段信息、预设数据转换规则等等。基于所述数据同步任务携带的信息,即可根据源数据信息、目标数据信息、数据同步字段信息和预设数据转换规则实现符合所述数据同步任务要求的数据同步。
在本发明一实施方式中,所述数据同步服务器包括数据同步主服务器和一个或多个数据同步从服务器,其中,所述数据同步主服务器在接收到所述数据同步任务后,将所述数据同步任务拆分为两个或多个数据同步子任务,并将所述数据同步子任务分配给数据同步从服务器。其中,在对所述数据同步任务进行拆分时,可根据所述数据同步子任务的总数据量、每个数据同步子任务的数据量、所述数据同步从服务器的数量、所述数据同步从服务器的数据处理容量等因素对于所述数据同步任务进行拆分,比如,若某一数据同步任务意于对于多个源数据表进行数据同步,则可根据所述数据同步从服务器的数量将所述数据同步任务分为多个数据同步子任务,使得每一数据同步子任务执行对于某一源数据表的数据同步。其中,所述数据同步子任务与数据同步从服务器之间的对应关系可以是一对一,也可以是多对一,即,当所述数据同步从服务器数量充足时,可以将不同数据同步子任务分配给不同的数据同步从服务器进行处理,使得每一数据同步从服务器处理一个数据同步子任务,当所述数据同步从服务器数量紧张时,也可以将两个或多个数据同步子任务分配给同一数据同步从服务器进行处理。
在本发明一实施方式中,所述根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端的部分被配置为:
所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,其中,所述数据同步通道至少包括:数据读取器、数据转换器、数据存储队列和数据写入器;
所述数据读取器读取所述源数据端中的源数据;
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端。
在本发明一实施方式中,所述数据同步从服务器接收到分配的数据同步子任务之后,通过创建相应的数据同步通道,并借助所述数据同步通道来实现将源数据端中的数据同步至目标数据端,其中,所述数据同步通道至少包括:数据读取器、数据转化器、数据存储队列和数据写入器。也就是说,所述数据同步从服务器通过所述数据读取器从所述源数据端中读取源数据,通过数据转化器对于读取得到的数据根据预设数据映射规则进行映射转化,并将映射转化后的数据写入至数据存储队列中,最后通过所述数据写入器将所述数据存储队列中的数据写入至目标数据端中,以实现数据的同步。
在本发明一实施方式中,所述数据读取器读取所述源数据端中的源数据的部分被配置为:
所述数据读取器读取与所述源数据端对应的分布式发布订阅消息队列中的源数据同步数据,其中,所述分布式发布订阅消息队列中存储有数据传输(DTS,DataTransmission Service)服务器借助解析所述源数据端日志数据对于所述源数据端进行数据同步得到的源数据同步数据。
考虑到RDS会将每次数据操作、操作时间、操作前的数据和操作后的数据均实时写入至binlog日志文件中,因此,为了避免数据的采集或获取对于在线数据业务产生影响,在该实施方式中,源数据端RDS在提供对外数据订阅服务时,通过启动日志解析进程去实时抓取RDS实例的binlog日志文件数据,然后再通过解析RDS日志数据,将RDS数据实时地同步到Kafka分布式发布订阅消息队列中,而所述Kafka分布式发布订阅消息队列就可以作为提供对外数据订阅服务的数据入口。进一步地,在该实施方式中,当所述数据读取器需要读取源数据端的源数据时,可以直接到与所述源数据端对应的分布式发布订阅消息队列中进行源数据的读取,比如,借助数据传输服务器提供的安装文件从所述分布式发布订阅消息队列中读取源数据。
在本发明一实施方式中,考虑到源数据端与目标数据端存储数据的格式、存储数据的规则均有可能存在不同之处,为了保障数据在转存过程中能够维持其准确性和有效性,因此,在将需要同步的数据写入数据存储队列之前,需要首先根据预设数据映射规则对于所述源数据进行映射转化,转化为适合目标数据端存储的数据。其中,对于所述源数据进行映射转化所使用的预设数据映射规则为预设支持动态列的数据映射规则,也可以称之为表结构的映射规则,所述预设支持动态列的数据映射规则可包括源数据端识别信息、源数据端源数据库识别信息、源数据端源数据库源数据表识别信息、源数据端源数据库源数据表源数据列识别信息等源数据识别信息与目标数据端识别信息、目标数据端目标数据库识别信息、目标数据端目标数据库目标数据表识别信息、目标数据端目标数据库目标数据表目标数据列识别信息等目标数据识别信息之间的映射关系,比如:源数据端识别信息与目标数据端识别信息之间的映射关系、源数据端源数据库识别信息与目标数据端目标数据库识别信息之间的映射关系、源数据端源数据库源数据表识别信息与目标数据端目标数据库目标数据表识别信息之间的映射关系、源数据端源数据库源数据表源数据列识别信息与目标数据端目标数据库目标数据表目标数据列识别信息之间的映射关系等等。
在本发明一实施方式中,所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中的部分被配置为:
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据根据预设字段信息进行散列分区,将得到的分区数据分别写入至两个或多个数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端,被实施为:
确定与所述两个或多个数据存储队列对应的数据写入器,并利用所述数据写入器将对应数据存储队列中的数据写入至所述目标数据端。
上述得到的RDS订阅数据是按照时间顺序进行保序的,但是如上文所述,所述数据同步服务器设置了多个数据写入器读取数据,即采用了读写异步的方式,以实现多线程工作,提高系统的吞吐量,但该处理方式很难避免数据乱序的问题,即由于多个数据写入器的存在,使得RDS新数据有可能先于旧数据被同步到HBase中,从而导致旧数据覆盖掉新数据。因此,在该实施方式中,在将映射转化后的数据写入至数据存储队列中时,首先根据预设字段信息对于所述映射转化后的数据进行散列分区,再将得到的分区数据分别写入至两个或多个数据存储队列中,然后再利用与所述两个或多个数据存储队列对应的数据写入器将对应数据存储队列中的数据写入至所述目标数据端,这样就能够使得具有同一特征值的数据被同一数据写入器处理,从而有效避免了多线程处理有可能导致的数据乱序问题。其中,所述散列分区处理比如可以为计算所述映射转化后的数据的散列值,然后将具有相同散列值的数据作为同一分区数据,其中,所述散列值比如可以为哈希值。
在本发明一实施方式中,所述数据同步从服务器还被配置为:
获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,并将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中。
为了对于数据点位同步信息进行管理,对于数据同步进程进行控制,在该实施方式中,在数据同步的过程中,所述数据同步从服务器会实时或者按照预设时间间隔获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,再将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中。其中,所述数据同步状态信息可包括以下信息中的一种或多种:当前已经实现同步的数据点位信息、相应数据同步通道标识信息等等,其中,所述数据点位用于表征数据的同步进度,比如所述数据点位可以为已同步数据包的序号等等。
在本发明一实施方式中,所述将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中的部分被配置为:
响应于接收到连续点位数据写入成功反馈信息,将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作。
考虑到数据在同步过程中有可能会出现传输故障从而导致部分数据同步失败的情况,此时,为了对于数据同步状态进行有效有序的管理,在该实施方式中,所述数据同步主服务器只有当接收到连续点位数据写入成功反馈信息时,才将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作,以实现同步数据的断点续传。比如,若某一数据写入器需要进行同步的数据有数据包1-数据包6,但在数据传输过程中,只接收到了数据包1、数据包2、数据包3和数据包5的数据写入成功反馈信息,此时,所述数据同步主服务器只将数据包3的点位同步信息持久化存储至分布式应用程序协调服务器中,同时使数据写入器对于写入失败的数据包4和数据包6执行重新写入操作,若后续收到数据包4的数据写入成功反馈信息,此时所述数据同步主服务器可将数据包5的点位同步信息持久化存储至分布式应用程序协调服务器中,待到收到数据包6的数据写入成功反馈信息时,再将数据包6的点位同步信息持久化存储至分布式应用程序协调服务器中。
在本发明一实施方式中,所述数据同步从服务器还被配置为启动时向所述分布式应用程序协调服务器进行注册,以将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,响应于所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障,所述数据同步主服务器基于前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给非故障数据同步从服务器以继续进行数据同步。
为了对于数据同步从服务器进行状态监测,同时保障数据同步流程的正常执行,在该实施方式中,所述数据同步从服务器在启动时首先向所述分布式应用程序协调服务器进行注册,以在其进行数据同步的过程中将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,同时,当所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障时,所述数据同步主服务器基于发生故障的数据同步从服务器前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给其他非故障、处于存活状态的数据同步从服务器以继续进行数据的同步,从而避免了由于数据同步从服务器故障而导致的数据同步传输中断事故。
在本发明一实施方式中,所述数据同步主服务器还被配置为:
响应于监测到数据同步出现异常,执行异常处理流程。
为了保障数据同步流程的正常进行,在数据同步过程中,所述数据同步服务器会监控整个数据同步流程的状态,比如数据同步写耗时、数据同步写延迟、数据同步读耗时、数据同步读延迟、队列等待耗时等等,其中,所述数据同步写耗时、数据同步写延迟、数据同步读耗时、数据同步读延迟、队列等待耗时的示意图如图6所示,当监测到数据同步流程的状态出现异常,就可启动异常处理流程,其中,所述异常处理流程可包括以下处理中的一种或多种:故障定位、数据重传、异常报警等等。比如,若监测到数据同步写耗时超过预设写耗时阈值,则说明数据写入流程部分可能存在故障,可进一步进行数据写入故障排查,执行异常报警等等;若监测到数据同步读耗时超过预设读耗时阈值,则说明数据读取流程部分可能存在故障,可进一步进行数据读取故障排查,执行异常报警等等。
本发明实施例还公开了一种电子设备,图8示出根据本发明一实施方式的电子设备的结构框图,如图8所示,所述电子设备800包括存储器801和处理器802;其中,
所述存储器801用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器802执行以实现上述任一方法步骤。
图9是适于用来实现根据本发明一实施方式的数据同步方法的计算机系统的结构示意图。
如图9所示,计算机系统900包括处理单元901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行上述实施方式中的各种处理。在RAM903中,还存储有系统900操作所需的各种程序和数据。处理单元901、ROM902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。其中,所述处理单元901可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
特别地,根据本发明的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本发明的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述数据同步方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。
附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本发明实施例的方法。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种数据同步方法,适用于数据同步服务器,包括:
响应于接收到数据同步任务,数据同步主服务器将所述数据同步任务拆分为两个或多个数据同步子任务;
所述数据同步主服务器将所述数据同步子任务分配给数据同步从服务器;
所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端;
所述数据同步从服务器获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,并将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中;
所述数据同步从服务器启动时向所述分布式应用程序协调服务器进行注册,以将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,响应于所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障,所述数据同步主服务器基于前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给非故障数据同步从服务器以继续进行数据同步。
2.根据权利要求1所述的方法,所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端,包括:
所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,其中,所述数据同步通道至少包括:数据读取器、数据转换器、数据存储队列和数据写入器;
所述数据读取器读取所述源数据端中的源数据;
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端。
3.根据权利要求2所述的方法,所述数据读取器读取所述源数据端中的源数据,被实施为:
所述数据读取器读取与所述源数据端对应的分布式发布订阅消息队列中的源数据同步数据,其中,所述分布式发布订阅消息队列中存储有数据传输服务器借助解析所述源数据端日志数据对于所述源数据端进行数据同步得到的源数据同步数据。
4.根据权利要求2或3所述的方法,所述预设数据映射规则为预设支持动态列的数据映射规则。
5.根据权利要求2所述的方法,所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中,被实施为:
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据根据预设字段信息进行散列分区,将得到的分区数据分别写入至两个或多个数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端,被实施为:
确定与所述两个或多个数据存储队列对应的数据写入器,并利用所述数据写入器将对应数据存储队列中的数据写入至所述目标数据端。
6.根据权利要求1所述的方法,所述将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中,被实施为:
响应于接收到连续点位数据写入成功反馈信息,将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作。
7.根据权利要求1或2所述的方法,还包括:
响应于监测到数据同步出现异常,执行异常处理流程。
8.一种数据同步装置,适用于数据同步服务器,包括:
数据同步主服务器,被配置为响应于接收到数据同步任务,将所述数据同步任务拆分为两个或多个数据同步子任务,并将所述数据同步子任务分配给数据同步从服务器;
数据同步从服务器,被配置为根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端;
所述数据同步从服务器还被配置为,获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,并将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中;
所述数据同步从服务器启动时向所述分布式应用程序协调服务器进行注册,以将其状态信息按照预设时间间隔发送给所述分布式应用程序协调服务器,响应于所述分布式应用程序协调服务器检测到所述数据同步从服务器发生故障,所述数据同步主服务器基于前次数据同步成功点位构建新数据同步任务,并将所述新数据同步任务分配给非故障数据同步从服务器以继续进行数据同步。
9.根据权利要求8所述的装置,所述根据分配得到的所述数据同步子任务创建数据同步通道,并借助所述数据同步通道将源数据端中的数据同步至目标数据端的部分被配置为:
所述数据同步从服务器根据分配得到的所述数据同步子任务创建数据同步通道,其中,所述数据同步通道至少包括:数据读取器、数据转换器、数据存储队列和数据写入器;
所述数据读取器读取所述源数据端中的源数据;
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端。
10.根据权利要求9所述的装置,其特征在于,所述预设数据映射规则为预设支持动态列的数据映射规则;
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据写入至数据存储队列中的部分被配置为:
所述数据转换器根据预设数据映射规则对所述源数据进行映射转化并将映射转化后的数据根据预设字段信息进行散列分区,将得到的分区数据分别写入至两个或多个数据存储队列中;
所述数据写入器将所述数据存储队列中的数据写入至所述目标数据端,被实施为:
确定与所述两个或多个数据存储队列对应的数据写入器,并利用所述数据写入器将对应数据存储队列中的数据写入至所述目标数据端。
11.根据权利要求8或9所述的装置,所述数据同步从服务器还被配置为:
获取数据同步状态信息,并按照预设时间间隔将所述数据同步状态信息发送给所述数据同步主服务器,以使所述数据同步主服务器根据所述数据同步状态信息确定数据点位同步信息,并将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中。
12.根据权利要求11所述的装置,所述将所述数据点位同步信息持久化存储至分布式应用程序协调服务器中的部分被配置为:
响应于接收到连续点位数据写入成功反馈信息,将连续点位中末位点位同步信息持久化存储至分布式应用程序协调服务器中,并使所述数据写入器对于写入失败的数据执行重新写入操作。
13.一种电子设备,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-7任一项所述的方法步骤。
14.一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现权利要求1-7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010163241.3A CN113377863B (zh) | 2020-03-10 | 2020-03-10 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010163241.3A CN113377863B (zh) | 2020-03-10 | 2020-03-10 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377863A CN113377863A (zh) | 2021-09-10 |
CN113377863B true CN113377863B (zh) | 2022-04-29 |
Family
ID=77569001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010163241.3A Active CN113377863B (zh) | 2020-03-10 | 2020-03-10 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377863B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113609230A (zh) * | 2021-09-16 | 2021-11-05 | 平安国际智慧城市科技股份有限公司 | 数据同步异常告警方法、装置、计算机设备和存储介质 |
CN115314512B (zh) * | 2022-10-09 | 2023-02-17 | 中孚信息股份有限公司 | 一种海量终端数据同步方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419615A (zh) * | 2008-12-10 | 2009-04-29 | 阿里巴巴集团控股有限公司 | 一种前后台数据库的同步方法及装置 |
CN101751429A (zh) * | 2008-12-12 | 2010-06-23 | 中国移动通信集团山东有限公司 | 一种前后台数据库的同步方法及装置 |
CN106156165A (zh) * | 2015-04-16 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 异构数据源之间的数据同步方法和装置 |
CN106250444A (zh) * | 2016-07-27 | 2016-12-21 | 北京集奥聚合科技有限公司 | 一种异构数据源的实时入库系统及方法 |
CN106844018A (zh) * | 2015-12-07 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种任务处理方法、装置及系统 |
CN108347476A (zh) * | 2018-01-22 | 2018-07-31 | 广东欧珀移动通信有限公司 | 跨机房数据同步方法、装置以及服务器 |
CN109815028A (zh) * | 2018-12-27 | 2019-05-28 | 北京摩拜科技有限公司 | 数据同步的系统、方法、装置和计算机存储介质 |
CN110287033A (zh) * | 2019-07-03 | 2019-09-27 | 网易(杭州)网络有限公司 | 批量任务处理方法、装置、系统、设备和可读存储介质 |
CN110765206A (zh) * | 2019-10-21 | 2020-02-07 | 广东小天才科技有限公司 | 一种数据同步系统、方法、装置、设备及存储介质 |
CN110795496A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置及系统 |
CN110807067A (zh) * | 2019-09-29 | 2020-02-18 | 北京淇瑀信息科技有限公司 | 关系型数据库和数据仓库的数据同步方法、装置及设备 |
-
2020
- 2020-03-10 CN CN202010163241.3A patent/CN113377863B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419615A (zh) * | 2008-12-10 | 2009-04-29 | 阿里巴巴集团控股有限公司 | 一种前后台数据库的同步方法及装置 |
CN101751429A (zh) * | 2008-12-12 | 2010-06-23 | 中国移动通信集团山东有限公司 | 一种前后台数据库的同步方法及装置 |
CN106156165A (zh) * | 2015-04-16 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 异构数据源之间的数据同步方法和装置 |
CN106844018A (zh) * | 2015-12-07 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种任务处理方法、装置及系统 |
CN106250444A (zh) * | 2016-07-27 | 2016-12-21 | 北京集奥聚合科技有限公司 | 一种异构数据源的实时入库系统及方法 |
CN108347476A (zh) * | 2018-01-22 | 2018-07-31 | 广东欧珀移动通信有限公司 | 跨机房数据同步方法、装置以及服务器 |
CN110795496A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置及系统 |
CN109815028A (zh) * | 2018-12-27 | 2019-05-28 | 北京摩拜科技有限公司 | 数据同步的系统、方法、装置和计算机存储介质 |
CN110287033A (zh) * | 2019-07-03 | 2019-09-27 | 网易(杭州)网络有限公司 | 批量任务处理方法、装置、系统、设备和可读存储介质 |
CN110807067A (zh) * | 2019-09-29 | 2020-02-18 | 北京淇瑀信息科技有限公司 | 关系型数据库和数据仓库的数据同步方法、装置及设备 |
CN110765206A (zh) * | 2019-10-21 | 2020-02-07 | 广东小天才科技有限公司 | 一种数据同步系统、方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
"Hadoop Task Scheduling - Improving Algorithms Using Tabular Approach";Abhishek Maheshwari et al.;《International Conference on Communication Systems and Network Technologies》;20151001;全文 * |
"基于MapReduce模型带任务分割的平行机调度优化";黄基诞 等;《控制与决策》;20190731;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113377863A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078147B (zh) | 一种缓存数据的处理方法、装置、设备及存储介质 | |
WO2017041398A1 (zh) | 数据传输方法和装置 | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
CN113377863B (zh) | 数据同步方法、装置、电子设备及计算机可读存储介质 | |
CN111600957A (zh) | 文件传输方法、装置、系统和电子设备 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN113193947B (zh) | 实现分布式全局序的方法、设备、介质及程序产品 | |
CN108140035B (zh) | 分布式系统的数据库复制方法及装置 | |
CN113407637A (zh) | 一种数据同步方法、装置、电子设备以及存储介质 | |
CN115686875A (zh) | 用于在多个进程之间传输数据的方法、设备和程序产品 | |
CN114676199A (zh) | 一种同步方法、同步系统、计算机设备和存储介质 | |
CN111444148B (zh) | 基于MapReduce的数据传输方法和装置 | |
CN114077518A (zh) | 数据快照方法、装置、设备及存储介质 | |
CN111679892A (zh) | 分布式事务的处理方法、装置、设备及介质 | |
CN113760522A (zh) | 一种任务处理方法和装置 | |
CN116701352A (zh) | 一种数据库数据迁移方法及系统 | |
US10680877B2 (en) | Information transmission, sending, and acquisition method and device | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
CN111159237B (zh) | 系统数据分发方法、装置、存储介质及电子设备 | |
CN113760920A (zh) | 一种数据同步方法、装置、电子设备和存储介质 | |
CN113760469A (zh) | 分布式计算的方法和装置 | |
CN113760862A (zh) | 一种增量数据断点续传方法、装置、设备及存储介质 | |
CN110784532B (zh) | 双向数据同步方法及系统 | |
CN115408360A (zh) | 存储数据的方法、装置、设备和计算机可读介质 | |
CN114780293A (zh) | 基于hadoop的异地双活容灾方法、装置、设备和可读存储介质 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40058128 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |