一种分布式数据源异构同步的方法

文档序号:7635 发布日期:2021-09-17 浏览:33次 英文

一种分布式数据源异构同步的方法

技术领域

本发明申请为申请日2018年09月13日,申请号为:201811066833.2,名称为“一种分布式数据源异构同步平台及同步方法”的发明专利申请的分案申请。本发明属于计算机领域,具体涉及一种分布式数据源异构同步平台及同步方法。

背景技术

随着现代电商技术、大数据分析和人工智能技术的高速发展,对大量的、类型各异的信息数据进行整合,实现信息共享和内部信息一体化,已变得越来越重要。当前各个企业的信息化发展大都存在异构数据源难以同步的问题。一般来说,完成特定功能的子模块以企业信息系统为中心,各自封闭,扩展性和交互性较差;各类信息系统相互独立,无法利用充分利用不同数据源之间的优点进行数据的整合;本发明就是针对当前企业中存在的项目数据源异构问题,研究实现离线的分布式异构数据源同步的方法。

目前,大多数的数据交换和共享服务并不成熟,做的比较好的是阿里巴巴的开源框架Datax,它现在已经支持市面上使用的大多数常用的数据源,并且支持在异构的数据库或是文件系统之间进行高速的交换数据,提供了统一的接口与不同的插件进行交互,插件仅需实现对数据处理系统的访问,但是其难以独立部署,运行较复杂。

而对于现阶段的分布式异构数据源同步方案,只能支持少数的数据源,而对于Elasticsearch、Redis等数据源基本不予支持,同时它们也无法对任务过程进行随时暂停的控制。

发明内容

本发明的目的是提供一种分布式数据源异构同步平台及同步方法,解决了现有服务架构对于多异构数据源之间的同步难以实现的问题,能够提供一个安全的、通用的平台,且平台中各个微服务之间是松耦合的,可被独立部署,且可以插件化的管理。

为了达到上述目的,本发明提供了一种分布式数据源异构同步平台,该平台包含:前端和服务端;其中,所述前端用于提交数据源和显示数据源同步结果;所述服务端用于接收所述前端提交的数据源,并完成数据源同步请求,并将同步结果传送给所述的前端;所述的前端和服务端之间采用WebSocket技术进行通信;所述的前端包含:react-admin-master前端独立模块,该前端独立模块采用了react+redux+ruby+webpack的前端框架,其包含:包含创建同步任务子模块、运行状态子模块和历史任务信息子模块;所述的创建同步任务子模块用于创建同步任务;所述的运行状态子模块用于查看当前同步任务的运行状态;所述的历史任务信息子模块用于查看历史任务的信息;所述的服务端包含:data-transform-api接口模块、data-transform-server服务模块和datax-all服务插件模块。

其中,所述的data-transform-api接口模块用于抽象出微服务需要提供的RESTful API接口,并定义服务端需要接收的信息对象的实体类;该data-transform-api接口模块为微服务提供入口,所述微服务通过该接口模块进行相关信息的传递和服务请求的响应。

其中,所述data-transform-server服务模块用于实现关系型数据源Mysql和分布式数据源Hbase全量导入Elasticsearch全文搜索引擎的功能,以及异构数据源之间的数据类型的转换,并结合外部接口进行异构数据源同步服务;该data-transform-server服务模块包含:分布式数据源配置中心、任务调度线程池、文件处理模块、数据批处理器、缓存池和任务消息处理线程池。所述的分布式数据源配置中心用于为不同的分布式数据库集群设置别名,并为该集群创建数据源同步处理器,根据数据源的具体类型创建客户端和连接,新建同步任务,并将该任务放入线程池中等待调度;所述的任务调度线程池用于存放等待执行的数据同步任务,根据并行任务调度算法选择合适的任务进行全量或批量同步,并控制任务的实行,包括启动、暂停、停止和恢复;所述的文件处理模块负责用于将数据表中的数据转换成SQL文件,然后对数据文件进行分页,实现负载均衡;所述的数据批处理器负责批量用于进行数据的导入和导出,其包含:HBaseETLController和MySqlETLController两个控制器,这两个控制器是关系型数据源Mysql和分布式数据源Hbase的全量导入导出任务的控制器,实现所述data-transform-api接口模块提供的可供外部调用的控制和数据查询的接口;所述的缓存池用于保存任务的数据信息,进行全量同步时,任务进度可控,当需要暂停任务时,更改缓存池中的任务信息状态值;所述的任务消息处理线程池是利用WebSocket技术在所述的客户端和服务端之间随意传递消息队列中的数据信息。

