掌桥专利:专业的专利平台
掌桥专利
首页

一种基于分布式的异构数据同步系统及方法

文献发布时间:2023-06-19 09:58:59


一种基于分布式的异构数据同步系统及方法

技术领域

本发明涉及通信技术领域,尤其是一种基于分布式的异构数据同步系统及方法。

背景技术

随着互联网行业的不断发展,每天会产生海量的数据,对数据的转换、传输、存储的操作越来越频繁,而且用户量越来越大、系统和数据也变得越来越大。由于系统过大会带来各种问题,所以系统微服务化也随之兴起。将系统及其数据都进行了拆分,同时也带来了异构数据同步的需求,面对复杂的数据抽取场景,专业的ETL工具得到了广泛的应用。

目前,传统的ETL工具多应用于离线场景,无法实时的对数据进行处理,需要工作人员多次操作,降低工作效率。而且单机版的进程一般不支持集群部署,容易导致了单节点的任务堆积,资源利用率较低。

发明内容

为了解决上述问题,本发明提供一种基于分布式的异构数据同步系统及方法,可自定义异构数据同步的任务周期,而且能够进行集群式部署,提高任务的执行效率。

为了实现上述目的,本发明采用的技术方案为:

一种基于分布式的异构数据同步系统,包括,

管理节点模块,其用于主流的关系型及非关系型的数据库的配置,并使所述数据库作为基础数据源;

所述管理节点模块与执行节点模块进行通信,以使所述管理节点模块通过AppKey对不同的所述执行节点模块进行区分,且具有相同AppKey的执行节点模块构成执行节点集群,每一所述执行节点模块具有一个任务管理线程池。

所述管理节点模块根据所述基础数据源所配置的任务,并定期通过RPC调用模型对所述执行节点模块发起调度请求,以调度远程的所述执行节点模块执行异构数据同步任务。

进一步地,所述管理节点模块定期将所述执行节点模块的任务管理线程池中已启用的任务加入到Scheduler容器的可配置线程池,所述管理节点模块在到达设定的任务执行时间点时,通过并发线程执行异构数据同步任务和监控统计该所述执行节点模块。

进一步地,所述管理节点模块通过数据同步模块进行异构数据同步任务。

进一步地,所述管理节点模块通过HTTP API和RPC调用模型与所述执行节点模块通信。

进一步地,所述数据同步模块通过将所述基础数据源的读写抽象处理为读写插件,以进行异构数据同步任务,所述数据同步模块进行异构数据同步任务的步骤为:

A1、所述数据同步模块通过读插件读取所述基础数据源,以使所述基础数据源的原始数据转换为Java内置类型;

A2、所述数据同步模块将步骤2获得的数据在通道Channel中经过处理后,通过写插件写入到目标数据源中,以进行数据异构;

A3、所述数据同步模块对目标数据源根据不同的源端切分策略,将异构数据任务切分成多个Task后,通过Scheduler容器将拆分的Task重新组合成TaskGroup,所述TaskGroup并发运行分配所有Task,以完成异构数据同步。

进一步地,所述管理节点模块执行异构数据同步任务结束后,所述管理节点模块获取所述执行节点模块的回调服务API,以使所述管理节点模块获得异构数据同步任务的结果统计及机器的资源情况。

进一步地,所述管理节点模块通过Keepalived+Nginx设置可视化界面,以对异构数据同步任务的结果统计及机器的资源情况进行展示。

进一步地,所述执行节点模块为内嵌服务器,且所述述执行节点模块的默认端口为9000。

一种基于分布式的异构数据同步方法,包括下述步骤:

S1、所述管理节点模块获得所述执行节点模块定期发出的心跳请求,以使所述执行节点模块向所述管理节点模块注册自身的IP和端口;

S2、所述管理节点模块定期将所述执行节点模块的任务管理线程池中已启用的任务加入到Scheduler容器的可配置线程池,所述管理节点模块在到达设定的任务执行时间点时,通过并发线程的方式从所述数据库中获取触发器和所述执行节点模块信息,以对所述执行节点模块发起调度;

S3、所述管理节点模块对所述执行节点模块发起调度请求时,按顺序选择节点集群内的一个所述执行节点模块所发出的心跳进行检测;

