数据同步方法及装置与流程

文档序号:26504061发布日期:2021-09-04 07:04阅读:120来源:国知局
数据同步方法及装置与流程

1.本申请涉及数据处理技术领域,特别是数据同步方法及装置。


背景技术:

2.为了实现数据库之间的实时数据同步,通常需要将源端数据库中的数据发送到消息队列中进行缓存,由数据同步工具从消息队列中获取对应的数据,并加载到对应的目的数据表。
3.相关技术中,对应于消息队列中的每一个消息队列主题,数据同步工具都需要设置对应的数据同步线程,一个数据同步线程只能抽取一个消息队列主题中的数据。在所需同步的数据不是持续的数据流的情况下,数据同步线程的利用率较低,线程资源浪费较为严重。


技术实现要素:

4.有鉴于此,本申请提供了数据同步方法及装置,用以实现两个数据端之间的数据同步。
5.具体的,本申请通过如下技术方案实现:
6.根据本申请的第一方面,提出了一种数据同步方法,应用于数据同步工具,所述数据同步工具运行有一个或多个数据同步线程,所述数据同步线程被配置有数据同步任务,所述数据同步任务的输入配置信息包括对应的消息队列主题的信息、输出配置信息包括对应的目的数据表的信息,包括:
7.获取消息队列发送的通知消息,所述通知消息用于表明所述消息队列中的目标消息队列主题存在新增数据;
8.根据每个数据同步任务的输入配置信息,确定出匹配于所述目标消息队列主题的目标数据同步任务;
9.在所述目标数据同步任务属于目标数据同步线程的情况下,通过目标数据同步线程执行所述目标数据同步任务,以从所述消息队列中抽取所述新增数据,并将所述新增数据同步到所述目标数据同步任务的输出配置信息所定义的目的数据表。
10.根据本申请的第二方面,提出了一种数据同步装置,应用于数据同步工具,所述数据同步工具运行有一个或多个数据同步线程,所述数据同步线程被配置有数据同步任务,所述数据同步任务的输入配置信息包括对应的消息队列主题的信息、输出配置信息包括对应的目的数据表的信息,包括:
11.消息获取单元,用于获取消息队列发送的通知消息,所述通知消息用于表明所述消息队列中的目标消息队列主题存在新增数据;
12.任务确定单元,用于根据每个数据同步任务的输入配置信息,确定出匹配于所述目标消息队列主题的目标数据同步任务;
13.任务执行单元,用于在所述目标数据同步任务属于目标数据同步线程的情况下,
通过目标数据同步线程执行所述目标数据同步任务,以从所述消息队列中抽取所述新增数据,并将所述新增数据同步到所述目标数据同步任务的输出配置信息所定义的目的数据表。
14.根据本申请的第三方面,提供一种电子设备,包括:
15.处理器;
16.用于存储处理器可执行指令的存储器;
17.其中,所述处理器通过运行所述可执行指令以实现如上述第一方面的实施例中所述的方法。
18.根据本申请实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述第一方面的实施例中所述方法的步骤。
19.由以上本申请提供的技术方案可见,本申请通过在数据同步工具所运行的数据同步线程中预设数据同步任务的配置信息,可以在一个数据同步线程中执行多个数据同步任务,以将不同消息队列主题的新增数据同步至对应的目标数据表,提高数据同步工具中数据同步线程的利用率,节约线程资源。
附图说明
20.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
21.图1是应用本申请实施例的数据同步系统的网络架构示意图;
22.图2是根据本申请一示例性实施例示出的一种数据同步方法的流程图;
23.图3是根据本申请一示例性实施例示出的一种数据同步方法的多方交互流程图;
24.图4是根据本申请一示例性实施例示出的一种数据同步电子设备示意图;
25.图5是根据本申请一示例性实施例示出的一种数据同步装置的框图。
具体实施方式
26.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
27.在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
28.应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
29.接下来对本申请实施例进行详细说明。
30.本申请供一种数据同步方法,用于将数据从源端同步至目的端,其中,目的端可以为数据库,源端可以为数据库和/或应用程序。参见图1,图中示出了数据库之间数据同步的网络架构示意图,其中源端数据库组101和目的端数据库组104中的数据库可以为类型相同的数据库,也可以为类型不同的数据库。其中,数据库类型可以是sqlserver、mysql、oracle、sqlite、access等,本申请对此不做限制。如图1所示,源端数据库组101中的数据库将数据发送至消息队列102中缓存,由数据同步工具103从消息队列102中根据消息队列主题抽取新增数据,并在对抽取到的新增数据进行数据格式转化、数据清洗等操作后,将处理后的新增数据同步至目的端数据库组104中对应的目的数据表。
31.相关技术中,从一个消息队列主题中抽取新增数据并同步至对应的目的数据表可以被视为一个数据同步任务,而一个数据同步任务对应一个数据同步线程,当存在多个数据交换任务时,需要在数据同步工具中并发运行多个数据同步线程。数据同步工具中运行的多个数据同步线程不仅占用了大量的cpu资源,而且由于源端与目的端间通常只是不定时的进行数据同步,数据同步线程的闲置率较高,利用率较低,造成了大量的资源浪费。
32.为了解决上述问题,图2为根据本申请一示例性实施例示出的一种数据同步方法的流程图。如图2所示,该方法应用于数据同步工具,所述数据同步工具运行有一个或多个数据同步线程,所述数据同步线程被配置有数据同步任务,所述数据同步任务的输入配置信息包括对应的消息队列主题的信息、输出配置信息包括对应的目的数据表的信息,可以包括如下步骤:
33.步骤202:获取消息队列发送的通知消息,所述通知消息用于表明所述消息队列中的目标消息队列主题存在新增数据。
34.在本申请中,数据同步工具可以为etl(extract

transform

load,抽取

交互转换

加载)工具,用于从源端抽取数据,并对抽取到的数据进行格式转化、数据清洗等操作,再将其加载至目的端;其中,格式转换、数据清洗等操作具体可以在本申请后续步骤206中所示的抽取到新增数据之后、同步到目的数据表之前完成。数据同步工具可以包含一个或多个数据同步线程,每个数据同步线程可以包含一个或多个数据同步任务,数据同步工具通过数据同步线程执行数据同步任务,从而将从消息队列中获取的数据同步至相应目的数据表中,其中,所述数据同步线程可以为实时数据同步线程以实现源端与目的端之间数据的实时同步。
35.在本申请的技术方案中,消息队列所采用的消息传递模型可以为发布