其中,datax-all服务插件模块用于开发Elasticsearch的读写插件和引用的外部接口,主要是在平台中集成了DataX开源框架,对插件进行插件化的管理,并进行任务信息的跟踪控制、流量控制、负载均衡控制和解决异构数据源中数据类型不匹配的问题。

优选地,所述的react-admin-master前端独立模块包含:创建同步任务子模块、运行状态子模块和信息查询子模块。

其中,所述的创建同步任务子模块用于接受所述前端的用户界面提交的任务配置信息,并根据这些配置信息调用所述的data-transform-api接口模块中的任务管理接口以创建任务。

其中,所述的运行状态子模块接受所述前端的用户请求,调用所述的data-transform-api接口模块中的任务控制接口,以显示正在运行的作业状态,和显示任务的进度条,若为全量作业,则可控制任务的状态,并对其进行暂停、重启的操作。

其中,所述的信息查询子模块与所述前端的用户界面连接,通过调用所述的data-transform-api接口模块中的任务查询接口,查看历史任务,并判断当前使用的各个数据源是否同步。

优选地,所述的data-transform-api接口模块包含:为不同数据源设计的不同的插件所定义的内部接口,该内部接口用于调用对应的插件;该内部接口包含:核心HE接口、核心ME接口、核心PAUSE接口、核心STOP接口、统一插件接口和历史任务接口。

其中,所述核心HE接口用于全量同步从HBase到Elasticsearch;所述核心ME接口用于全量同步从Mysql到Elasticsearch;所述核心PAUSE接口用于全量同步从开始到暂停;所述核心STOP接口:用于全量同步从开始到停止和全量同步从暂停到重启;所述统一插件接口:用于部分同步多种异构数据源;所述历史任务接口:用于任务历史查看。

优选地,所述的datax-all服务插件模块包含:若干个插件子模块、三个核心子模块和外部接口。

其中,插件子模块包含:Reader子模块和Writer子模块;所述的Reader子模块用于负责采集所述关系型数据源Mysql的数据,并全部发送给所述外部接口中的Framework接口;所述Writer子模块用于负责不断从所述的Framework接口取出数据,然后写入目标数据源。

其中,核心子模块包含:datax core核心模块、datax common通用模块和dataxtransform转换模块;所述datax core核心模块用于作为所有任务Job的管理者,负责初始化、拆分、调度、运行、回收、监控和汇报,但并不做实际的数据同步操作;所述的dataxcommon通用模块用于负责将任务Job分割成多个任务Task,再通过负载均衡分配到不同的任务集群TaskGroup中,以集群Group的形式调度运行;所述的datax transform转换模块用于连接Reader子模块和Writer子模块,是两者的数据传输通道,并提供数据量统计、流量控制、并发和数据转换等功能。

优选地,所述的外部接口包含:Reader接口、Writer接口和Framework接口。

其中,所述的Reader接口与Reader模块连接,用于数据采集的Reader模块中的数据源的数据,并发送给所述的Framework接口。

其中,所述的Writer接口与Writer模块连接,用于不断从Framework接口取出数据,然后将所得数据通过Writer模块写入到目标数据源中。

其中,所述的Framework接口用于连接所述的reader模块和writer模块,用于作为两者的数据传输通道,并处理数据的缓冲、流控、并发和转换。

优选地,所述的微服务包括:Spring Cloud服务;所述异构数据源包括:关系型数据源Mysql、分布式数据源Hbase、数据源Elasticsearch、数据源Oracle、数据源SQLServer、数据源MongoDB、数据源TXTFile和数据源FTP;所述的data-transform-server服务模块结合了DataX中匹配不同数据源的插件,为该插件提供相应的接口,并提供配置文件解析工具。

本发明还提供了一种分布式数据源异构同步的方法,该方法包含:

(1)前端数据处理:创建任务需要填写的配置信息,判断并选择任务类型,任务类型的业务包含:全量和批量,根据选择传递参数调用服务接口;

(2)通过分布式数据源配置中心给不同的分布式数据库集群设置别名,每个别名都代表一个完整的集群或单节点数据配置环境,为每个集群找到匹配的配置信息,并随机生成每个任务对应的key;若存在匹配的配置信息,则创建数据源同步处理器,新建并缓存任务信息,根据数据源的具体信息创建客户端和连接,并放入线程池中进行等待调度;若不存在匹配的配置信息,则将任务信息存入数据库中;

(3)开始任务,通过数据批处理器进行数据处理,包含两种模式:全量同步数据和批量同步数据;当存在错误或任务完成后,将任务信息存入数据库中,结束任务。