S4、当所有所述执行节点均为非存活状态,执行步骤S3,所述管理节点模块默认重新发起重试,如果重试结束后还未找到存活所述执行节点模块,则报告异构数据同步任务失败;

S5、当所述执行节点为存活状态,所述管理节点模块向所述执行节点模块发送调度请求,所述执行节点模块接收到请求后,以并发线程的方式执行异构数据同步任务,并通过回调API服务向所述管理节点模块上报执行结果。

进一步地,在所述步骤S1中,所述执行节点模块的注册失效时间为3倍的心跳周期。

本发明的有益效果是:

1.执行节点模块通过AppKey区分,构成不同的执行节点集群,具备高可用特性,而且集群化的执行节点部署支持快速横向扩展和灰度升级,极大提高了任务的吞吐量和系统的稳定性,任务分发的均衡策略则有效避免了单节点的任务堆积,提高了资源的利用率。管理节点模块定期通过RPC调用模型对执行节点模块发起调度请求,利用分布式调度技术,将离线任务转变为在线实时任务,采用RPC调用模型使异构数据同步由单进程单任务优化为多线程多任务,极大提高了任务的执行效率;通过定期发起调度请求,可自定义任务同步周期,以及实现增量同步效果,从而避免人工的多次操作,提升工作效率。

2.数据同步模块通过将基础数据源的读写抽象处理为读写插件,以使所有原始数据都会被转换为Java内置类型即Long、Double、String、Date、Boolean、Bytes,充分利用Java语言系统无关的特性,实现了一次编译多处运行。数据同步模块根据不同的源端切分策略,将异构任务切分成多个Task,再通过Scheduler容器将拆分的Task重新组合成TaskGroup,TaskGroup并发运行分配好的所有Task,从而实现了工作单元由单进程单任务转变为多线程多任务,极大提高了任务的执行效率。

3.本发明通过B/S架构的统一可视化管理平台,并利用Keepalived+Nginx实现高可用,以对集群内执行节点进行管理,通过灵活的调度配置,实现各节点的实时数据异构任务,并提供实时的任务统计和资源监控。

附图说明

图1是本发明一较佳实施方式的基于分布式的异构数据同步系统的结构示意图。

图2是本发明一较佳实施方式的基于分布式的异构数据同步方法的过程示意图。

图中,1-管理节点模块,2-执行节点模块,3-交换机。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

请同时参见图1至图2,本发明一较佳实施方式的基于分布式的异构数据同步系统,包括管理节点模块1。

管理节点模块1,其用于主流的关系型及非关系型的数据库的配置,并使数据库作为基础数据源。

管理节点模块1与执行节点模块2进行通信,以使管理节点模块1通过AppKey对不同的执行节点模块2进行区分,且具有相同AppKey的执行节点模块2构成执行节点集群,每一执行节点模块2具有一个任务管理线程池。

本实施例的执行节点模块2通过AppKey区分,构成不同的执行节点集群,具备高可用特性,而且集群化的执行节点部署支持快速横向扩展和灰度升级,极大提高了任务的吞吐量和系统的稳定性,任务分发的均衡策略则有效避免了单节点的任务堆积,提高了资源的利用率。

管理节点模块1根据基础数据源所配置的任务,并定期通过RPC调用模型对执行节点模块2发起调度请求,以调度远程执行节点模块2执行异构数据同步任务。

管理节点模块1定期通过RPC调用模型对执行节点模块2发起调度请求,利用分布式调度技术,将离线任务转变为在线实时任务,采用RPC调用模型使异构数据同步由单进程单任务优化为多线程多任务,极大提高了任务的执行效率;通过定期发起调度请求,可自定义任务同步周期,以及实现增量同步效果,从而避免人工的多次操作,提升工作效率。

本实施例中,管理节点模块1定期将执行节点模块2的任务管理线程池中已启用的任务加入到Scheduler容器的可配置线程池,管理节点模块1在到达设定的任务执行时间点时,通过并发线程执行异构数据同步任务和监控统计该执行节点模块2,而且能够实现多个任务执行的支持。