订阅模型,例如kafka模型、rabbitmq模型等,本申请对此不作限制。在该消息传递模型下,消息发布者可以向特定的消息主题发布消息,一个或多个消息订阅者在“订阅”该消息队列主题的情况下,可以接收该消息队列主题中的所有消息。在本申请中,源端的数据库或者应用程序即为消息发布者,数据同步工具即为消息订阅者,消息队列包括一个或多个消息队列主题,源端可以向消息队列中发布数据,数据同步工具则可以从消息队列中获取新增数据。
36.在一实施例中,消息队列中预先设置有触发器,所述触发器可以在满足预定义条件时可以触发,并执行触发器中定义的语句集合。其中,所述预定义条件可以被设置为消息队列中的任一消息队列主题存在新增数据,所述定义的语句集合可以被设置为根据新增数据的消息队列主题生成通知消息,并将其发送给对应的数据同步工具。通过在消息队列中设置的触发器,可以在接收到源端的新增数据时自动向数据同步工具发送通知消息,不需
要人工监视,从而使得数据同步工具能够及时从消息队列中抽取新增数据。
37.步骤204:根据每个数据同步任务的输入配置信息,确定出匹配于所述目标消息队列主题的目标数据同步任务。
38.在本申请的技术方案中,数据同步任务根据用户提供配置的消息队列主题及目的数据表而建立,其中,消息队列主题可以作为该数据同步任务的输入配置信息,目的数据表可以作为该数据同步任务的输出配置信息。数据同步工具在接收到通知消息后可以根据通知消息中包含的目标消息队列主题,将其与数据同步工具中的各个数据同步任务的输入配置信息相匹配,确定对应的目标数据同步任务,并确定该目标数据同步任务所属的目标数据同步线程。除了消息队列主题外,所述输入配置信息还可以包括对应的消费组标识的信息;所述根据每个数据同步任务的输入配置信息,确定出匹配于所述目标消息队列主题的目标数据同步任务,包括:根据每个数据同步任务的输入配置信息中的消息队列主题信息和消费组标识信息,以及所述通知消息中包含的目标消息队列主题和目标消费组标识,确定对应于所述通知消息的目标数据同步任务。
39.步骤206:在所述目标数据同步任务属于目标数据同步线程的情况下,通过目标数据同步线程执行所述目标数据同步任务,以从所述消息队列中抽取所述新增数据,并将所述新增数据同步到所述目标数据同步任务的输出配置信息所定义的目的数据表。
40.在一实施例中,通知消息还包括新增数据在消息队列中的分区和偏移量,数据同步线程在每次数据同步任务执行完成后,可以根据当前所同步的新增数据的分区和偏移量更新该数据同步任务的本地分区和本地偏移量。在数据同步任务不存在对应于所述通知消息中的分区的本地分区的情况下,在将新增数据同步至该数据同步任务的输出配置信息所定义的目的数据表后,可以将通知消息中的分区添加至数据同步任务的本地分区中并将对应于该分区的本地偏移量更新为通知消息中的偏移量;举例而言,若通知消息所对应的新增数据的分区为2偏移量为10,而对应于该通知消息的数据同步任务的本地分区为1,则表明分区2中的数据均为新增数据,在数据同步完成后需要在该数据同步任务的本地分区中新增分区2,并将该分区所对应的本地偏移量记录为10。在通知消息中的偏移量大于数据同步任务的对应于所述通知消息中的分区的本地偏移量的情况下,在将新增数据同步至该数据同步任务的输出配置信息所定义的目的数据表之后,可以将本地偏移量更新为通知消息中的偏移量;举例而言,若通知消息所对应的新增数据的分区为1偏移量为10,而对应于该通知消息的数据同步任务的本地分区为1,偏移量为5,则表明分区1中的偏移量5与偏移量10之间的数据为新增数据,在数据同步完成后需要在该数据同步任务的本地分区1所对应的本地偏移量更新为10。因此,本申请中的数据同步线程所记录的本地分区即为历史同步数据的所处分区,本地偏移量即为对应于各个分区的历史同步数据的最大偏移量。
41.在一实施例中,执行所述目标数据同步任务以抽取所述新增数据,包括:在所述通知消息指示了所述新增数据的起始位置和终止位置的情况下,按照所述起始位置和所述终止位置抽取所述新增数据;在所述通知消息指示了所述新增数据的起始位置且未指示终止位置的情况下,抽取从所述起始位置开始的所有新增数据。其中,起始位置和终止位置可以用分区和偏移量表示,举例而言,若通知消息指示了新增数据的起始位置为:分区1,起始偏移量68;终止位置为分区1,偏移量72,则数据同步工具可以通过目标数据同步线程执行目标数据同步任务,以从消息队列的目标消息队列主题中抽取分区1中的偏移量68至72之间
的新增数据。若通知消息仅指示了新增数据的起始位置为:分区1,起始偏移量68,则数据同步工具可以通过目标数据同步线程执行目标数据同步任务,以从消息队列的目标消息队列主题中抽取从分区1偏移量6开始的所有新增数据。
42.由于在某些情况下,例如消息队列中的目标消息队列主题在短时间内多次新增数据时,消息队列会对应于每次的新增数据发送多个通知消息,若通知消息中只标明了新增数据的起始位置而未标明新增数据的终止位置,数据同步线程接收到的通知消息可能会出现分区和偏移量均小于本地分区偏移量情况。若出现这种情况,则表明触发该通知消息的新增数据已经被同步,目标数据同步线程可以无需再根据该通知消息抽取新增数据。举例而言,目标消息队列主题中新增了数据a,对应于数据a,消息队列生成了通知消息a,目标数据同步线程在接收到消息队列发送的通知消息a后,从目标消息队列主题中抽取新增数据,若在新增数据a与执行目标数据同步线程之间,消息队列中又新增了数据b,则目标数据线程可以将数据a与数据b一同抽取,从而在接收到对应于数据b的通知消息b时,则可以直接将通知消息b丢弃,不执行通知消息b所对应的数据同步任务。因此,数据同步工具在接收到通知消息后,可以先将通知消息中记录的新增数据的分区、偏移量与数据同步工具本地记录的对应于该通知消息的数据同步任务的本地分区、偏移量进行比对。若通知消息中的分区与本地分区一致,偏移量大于本地偏移量,则可以认为消息队列的该分区偏移量大于本地偏移量的数据为新增数据,若通知消息中的分区大于本地分区,则认为该分区中的数据均为新增数据。因此,数据同步工具可以只在通知消息中的分区大于所述目标数据同步任务的本地分区,或者所述通知消息中的偏移量大于所述目标数据同步任务的本地偏移量的情况下,通过目标数据同步线程执行数据同步任务,避免造成目的数据库中数据重复。
43.在一实施例中,当数据同步工具接收到调用同一数据同步线程的多个通知消息时,数据同步线程需要将待执行的数据同步任务进行排序,并按照排序结果依次执行各个数据同步任务。例如,数据同步线程可以将待执行的数据同步任务组成任务调度队列,在确定目标数据同步任务后,通过查询任务调度队列,根据任务调度队列中已存在的各个数据同步任务之间的执行顺序,将目标数据同步任务插入任务调度队列中的对应位置。其中,任务调度队列的执行顺序可以按照各个数据同步任务的预设优先级确定,优先执行优先级较高的数据同步任务,若存在优先级相同的数据同步任务,则可以再根据获取其对应通知消息的时间点确定优先级相同的数据同步任务之间的执行顺序,优先执行获取时间点较早的数据同步任务;或者也可以优先按照对应通知消息的获取时间点来对数据同步任务中的任务调度队列进行排序,若存在获取时间点相同的数据同步任务,则可以再根据预设的优先级确定各个获取时间点相同的数据同步任务之间的执行顺序。任务调度队列中的各个数据同步任务的执行顺序可以根据本领域技术人员的需求自行设置,本申请对此不作限制。
44.在本申请的技术方案中,若消息队列中的新增数据的数据量较多,则数据同步线程在执行数据同步任务时拉取新增数据所花费的时间较长,容易影响任务调度队列中后续其他数据同步任务的执行。因此,可以预设数据量阈值作为数据同步任务的执行时所能抽取的最大数据量,若目标数据同步任务所对应的新增数据的数据量大于预设数据量阈值,则在执行目标数据同步线程时只抽取数据量为预设数据量阈值的新增数据,在将所抽取的新增数据同步至对应的目的数据表后,可以将该数据同步任务的本地偏移量更新为抽取的新增数据同步后的偏移量,将该数据同步任务的获取时间点更新为该次抽取的新增数据同
步完成后的时间点,并在任务调度队列中对该数据同步任务进行重新排序。举例而言,若目标数据同步任务的本地偏移量为98,而目标数据同步线程接收到的通知消息中指示的新增数据的终止位置为偏移量1000,若预设数据量阈值为100偏移量,则目标数据同步线程在执行该目标数据同步任务时,只能从消息队列中抽取100偏移量的新增数据,并在将抽取的新增数据同步完成后将该目标数据同步任务的本地偏移量更新为198,并将该目标数据同步任务的获取时间点更新为抽取的100偏移量的数据同步完成后的时间点,并在任务调度队列中对该目标数据同步任务进行重新排序。通过控制每次数据同步任务拉取新增数据的数据量,避免数据同步线程长时间执行同一数据同步任务,造成数据同步任务拥塞,从而保障该数据同步线程中数据同步的实时性。
45.在一实施例中,数据同步工具可以实时获取数据同步线程的负载状态,所述负载状态可以是任务调度队列中的未执行的数据同步任务数量,也可以是任务调度队列中各个数据同步任务所要同步的累计新增数据的数据量。在目标数据同步线程的负载状态超出预设复杂阈值的情况下,数据同步工具可以通过其他数据同步线程对目标数据同步线程进行负载分担。在数据同步工具运行有多个数据同步线程的情况下,若一个消息队列对应多个数据同步线程,则可以调用处理该消息队列的空闲的其他数据同步线程对目标数据同步线程进行负载分担;若一个消息队列对应一个数据同步线程,则可以调用其他消息队列的数据同步线程对目标数据同步线程进行负载分担,在这种情况下,数据同步任务的输入配置信息还应该包括消息队列名称。其他数据同步线程处于空闲状态,则可以利用空闲的其他数据同步线程对目标数据同步线程进行负载分担。或者,除了调用已有的数据同步线程进行负载分担外,若该数据同步工具存在空闲的cpu资源,也可以利用数据同步工具中空闲的cpu资源创建新的数据同步线程,通过新的数据同步线程对目标数据同步线程进行负载分担,直至数据同步工具获取的目标数据同步线程的负载状态不大于预设复杂阈值。在该实施例中,用于负载分担的数据同步线程所分担的数据同步任务可以为所述目标数据同步线程处理的等待时长超过预设时长的实时数据同步任务。在配置数据同步任务时可以为实时数据同步任务设置第一等待时长阈值,为非实时数据同步任务设置第二等待时长阈值,且第一等待时长阈值小于第二等待时长阈值,即实时任务较之非实时任务而言,对于任务处理的及时性需求相对更高。通过对目标数据同步线程进行负载分担,可以在目标数据同步线程中出现数据同步任务拥塞的情况下,临时增加数据同步线程资源,从而提高数据同步的实时性。
46.在本申请的技术方案中,数据同步工具可以通过tcp连接分别与消息队列、目的数据表进行数据交互。在消息队列的数据新增频率不大于预设阈值的情况下,数据同步工具可以在每次新增数据时与消息队列以及对应的目的数据表建立tcp连接,并在数据同步完成后断开该连接;在所述消息队列的数据新增频率大于预设频率阈值的情况下,也可以一直保持数据同步工具与所述消息队列以及对应的目的数据表之间建立的tcp连接,直至数据新增频率降低至预设频率阈值以下。其中,消息队列与数据同步工具之间tcp连接的建立与断开可以参考本领域中的现有技术,此处不再赘述。通过保持数据同步工具分别与消息队列和目的数据表之间的tcp连接,避免在数据同步过程中反复建立tcp连接,提高数据同步效率。
47.由以上本申请提供的技术方案可见,通过在数据同步工具中预设各个数据同步线
程对应的数据同步任务的配置信息,并在具有多个待执行的数据同步任务时对各个待执行的数据同步任务按照预设规则进行排序,使得一个数据同步线程可以执行多个数据同步任务,实现多个消息队列主题数据的实时同步,从而提高数据同步工具中数据同步线程的利用率,节约线程资源。下面以图1所示网络架构图为例,结合图3进行详细说明。其中,图3根据本申请一示例性实施例示出的一种数据同步方法的多方交互流程图。如图3所示,源端数据库组101、消息队列102、数据同步工具103、目的数据库组104之间的交互过程包括以下步骤:
48.步骤301,源端数据库组101将新增数据发送给消息队列102。
49.步骤302,消息队列102在新增数据的情况下,生成通知消息。
50.消息队列102接收并缓存源端数据库101发送的新增数据,消息队列102在接收到新增数据的情况下根据新增数据的目标消息队列主题、新增数据在消息队列102中的分区和偏移量等参数生成通知消息。
51.步骤303,消息队列102将通知消息发送给对应的数据同步工具103。
52.消息队列102与数据同步工具103之前预先建立有tcp连接,消息队列102通过该tcp连接将生成的通知消息发送给数据同步工具103。
53.步骤304,数据同步工具103确定与接收到的通知消息对应的目标数据同步线程。
54.数据同步工具103中运行的各个数据同步线程预先配置有各自对应的数据同步任务,以及各个数据同步任务的输入信息和输出信息。在接收到通知消息后,数据同步工具103可以解析该通知消息,获取通知消息中包含的目标消息队列主题,通过将获取到的目标消息队列主题与自身运行的各个数据同步线程所配置的各个数据同步任务的输入信息相匹配,确定对应的目标数据同步任务,以及该目标数据同步任务所属的目标数据同步线程。
55.步骤305,将目标数据同步任务插入目标数据线程对应的任务调度队列中的对应位置。
56.目标数据同步线程根据目标数据同步任务和目标数据同步线程对应的任务调度队列中已存在的各个数据同步任务的预设优先级和各自对应的通知消息的获取时间点,确定目标数据同步任务与该任务调度队列中已存在的各个数据同步任务之间的执行顺序,以根据确定出的执行顺序将目标数据同步任务插入至所述任务调度队列中的对应位置。
57.举例而言,表1为目标数据同步线程对应的任务调度队列,表2为数据同步工具103解析通知消息所获取的目标数据同步任务的各个属性。
[0058][0059]
表1
[0060][0061]
表2
[0062]
将表2所示的目标数据同步任务ab的优先级与表1所示的各个数据同步任务的优先级进行比对,确定目标数据同步任务ab优先级高于数据同步任务bb的优先级,且与数据同步任务aa的优先级相同。进一步比对目标数据同步任务ab与数据同步任务aa的获取时间点,确定目标数据同步任务ab的获取时间点晚于数据同步任务aa的获取时间点,可以确定目标数据同步任务ab的执行顺序低于数据同步任务aa,高于数据同步任务bb,将其插入任务调度队列表1的数据同步任务aa与bb之间,生成新的任务调度队列,如表3所示。
[0063][0064]
表3
[0065]
步骤306,目标任务同步线程依次执行任务调度队列中的各个数据同步任务,以将各个数据同步任务所对应的新增数据同步到目的数据库组104中各个数据同步任务的输出配置信息所定义的目的数据表。
[0066]
目标任务同步线程按照表3所示的任务调度队列的执行顺序优先执行数据同步任务aa。
[0067]
若目标数据同步线程中预先设置每次执行数据同步任务最多抽取100个偏移量的新增数据,则目标数据同步线程在执行数据同步任务aa时,从消息队列102的对应消息队列主题中抽取100偏移量的新增数据,并在将抽取的新增数据同步完成后将该数据同步任务的本地偏移量更新为198,将获取时间点更新为所抽取的新增数据同步完成后的时间点,例如为12:11:056,并在任务调度队列中对该数据同步任务按照如上所述的排序方式进行重新排序,如表4所示,为重新排序后的任务调度队列。
[0068][0069]
表4
[0070]
与上述方法实施例相对应,本说明书还提供了一种装置的实施例。
[0071]
图4是根据本申请一示例性实施例示出的一种数据同步电子设备的结构示意图。参考图4,在硬件层面,该电子设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0072]
图5是根据本申请一示例性实施例示出的一种数据同步装置的框图。参照图5,该装置包括消息获取单元502、任务确定单元504和任务执行单元506,其中:
[0073]
消息获取单元502被配置为获取消息队列发送的通知消息,所述通知消息用于表明所述消息队列中的目标消息队列主题存在新增数据;
[0074]
任务确定单元504被配置为根据每个数据同步任务的输入配置信息,确定出匹配于所述目标消息队列主题的目标数据同步任务;
[0075]
任务执行单元506被配置为在所述目标数据同步任务属于目标数据同步线程的情况下,通过目标数据同步线程执行所述目标数据同步任务,以从所述消息队列中抽取所述新增数据,并将所述新增数据同步到所述目标数据同步任务的输出配置信息所定义的目的数据表。
[0076]
可选的,所述通知消息包括所述新增数据在所述消息队列中的分区和偏移量,所述通过目标数据同步线程执行所述目标数据同步任务包括:在所述目标数据同步任务不存在对应于所述通知消息中的分区的本地分区,或者所述通知消息中的偏移量大于所述目标数据同步任务的对应于所述通知消息中的分区的本地偏移量的情况下,通过所述目标数据同步线程执行所述目标数据同步任务;其中,本地分区为历史同步数据所处的分区,本地偏移量为历史同步数据在所处分区中对应的最大偏移量。
[0077]
可选的,上述装置还包括:
[0078]
本地更新单元508,被配置为在所述通知消息中的分区大于所述目标数据同步任务的本地分区的情况下,在将所述新增数据同步至所述目标数据同步任务的输出配置信息所定义的目的数据表之后,将所述本地分区更新为所述通知消息中的分区并将所述本地偏移量更新为所述通知消息中的偏移量;在所述通知消息中的偏移量大于所述目标数据同步任务的本地偏移量的情况下,在将所述新增数据同步至所述目标数据同步任务的输出配置信息所定义的目的数据表之后,将所述本地偏移量更新为所述通知消息中的偏移量。
[0079]
可选的,通过目标数据同步线程执行所述目标数据同步任务,包括:确定所述目标数据同步任务与所述目标数据同步线程对应的任务调度队列中已存在的各个数据同步任务之间的执行顺序;根据确定出的执行顺序,将所述目标数据同步任务插入至所述任务调度队列中的对应位置;通过所述目标数据同步线程依次执行所述调度队列中的各个数据同步任务。
[0080]
可选的,确定所述目标数据同步任务与所述目标数据同步线程对应的任务调度队列中已存在的各个数据同步任务之间的执行顺序,包括:根据所述目标数据同步任务的预设优先级和所述目标数据同步线程对应的任务调度队列中已存在的各个数据同步任务的预设优先级,确定所述目标数据同步任务与所述已存在的各个数据同步任务之间的执行顺序;若任一已存在的数据同步任务与所述目标数据同步任务的预设优先级相同,则按照对
应于所述目标数据同步任务和所述任一已存在的数据同步任务的通知消息的获取时间点,确定所述目标数据同步任务与所述任一已存在的数据同步任务之间的执行顺序。
[0081]
可选的,上述装置还包括:
[0082]
数据抽取单元510,被配置为若所述目标数据同步任务对应的新增数据的数据量大于预设数据量阈值,则通过所述目标数据同步线程执行所述目标数据同步任务,以从所述消息队列中抽取数据量为所述预设数据量阈值的新增数据,并将所述抽取的新增数据同步到所述目标数据同步任务的输出配置信息所定义的目的数据表;
[0083]
任务排序单元512,被配置为将所述数据同步任务对应的获取时间点更新为所述抽取的新增数据同步完成后的时间点,并在所述调度队列中对所述目标数据同步任务进行重新排序。
[0084]
可选的,所述输入配置信息还包括对应的消费组标识的信息;所述根据每个数据同步任务的输入配置信息,确定出匹配于所述目标消息队列主题的目标数据同步任务,包括:根据每个数据同步任务的输入配置信息中的消息队列主题信息和消费组标识信息,以及所述通知消息中包含的目标消息队列主题和目标消费组标识,确定对应于所述通知消息的目标数据同步任务。
[0085]
可选的,上述装置还包括:
[0086]
负载获取单元514,被配置为获取所述目标数据同步线程的负载状态;
[0087]
负载分担单元516,被配置为在所述负载状态大于预设负载阈值,且不存在其他数据同步线程或者不存在其他空闲的数据同步线程的情况下,创建新的数据同步线程,以对所述目标数据同步线程处理的数据同步任务进行负载分担;
[0088]
线程释放单元518,在所述目标数据同步线程负载分担后的负载状态不大于预设负载阈值的情况下,释放所述新的数据同步线程。
[0089]
可选的,所述新的数据同步线程为所述数据同步工具中的空闲线程。
[0090]
可选的,所述新的数据同步线程所分担的数据同步任务为所述目标数据同步线程处理的等待时长超过预设时长的实时数据同步任务。
[0091]
可选的,所述抽取所述新增数据,包括:在所述通知消息指示了所述新增数据的起始位置和终止位置的情况下,按照所述起始位置和所述终止位置抽取所述新增数据;在所述通知消息指示了所述新增数据的起始位置且未指示终止位置的情况下,抽取从所述起始位置开始的所有新增数据。
[0092]
可选的,上述装置还包括:
[0093]
连接保持单元520,被配置为在所述消息队列的数据新增频率大于预设频率阈值的情况下,保持所述数据同步工具分别与所述消息队列、所述输出配置信息所定义的目的数据表之间建立的tcp连接,所述tcp连接用于所述数据同步工具分别与所述消息队列、所述输出配置信息所定义的目的数据表之间的数据交互。
[0094]
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0095]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以
不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0096]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由数据同步装置的处理器执行以实现如上述实施例中任一所述的方法,比如该方法可以包括:
[0097]
获取消息队列发送的通知消息,所述通知消息用于表明所述消息队列中的目标消息队列主题存在新增数据;根据每个数据同步任务的输入配置信息,确定出匹配于所述目标消息队列主题的目标数据同步任务;在所述目标数据同步任务属于目标数据同步线程的情况下,通过目标数据同步线程执行所述目标数据同步任务,以从所述消息队列中抽取所述新增数据,并将所述新增数据同步到所述目标数据同步任务的输出配置信息所定义的目的数据表。
[0098]
其中,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等,本申请并不对此进行限制。
[0099]
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1