其中,所述的全量同步数据指两个异构的数据源之间所有的数据都同步;所述的批量同步数据是指若干异构数据源之间进行部分字段同步,需要进行数据切割,判断每个column的类型和名称。

其中,采用全量同步数据模式的数据源包含:关系型数据源Mysql、分布式数据源Hbase和Elasticsearch。

其中,采用批量同步数据模式的数据源包含:关系型数据源Mysql、分布式数据源Hbase、Elasticsearch、Oracle、SQLServer、MongoDB、TXTFile和FTP。

优选地,所述的批量同步数据利用数据批处理器导出或导入数据,并进行数据的切割以进行读写管理;所述的关系型数据源Mysql的批量同步数据模式通过将数据导出为sql文件,并采用数据分割实现。

优选地,该方法还包含:当处于任务中的数据库所在服务器或数据库本身出现问题时,则暂停或停止任务:通过调用接口传递key值,在服务器缓存中查询key值对应的任务信息,修改任务的状态值为暂停或停止,再更新数据库中的任务信息,并且发送消息到消息处理器,消息处理器通过webSocket将消息发送给客户端,以暂停或停止任务。

优选地,该方法还包含:当故障修复之后,重启服务:在获得任务信息后,修改任务状态值为运行,在通过缓存记录的开始Key值和结束Key值找到被转换出来的文件,或数据批处理器导入的批量数据。

本发明的分布式数据源异构同步平台及同步方法,解决了现有服务架构对于多异构数据源之间的同步难以实现的问题,具有以下优点:

(1)消除分布式异构数据源的差异化,实现多种数据源相互导入导出大量信息的功能;

(2)将异构数据源插件化管理,新的数据源只需要实现新的插件,就可以支持和其他数据源进行无差异性数据同步;

(3)多任务并发执行,并且可以对任务进行开始,暂停,重启和停止的调度控制,实现独立运行;

(4)采用微服务架构,其实现模式是可以独立部署在多台机器上,使其同事进行运转;

(5)实现任务进度跟踪和CPU等资源消耗的信息监控。以此,达到一个比较完善的分布式异构数据源同步服务。

附图说明

图1为本发明的分布式数据源异构同步平台的结构示意图。

图2为本发明的外部接口的连接关系示意图。

图3为本发明的前端数据处理的流程图。

图4为本发明的开启任务的流程图。

图5为本发明的暂停与停止任务的流程图。

图6为本发明的重新开始任务的流程图。

具体实施方式

以下结合附图和实施例对本发明的技术方案做进一步的说明。

一种分布式数据源异构同步平台,如图1所示,为本发明的分布式数据源异构同步平台的结构示意图,该平台包含:前端和服务端;其中,前端用于提交数据源和显示数据源同步结果;服务端用于接收前端提交的数据源,并完成数据源同步请求,并将同步结果传送给前端;前端和服务端之间采用WebSocket技术进行通信。

上述前端包含:react-admin-master前端独立模块,该前端独立模块采用了react+redux+ruby+webpack的前端框架,其包含:包含创建同步任务子模块、运行状态子模块和历史任务信息子模块;创建同步任务子模块用于创建同步任务,运行状态子模块用于查看当前同步任务的运行状态,历史任务信息子模块用于查看历史任务的信息。在创建任务的时候,需要选择任务的各种配置信息,当要查看任务状态时,调动前端和服务端的及时通信服务WebSocket,还可查看以往的任务信息,判断当前使用的各个数据源是否同步。

本发明采用react+redux+ruby+webpack的前端框架设计实现了前端和服务端分离,使前端和服务端均可独立部署,使得分工明显。

上述服务端包含:data-transform-api接口模块(API接口模块)、data-transform-server服务模块(同步服务模块)和datax-all服务插件模块。

其中,data-transform-api接口模块用于抽象出微服务需要提供的RESTful API接口,并定义服务端需要接收的信息对象的实体类;该data-transform-api接口模块为微服务提供入口,微服务通过该接口模块进行相关信息的传递和服务请求的响应。对外提供接口主要定义在data-transform-api模块中,需要使用的项目只需要在自己的pom依赖中添加该项目对该模块的依赖,就可以给一些部署过微服务的服务器提供一些服务。

其中,data-transform-server服务模块用于实现关系型数据源Mysql和分布式数据源Hbase全量导入Elasticsearch(一个基于Lucene的搜索服务器,提供分布式多用户能力的全文搜索引擎)全文搜索引擎的功能,以及异构数据源之间的数据类型的转换,并结合外部接口进行异构数据源同步服务;该data-transform-server服务模块包含:分布式数据源配置中心、任务调度线程池、文件处理模块、数据批处理器、缓存池和任务消息处理线程池。在对任务控制进行调度的同时,还结合及时通信技术WebSocket,对消息队列和线程池进行多项任务的调度。该data-transform-server服务模块还结合了DataX中匹配各种数据源的插件,该服务模块提供接口和配置文件解析工具,使得服务端能够更好的工作。