管理节点模块1通过数据同步模块进行异构数据同步任务,本实施例的数据同步模块设于执行节点模块22中。数据同步模块通过将基础数据源的读写抽象处理为读写插件,以进行异构数据同步任务。

数据同步模块进行异构数据同步任务根据ReadPlugin->Channel->WritePlugin的过程,其具体步骤为:

A1、数据同步模块通过读插件读取基础数据源,以使基础数据源的原始数据转换为Java内置类型;

A2、数据同步模块将步骤2获得的数据在通道Channel中经过处理后,通过写插件写入到目标数据源中,以进行数据异构;在通道Channel中,步骤2获得的数据需要经过缓冲、流控、并发、转换等处理后通过写插件写入到目标数据源。

A3、数据同步模块对目标数据源根据不同的源端切分策略,将异构数据任务切分成多个Task后,通过Scheduler容器将拆分的Task重新组合成TaskGroup,TaskGroup并发运行分配所有Task,以完成异构数据同步。

本实施例的数据同步模块通过将基础数据源的读写抽象处理为读写插件,以使所有原始数据都会被转换为Java内置类型即Long、Double、String、Date、Boolean、Bytes,充分利用Java语言系统无关的特性,实现了一次编译多处运行。

数据同步模块根据不同的源端切分策略,将异构任务切分成多个Task,再通过Scheduler容器将拆分的Task重新组合成TaskGroup,TaskGroup并发运行分配好的所有Task,从而实现了工作单元由单进程单任务转变为多线程多任务,极大提高了任务的执行效率。

管理节点模块1执行异构数据同步任务结束后,管理节点模块1获取执行节点模块2的回调服务API,以使管理节点模块1获得异构数据同步任务的结果统计及机器的资源情况。

管理节点模块1通过Keepalived+Nginx设置可视化界面,以对异构数据同步任务的结果统计及机器的资源情况进行展示。

本实施例通过B/S架构的统一可视化管理平台,并利用Keepalived+Nginx实现高可用,以对集群内执行节点进行管理,通过灵活的调度配置,实现各节点的实时数据异构任务,并提供实时的任务统计和资源监控。

本实施例的执行节点模块2为内嵌服务器,且执行节点模块2的默认端口为9000。

优选地,管理节点模块1通过HTTP API和RPC调用模型与执行节点模块2通信。本实施例的HTTP API和RPC调用模型设于交换机33中,以实现管理节点模块1与执行节点模块2的通信。

一种基于分布式的异构数据同步方法,包括下述步骤:

S1、管理节点模块1获得执行节点模块2定期发出的心跳请求,以使执行节点模块2向管理节点模块1注册自身的IP和端口。其中,执行节点模块2的注册失效时间为3倍的心跳周期。

S2、管理节点模块1定期将执行节点模块2的任务管理线程池中已启用的任务加入到Scheduler容器的可配置线程池,管理节点模块1在到达设定的任务执行时间点时,通过并发线程的方式从数据库中获取触发器和执行节点模块2信息,以对执行节点模块2发起调度。

S3、管理节点模块1对执行节点模块2发起调度请求时,按顺序选择节点集群内的一个执行节点模块2所发出的心跳进行检测;

S4、当所有执行节点均为非存活状态,执行步骤S3,管理节点模块1默认重新发起重试,如果重试结束后还未找到存活执行节点模块2,则报告异构数据同步任务失败;

S5、当执行节点为存活状态,管理节点模块1向执行节点模块2发送调度请求,执行节点模块2接收到请求后,以并发线程的方式执行异构数据同步任务,并通过回调API服务向管理节点模块1上报执行结果。

在步骤S3-步骤S4中,任务的默认路由策略是故障转移,即管理节点模块1每次发起调度请求时,会按顺序对集群的执行节点模块2发出心跳检测,第一个检测为存活状态的执行节点模块2将被选中并向其发送调度请求;若第一个检测为非存活状态的执行节点模块2,管理节点模块1对执行节点模块2重新发起调度请求,并检测执行节点模块2所发出的心跳,以再次判断执行节点的状态。

相关技术
  • 一种基于分布式的异构数据同步系统及方法
  • 一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法
技术分类

06120112378183