其中,分布式数据源配置中心用于为不同的分布式数据库集群设置别名,并为该集群创建数据源同步处理器,根据数据源的具体类型创建客户端和连接,新建同步任务,并将该任务放入线程池中等待调度;任务调度线程池用于存放等待执行的数据同步任务,根据并行任务调度算法选择合适的任务进行全量或批量同步,并控制任务的实行,包括启动、暂停、停止和恢复;文件处理模块负责用于将数据表中的数据转换成SQL文件,然后对数据文件进行分页,实现负载均衡;数据批处理器负责批量用于进行数据的导入和导出,其包含:HBaseETLController和MySqlETLController两个控制器,这两个控制器是关系型数据源Mysql和分布式数据源Hbase的全量导入导出任务的控制器,实现data-transform-api接口模块提供的可供外部调用的控制和数据查询的接口;缓存池用于保存任务的数据信息,进行全量同步时,任务进度可控,当需要暂停任务时,更改缓存池中的任务信息状态值;任务消息处理线程池是利用WebSocket技术在客户端和服务端之间随意传递消息队列中的数据信息。

其中,datax-all服务插件模块用于开发Elasticsearch的读写插件和引用的外部接口,主要是在平台中集成了DataX开源框架,对插件进行插件化的管理,并进行任务信息的跟踪控制、流量控制、负载均衡控制和解决异构数据源中数据类型不匹配的问题。datax-all服务插件模块面对大量的数据处理,提供的外部接口都能将任务理论平均并且合理的切分成多个Task一起执行,单机多线程执行方式可以让它速度随并发增长。

根据本发明一实施例,react-admin-master前端独立模块包含:创建同步任务子模块、运行状态子模块和信息查询子模块。

其中,创建同步任务子模块用于接受前端的用户界面提交的任务配置信息,并根据这些配置信息调用data-transform-api接口模块中的任务管理接口以创建任务。

其中,运行状态子模块接受前端的用户请求,调用data-transform-api接口模块中的任务控制接口,以显示正在运行的作业状态,和显示任务的进度条,若为全量作业,则可控制任务的状态,并对其进行暂停、重启的操作。

其中,信息查询子模块与前端的用户界面连接,通过调用data-transform-api接口模块中的任务查询接口,查看历史任务,并判断当前使用的各个数据源是否同步。

根据本发明一实施例,data-transform-api接口模块包含:为不同数据源设计的不同的插件所定义的内部接口,该内部接口用于调用对应的插件;该内部接口包含:核心HE接口、核心ME接口、核心PAUSE接口、核心STOP接口、统一插件接口和历史任务接口。

其中,核心HE接口用于全量同步从HBase到Elasticsearch;核心ME接口用于全量同步从Mysql到Elasticsearch;核心PAUSE接口用于全量同步从开始到暂停;核心STOP接口:用于全量同步从开始到停止和全量同步从暂停到重启;统一插件接口:用于部分同步多种异构数据源;历史任务接口:用于任务历史查看。

根据本发明一实施例,datax-all服务插件模块包含:若干个插件子模块、三个核心子模块和外部接口。

其中,插件子模块包含:Reader子模块和Writer子模块;Reader子模块用于负责采集关系型数据源Mysql的数据,并全部发送给外部接口中的Framework接口;Writer子模块用于负责不断从Framework接口取出数据,然后写入目标数据源。

其中,核心子模块包含:datax core核心模块、datax common通用模块和dataxtransform转换模块;datax core核心模块用于作为所有任务Job的管理者,负责初始化、拆分、调度、运行、回收、监控和汇报,但并不做实际的数据同步操作;datax common通用模块用于负责将任务Job分割成多个任务Task,再通过负载均衡分配到不同的任务集群TaskGroup中,以集群Group的形式调度运行;datax transform转换模块用于连接Reader子模块和Writer子模块,是两者的数据传输通道,并提供数据量统计、流量控制、并发和数据转换等功能。

根据本发明一实施例,如图2所示,为本发明的外部接口的连接关系示意图,外部接口包含:Reader接口、Writer接口和Framework接口。

其中,Reader接口与Reader模块连接,用于数据采集的Reader模块中的数据源(图2中数据源A)的数据,并发送给Framework接口。

其中,Writer接口与Writer模块连接,用于不断从Framework接口取出数据,然后将所得数据通过Writer模块写入到目标数据源(图2中数据源B)中。

其中,Framework接口用于连接reader模块和writer模块,用于作为两者的数据传输通道,起到桥梁沟通两者之间信息的作用,并处理数据的缓冲、流控、并发和转换。

根据本发明一实施例,微服务包括:Spring Cloud服务;异构数据源包括:关系型数据源Mysql、分布式数据源Hbase、数据源Elasticsearch、数据源Oracle、数据源SQLServer、数据源MongoDB、数据源TXTFile和数据源FTP;data-transform-server服务模块结合了DataX中匹配不同数据源的插件,为该插件提供相应的接口,并提供配置文件解析工具。

一种分布式数据源异构同步的方法,该方法包含:

(1)前端数据处理:

如图3所示,为本发明的前端数据处理的流程图,创建任务需要填写的配置信息,判断并选择任务类型,任务类型的业务包含:全量和批量;

当选择批量导入时,选择原数据源和目标数据源,以及各种配置和字段的映射,以制定目标对象;当选择全量导入时,选择Hbase/Mysql作为原目标数据源,Elasticsearch作为目标数据源,以制定目标对象;

根据选择传递参数调用服务接口,返回任务JobId和任务状态,查看当前运行的所有任务的状态,前端数据处理结束;

(2)如图4所示,为本发明的开启任务的流程图,通过平台的分布式数据源配置中心模块给不同的分布式集群设置了别名,每个别名都代表了一个完整的集群或单节点数据配置环境。在任务开始前,先找到匹配的配置信息,然后随机生成一个key唯一标志了一个任务。将任务的大部分数据信息都存储在内存缓存中。再根据数据源的具体信息创建客户端和连接,然后放入任务调度线程池中进行等待调度。比如是Mysql,那么先将Mysql中的表导成sql文件,在对文件进行切割,不同的数据源有不同的读写插件管理;

(3)开始任务:

开启任务时,有两种模式选择,第一种是全量同步数据,全量则代表两个数据源之间所有的数据都同步,如果有这种需求,那么这个方式的效率更高,因为不需要做每个column的类型和名称做判断;第二种方式是批量同步数据,主要利用Datax框架的插件实现十多种的数据源之间做到统一,也包含设计的插件,批量上则主要是利用批处理器,或者是数据的切割等方法;

其中,采用全量同步数据模式的数据源包含:关系型数据源Mysql、分布式数据源Hbase和Elasticsearch。

其中,采用批量同步数据模式的数据源包含:关系型数据源Mysql、分布式数据源Hbase、Elasticsearch、Oracle、SQLServer、MongoDB、TXTFile和FTP。

根据本发明一实施例,批量同步数据利用数据批处理器导出或导入数据,或数据的切割以进行读写管理;关系型数据源Mysql的批量同步数据模式通过将数据导出为sql文件,并采用数据分割实现。

根据本发明一实施例,如图5所示,为本发明的暂停与停止任务的流程图,该方法还包含:在系统任务开启之后,数据库会返回客户端一个代表任务的唯一key值。当处于任务中的数据库所在服务器或者是数据库本身出现问题时,有必要暂停或者是停止任务来进行机器的运维。所以,当需要暂停或者是停止时,通过调用接口传递key值,在服务器缓存中查询key值对应的JobInfo信息,修改Job的状态值为PAUSE或者是STOP,再更新数据库中的任务信息,并且发消息到消息处理器,消息处理器通过webSocket将消息发送给客户端;一旦停止过后,就不能再恢复当前的任务了,所以需要多层状态的判断,在每一次任务状态改变时,都需要在数据库中记录,跟踪任务的进行,及时避免和处理配置信息不匹配的问题。任务信息主要保存在操作系统内存的缓存中,每个任务至多缓存一天的时间,如时间过长既不能保证任务状态的及时有效性。

根据本发明一实施例,如图6所示,为本发明的重新开始任务的流程图,该方法还包含:离线同步任务开启之后,会将当前任务的标志key和状态信息返回给客户端。当遇到的故障修复之后,仍然可以接着上次切断成处重启服务。在面对大量数据时,如果中途中断,那么之前交换的数据都是无用的。在得到JobInfo后,修改JobState为RUN,在通过缓存记录的startKey和endKey值找到被转换出来的sql文件,以准确的找到暂停点,或者是批处理器进批量数据的导入。

综上所述,本发明的分布式数据源异构同步平台及同步方法能够提供一个安全的、通用的平台,且平台中各个微服务之间是松耦合的,可被独立部署,且可以插件化的管理。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种数据同步方法、装置、系统、服务器和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!