CN115858667A - 用于同步数据的方法、装置、设备和存储介质 - Google Patents
用于同步数据的方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN115858667A CN115858667A CN202211469420.5A CN202211469420A CN115858667A CN 115858667 A CN115858667 A CN 115858667A CN 202211469420 A CN202211469420 A CN 202211469420A CN 115858667 A CN115858667 A CN 115858667A
- Authority
- CN
- China
- Prior art keywords
- synchronization
- data
- task
- pipes
- concurrent
- 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
Landscapes
- Multi Processors (AREA)
Abstract
提供了用于同步数据的方法、装置、设备和存储介质。在一种方法中,在数据同步系统中接收同步任务,同步任务用于从数据源向数据仓库同步在同步任务中指定的数据分页,数据同步系统包括多个执行节点,多个执行节点中的执行节点包括至少一个同步管道。基于由多个执行节点执行的一组同步任务的影响因子确定并发管道数量,并发管道数量表示数据同步系统中的用于执行数据同步的同步管道的数量的预测值。响应于确定数据同步系统中的同步管道的当前数量不同于并发管道数量,调整数据同步系统中的同步管道的当前数量。利用调整后的数据同步系统来执行同步任务。以此方式,可以动态地调整同步管道的并发管道数量,进而提高数据同步系统的性能。
Description
技术领域
本公开的示例实施方式总体涉及数据同步,特别地涉及基于分布式方式从数据源向数据仓库同步数据的方法、装置、设备和计算机可读存储介质。
背景技术
目前已经提出了用于从数据源向数据仓库执行数据同步的多种技术方案。例如,可以经由数据源所支持的应用编程接口(API)来执行数据同步;又例如,可以基于数据源处的日志记录来执行数据同步,等等。然而,已有技术方案的数据同步性能并不令人满意。尤其是,当数据同步涉及较大数据量时,数据同步系统中的各种资源可能会被耗尽,进而导致数据同步任务出现延迟甚至失败。此时,期望可以以更加有效的方式执行数据同步。
发明内容
在本公开的第一方面,提供了一种用于同步数据的方法。在该方法中,在数据同步系统中接收同步任务,同步任务用于从数据源向数据仓库同步在同步任务中指定的数据分页,数据同步系统包括多个执行节点,多个执行节点中的执行节点包括至少一个同步管道。基于由多个执行节点执行的一组同步任务的影响因子确定并发管道数量,并发管道数量表示数据同步系统中的用于执行数据同步的同步管道的数量的预测值。响应于确定数据同步系统中的同步管道的当前数量不同于并发管道数量,调整数据同步系统中的同步管道的当前数量。利用调整后的数据同步系统来执行同步任务。
在本公开的第二方面,提供了一种用于同步数据的装置。该装置包括:接收模块,被配置用于在数据同步系统中接收同步任务,同步任务用于从数据源向数据仓库同步在同步任务中指定的数据分页,数据同步系统包括多个执行节点,多个执行节点中的执行节点包括至少一个同步管道;确定模块,被配置用于基于由多个执行节点执行的一组同步任务的影响因子确定并发管道数量,并发管道数量表示数据同步系统中的用于执行数据同步的同步管道的数量的预测值;调整模块,被配置用于响应于确定数据同步系统中的同步管道的当前数量不同于并发管道数量,调整数据同步系统中的同步管道的当前数量;以及执行模块,被配置用于利用调整后的数据同步系统来执行同步任务。
在本公开的第三方面,提供了一种电子设备。该设备包括至少一个处理单元;以及至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。指令在由至少一个处理单元执行时使设备执行第一方面的方法。
在本公开的第四方面,提供了一种计算机可读存储介质。介质上存储有计算机程序,计算机程序被处理器执行时实现第一方面的方法。
应当理解,本内容部分中所描述的内容并非旨在限定本公开的实施方式的关键特征或重要特征,也不用于限制本公开的范围。本公开的其他特征将通过以下的描述而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施方式的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了能够在其中实现本公开的实施方式的示例环境的示意图;
图2示出了根据本公开的一些实施方式的经由数据同步系统来向数据仓库同步数据的过程的框图;
图3示出了根据本公开的一些实施方式的获取同步任务的过程的框图;
图4示出了根据本公开的一些实施方式的影响因子的数据结构的框图;
图5示出了根据本公开的一些实施方式的基于神经网络模型来确定并发管道数量的过程的框图;
图6示出了根据本公开的一些实施方式的用于执行同步任务的数据同步系统的框图;
图7示出了根据本公开的一些实施方式的由执行节点执行同步任务的过程的框图;
图8示出了根据本公开的一些实施方式的在数据同步系统中执行数据同步的方法的流程图;
图9示出了根据本公开的一些实施方式的用于数据同步的方法的流程图;
图10示出了根据本公开的一些实现方式的用于数据同步的装置的框图;以及
图11示出了其中可以实施本公开的一个或多个实施方式的电子设备。
具体实施方式
下面将参照附图更详细地描述本公开的实施方式。虽然附图中示出了本公开的某些实施方式,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施方式,相反,提供这些实施方式是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施方式仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施方式的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施方式”或“该实施方式”应当理解为“至少一个实施方式”。术语“一些实施方式”应当理解为“至少一些实施方式”。下文还可能包括其他明确的和隐含的定义。
可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获得或使用)应当遵循相应法律法规及相关规定的要求。
可以理解的是,在使用本公开各实施方式公开的技术方案之前,均应当根据相关法律法规通过适当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获得和使用到用户的个人信息,从而使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限制性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式,例如可以是弹出窗口的方式,弹出窗口中可以以文字的方式呈现提示信息。此外,弹出窗口中还可以承载供用户选择“同意”或“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获得用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其他满足相关法律法规的方式也可应用于本公开的实现方式中。
在此使用的术语“响应于”表示相应的事件发生或者条件得以满足的状态。将会理解,响应于该事件或者条件而被执行的后续动作的执行时机,与该事件发生或者条件成立的时间,二者之间未必是强关联的。例如,在某些情况下,后续动作可在事件发生或者条件成立时立即被执行;而在另一些情况下,后续动作可在事件发生或者条件成立后经过一段时间才被执行。
目前已经提出了用于从数据源向数据仓库执行数据同步的多种技术方案。首先参见图1描述数据同步的应用环境,该图1示出了能够在其中实现本公开的实施方式的示例环境100的示意图。如图1所示,可以经由数据同步系统130来将数据源110中的数据同步至数据仓库120。
可以经由一个或多个同步任务112、…、以及114来完成数据同步。在此,同步任务112可以涉及向数据仓库120同步整个数据源110中的数据。备选地和/或附加地,同步任务112也可以向数据仓库120同步数据源110中的一部分数据。随着数据源110的运行,可以在预定时间点(或者响应于预定事件)来生成同步任务112、…、以及114。此时,数据同步系统130中的执行节点132可以执行各个同步任务。例如,可以按照各个任务的接收时间、优先级等来顺序地执行各个同步任务。
目前已经开发了基于实时增量同步的技术方案。在该技术方案中,可以读取数据源110相关的日志信息,收集数据源110中的数据变化并且将该变化同步至数据仓库120,以便完成数据的实时同步。这种收集操作是在操作系统层面完成的,不需要访问数据源110本身,因此不会给数据源110带来性能上的瓶颈。然而,由于数据源110中可能会存储例如用户信息等敏感数据,上述技术方案在数据同步过程中可能会存在暴露敏感数据的风险。
为了提高数据保护能力并且以更为灵活的方式来处理数据源110中的数据,提出了基于直连同步的技术方案。可以预先定义描述数据源110导出数据的API,可以从数据源110导出待同步的数据,并且在数据同步系统中作为中间数据进行存储,继而将该中间数据同步至数据仓库120。然而,上述中间数据可能会占用数据同步系统的大量资源,进而导致数据同步任务出现延迟甚至失败。
为了至少部分地解决上述缺陷,提出了一种用于同步数据的方法。可以以分布式方式,经由多个执行节点中的多个同步管道来执行数据同步。换言之,可以利用多个同步管道来并发地执行多个同步任务。参见图2描述根据本公开的一个示例性实现方式的概要,该图2示出了根据本公开的一些实施方式的经由数据同步系统来向数据仓库同步数据的过程的框图200。如图2所示,数据同步系统210可以包括以分布式方式部署的多个执行节点250、…、252。在此,每个执行节点可以包括一个或多个同步管道,以便用于执行同步任务。
具体地,数据同步系统210可以接收同步任务112、…、114。在此,同步任务用于从数据源110向数据仓库120同步在同步任务中指定的数据分页。例如,同步任务112和114可以分别指定不同的数据分页。在接收到同步任务112和114的情况下,数据同步系统210可以经由一个或多个执行节点中的同步管道来并发地执行同步任务112和114。
根据本公开的一个示例性实现方式,可以基于数据同步系统210中的一组同步任务的影响因子(例如,影响因子260、…、262)确定并发管道数量264。在此,一组同步任务可以表示已经被接收到数据同步系统210中的并且由各个执行节点执行的同步任务。并发管道数量264可以表示数据同步系统210中的用于执行数据同步的同步管道的数量的预测值。换言之,可以基于数据同步系统210中的各个同步任务对于性能的影响,来确定可以并发用于执行数据同步的同步管道的预测值。在此,该预测值可以是基于历史经验和/或其他方式来预测的、并且有助于提高数据同步系统210的整体性能的同步管道的数量。通过将数据同步系统210中的同步管道的数量调整至该预测值,可以提高数据同步系统210的性能。
如图2所示,可以利用影响因子采集模块240来分别从执行节点250、…、252采集影响因子260、…、262。进一步,可以使用管道调度模块230来基于各个影响因子确定并发管道数量264。可以比较数据同步系统210中的同步管道的当前数量与该并发管道数量264。如果两者不同,在可以调整数据同步系统210中的同步管道的当前数量。进一步,可以利用调整后的数据同步系统210来执行同步任务,也即,利用调整后的数据同步系统210中的各个执行节点中的同步管道,执行数据同步。此时,数据同步系统210中的同步管道的数量与并发管道数量264相同,因而可以更充分地利用数据同步系统210中的各种资源,进而提高数据同步系统210的性能。
利用本公开的示例性实现方式,利用影响因子来动态调整同步管道的数量,可以不断地基于实时采集到的数据来控制同步管道的数量,进而充分利用数据同步系统210中的各种资源来实现速度可调的数据同步。
已经描述了根据本公开的一个示例性实现方式的概要,在下文中,将提供有关数据同步的各个步骤的具体细节。根据本公开的一个示例性实现方式,在数据同步过程中,数据源110通常可以支持两种方式:全量应用编程接口(API)方式和分页API方式。全量API方式需要获取数据源110中的全量数据,然后根据数据同步系统210的运行状态调整管道的并发数量。在数据同步涉及较大数据量时,全量API方式将会将会占用数据同步系统210中的大量资源,并且可能会导致数据同步系统210的资源耗尽。分页API方式可以根据数据源110中的数据分页来调整同步管道的并发数量。
根据本公开的一个示例性实现方式,可以基于分页API方式来实现数据同步过程。此时,在各个同步任务中指定的数据分页是经由数据源110的分页API来生成的。图3示出了根据本公开的一些实施方式的获取同步任务的过程的框图300。如图3所示,数据源110可以包括自定义的多个字段,并且这字段中可能会涉及敏感信息。可以利用数据源110所支持的分页API 310来封装待同步的数据。例如,分页API 310可以生成已经去除了敏感信息的数据分页320、…、322,并且在同步任务112、…、114中指定相应的数据分页320、…、322。
以此方式,一方面可以以更为精细的粒度来处理数据源110中的各个分页,另一方面可以降低在数据同步过程中泄漏敏感信息的风险。此时,数据分页和同步任务之间具有一一对应的关系。数据同步系统210可以在相同或者不同的时间点处接收多个同步任务。此时,数据同步系统210可以以更为灵活的方式来调用多个同步管道,以便并发地处理各个同步任务。以此方式,可以以并发方式及时处理各个同步任务,进而降低大量同步任务滞留在数据同步系统210之中并且耗尽数据同步系统210的资源的潜在风险。
根据本公开的一个示例性实现方式,可以进一步检测各个同步任务的有效性。换言之,可以仅在确定同步任务为可执行的有效任务的情况下,才触发数据同步系统210执行后续的处理流程。具体地,可以基于同步任务中指定的数据分页是否符合预定条件来确定同步任务的有效性。例如,如果可以读取同步任务中指定的数据分页的具体内容,则认为该同步任务是有效的。如果第一次验证失败,则可以重试一次或者多次。
如果在阈值次数(例如,3次或者其他数量)内确认同步任务有效,则可以执行后续处理流程。如果重试次数达到阈值次数并且此时仍然确定同步任务无效,则可以终止该同步任务。换言之,数据同步系统210不再处理该无效的同步任务,并且可以向数据源110返回报警信息。以此方式,可以确保进入数据同步系统210的同步任务都是可执行的,因而降低无效的同步任务占用数据同步系统210中的各种资源的潜在风险。
根据本公开的一个示例性实现方式,在确定同步任务为有效任务的情况下,可以继续后续处理流程并且基于同步任务的影响因子确定并发管道数量264。根据本公开的一个示例性实现方式,影响因子可以包括多方面的信息,例如可以包括但不限于数据同步系统210中的同步任务的变化、延迟、开始时间、执行时间、数据量、数据同步速度,等等。可以从执行给定同步任务的执行节点250来获取相应的影响因子。例如,在图2的示例中,在由执行节点250来执行给定同步任务的情况下,可以由执行节点250提供该给定同步任务的影响因子260。
参见图4描述有关影响因子的更多细节,该图4示出了根据本公开的一些实施方式的影响因子的数据结构的框图400。如图4所示,影响因子260可以包括:任务变化410,例如同步任务的接收、完成、等;任务延迟412,例如同步任务是否被延迟以及相应的延迟时间等;开始时间414,例如同步任务被执行的时间、同步任务被接收的时间等;执行时间416,例如,同步任务已经被执行的时间段的长度;数据量418,例如同步任务所涉及的待同步数据的大小;同步速度420,例如同步任务所涉及的待同步数据的传输速度,等等。
将会理解,上文仅以示例方式示出了影响因子的具体示例,根据本公开的一个示例性实现方式,影响因子可以包括更多、更少或者不同的内容。利用本公开的示例性实现方式,影响因子可以充分描述可能会对数据同步系统210中的同步管道的并发管道数量产生影响的多方面信息。以此方式,可以充分考虑多种因素的影响,进而以更为准确的方式确定有助于提高数据同步系统210性能的并发管道数量。
根据本公开的一个示例性实现方式,可以基于多种方式来确定并发管道数量。例如,可以通过统计和/或其他方式来确定各个影响因子的权重,进而将并发管道数量表示为影响因子的函数。例如,可以加权求和的方式来确定并发管道数量。
备选地和/或附加地,可以基于机器学习模型来确定该并发管道数量。如本文中所使用的,术语“模型”可以从训练数据中学习到相应的输入与输出之间的关联关系,从而在训练完成后可以针对给定的输入,生成对应的输出。模型的生成可以基于机器学习技术。深度学习是一种机器学习算法,通过使用多层处理单元来处理输入和提供相应输出。神经网络模型是基于深度学习的模型的一个示例。
图5示出了根据本公开的一些实施方式的基于神经网络模型来确定并发管道数量的过程的框图500。可以获取数据同步系统210的历史运行过程中的历史数据,并且可以将这些历史数据作为训练数据来训练机器学习模型510。以此方式,训练后的机器学习模型510可以准确描述描述并发管道数量与影响因子之间的关联关系。进一步,可以将影响因子260输入至机器学习习模块510,以便确定相应的并发管道数量520。
将会理解,尽管上文仅示意性示出了基于一个影响因子来确定并发管道数量的情况,可以基于从数据同步系统210中的各个执行节点250获取的影响因子,来确定在整个数据同步系统210中的全部同步管道的并发管道数量264。
根据本公开的一个示例性实现方式,为了便于数据同步系统210内的数据通信,数据同步系统210可以包括分别存储影响因子、任务状态、以及任务的队列。参见图6描述数据同步系统210的更多信息,该图6示出了根据本公开的一些实施方式的由执行节点执行同步任务的过程的框图600。如图6所示,数据同步系统210可以包括:用于存储影响因子的队列640(简称为影响因子队列)、用于存储任务状态的队列650(简称为状态队列)以及用于存储任务的队列630(任务队列)。
具体地,每个执行节点可以向队列640中存储在该执行节点处执行的同步任务相关的影响因子。例如,假设给定同步任务在执行节点250处被执行,则执行节点250可以向队列640存储该给定同步任务的影响因子642。又例如,假设另一同步任务在执行节点252处被执行,则执行节点252可以向队列640存储该另一同步任务的影响因子642。此时,队列640可以包括数据同步系统210中的各个同步任务的影响因子。
利用本公开的示例性实现方式,各个执行节点仅需提供在本地执行的同步任务的相关影响因子。以此方式,可以以分布式方式来充分调用各个执行节点250的处理能力。进一步,队列640可以便于任务发布模块220来以统一的方式获取所需的影响因子,进而基于获取的影响因子来确定并发管道数量。
根据本公开的一个示例性实现方式,可以读取队列640中的一组同步任务的影响因子,进而确定并发管道数量264。例如,可以将读取的各个影响因子输入至机器学习模型510,进而确定并发管道数量264。由于机器学习模型510是基于高效的数据同步系统210的历史数据训练的,该模型输出的并发管道数量264可以确保数据同步系统210的高效运行。
根据本公开的一个示例性实现方式,各个执行节点可以实时地将由自身执行的同步任务的任务状态存储至队列650。例如,假设给定同步任务在执行节点250处被执行,则执行节点250可以向队列650存储该给定同步任务的任务状态652。又例如,假设另一同步任务在执行节点252处被执行,则执行节点252可以向队列650存储该另一同步任务的影响因子652。此时,队列650可以包括数据同步系统210中的各个同步任务的任务状态。
利用本公开的示例性实现方式,各个执行节点仅需提供在本地执行的同步任务的相关任务状态。以此方式,可以以分布式方式来充分调用各个执行节点250的处理能力。进一步,队列650可以便于任务发布模块220来以统一的方式获取所需的各个任务的状态,进而相应地调整任务分发策略。
根据本公开的一个示例性实现方式,数据同步系统210可以进一步包括用于存储任务的队列630。该队列630包括将要由多个执行节点执行的同步任务。可以向队列630中写入将被执行的同步任务632,以使得多个执行节点中的执行节点来执行同步任务。各个执行节点可以按照预定义的方式来读取队列630的任务,进而经由各自节点本地的同步管道来执行同步任务。
根据本公开的一个示例性实现方式,数据同步系统210可以包括更多模块来完成上述过程。例如,交互模块610可以负责数据展示和用户交互操作相关功能。具体地,交互模块610可以向用户展示数据同步系统210的各种信息,包括但不限于,正在执行数据同步的数据源110、数据仓库120、数据同步系统210中的等待被处理的同步任务、已经被处理的同步任务、已经完成数据同步的数据量、百分比,等待。
根据本公开的一个示例性实现方式,任务发布模块220是数据同步系统210的核心功能模块,并且可以进一步包括更多的子模块。例如,任务调度子模块620可以负责任务的调度,例如,将待处理的同步任务插入到队列630中等待处理。任务状态监控子模块624可以通过与各个执行节点之间的交互(例如,经由队列650)来实时观测任务的状态。任务报警子模块628可以基于任务状态监控子模块624的监控结果来处理异常的同步任务,并且向用户通知异常状况。动态调整子模块622可以基于队列650中的任务状态和队列640中的影响因子,动态地调整同步管道的并发管道数量,并且将同步任务发布到队列630。
根据本公开的一个示例性实现方式,负载均衡器660可以从队列630获取待执行的同步任务,并且通过负载均衡算法(例如,轮询算法)来将各个同步任务分发至不同的执行节点。进一步,各个执行节点可以基于抽取-转换-加载(Extract-Transform-Load,ETL)技术,来执行同步任务。各个执行节点250可以将执行各个同步任务时产生的影响因子和任务状态分别推送到队列640和650,以便任务发布模块220访问。此时,可以在数据库662中存储任务发布模块220的处理结果。配置管理模块660可以管理上文描述的各个模块的全局配置。
将会理解,随着数据同步系统210的运行,可以实时地更新上文描述的各个队列中的内容。例如,随着各个执行节点不断地处理新的同步任务,各个执行节点可以不断地更新正在处理的同步任务的影响因子和任务状态,并且将更新后的影响因子和任务状态分别更新至队列640和650。又例如,随着数据同步系统210不断地接收到新的同步任务并且完成旧的同步任务,队列630中的同步任务也将会实时地更新。以此方式,各个队列可以实时地反映数据同步系统210中的最新状态,进而以更为精确的方式调整同步管道的数量。
已经描述了数据同步系统210中的各个模块的协作,在下文中,将描述如何基于并发管道数量来调整数据同步系统210中的同步管道的数量。首先参见图7描述执行节点的操作流程,该图7示出了根据本公开的一些实施方式的用于执行同步任务的数据同步系统的框图700。如图7所示,可以基于ETL技术来实现执行节点。此时,执行节点的操作流程可以划分为三个阶段:抽取710、转换740和加载750。
具体地,抽取710阶段可以负责数据分发,也即按照预定的逻辑来将数据分发到相应的数据集。转换740阶段可以负责数据清洗,也即,根据数据同步的具体要求清洗数据分页中的无效值、缺失值等。该阶段是实现流式ETL的核心,并且可以基于管道技术来实现。具体地,可以启动协程720来执行数据处理722,进而将处理后的数据添加至管道724,进而在加载750阶段实现将数据分页同步至数据仓库120。
将会理解,可以在执行节点中启动一个或多个协程进而建立相应的管道。例如,可以启动协程730来执行数据处理732,进而将处理后的数据插入管道734,以便在加载750阶段实现将数据分页同步至数据仓库120。可以基于确定的并发管道数量264来调整各个执行节点中的同步管道的数量。例如,在默认情况下,每个执行节点250可以包括一个同步管道。如果确定并发管道数量264高于各个执行节点中的同步管道的总量,则可以在某个(某些)执行节点中创建更多的同步管道。如果确定并发管道数量264低于各个执行节点中的同步管道的总量,则可以在某个(某些)执行节点中禁用某个(某些同步管道。
根据本公开的一个示例性实现方式,可以基于多个执行节点中的各个执行节点中的同步管道的数量,来从多个执行节点中选择待调整的执行节点。例如,可以确定平均管道数量,也即以平均方式分配各个执行节点中的同步管道时,各个执行节点中的管道数量。
假设基于上文描述的方法确定的并发管道数量为6,并且数据同步系统210中包括3个执行节点,则此时每个执行节点可以包括6/3=2个同步管道。假设三个执行节点中的管道数量分别为2、3、2,数据同步系统210中的当前管道数量为2+3+2=7。由于第二个执行节点中的管道数量3与平均管道数量的差异最大,可以选择调整第二个执行节点的管道数量,并且将其他执行节点中的管道数量保持不变。具体地,可以禁用第二个执行节点中的1个同步管道,这使得三个执行节点中的管道总量为2+2+2=6,并且与并发管道数量相同。
又例如,假设三个执行节点中的管道数量分别为2、1、2,此时,数据同步系统210中的当前管道数量为2+1+2=5。由于第二个执行节点中的管道数量1与平均管道数量的差异最大,可以在第二个执行节点中创建1个新的同步管道,并且使得三个执行节点中的管道总量为2+2+2=6,并且与并发管道数量相同。利用本公开的示例性实现方式,可以充分考虑各个执行节点的性能,进而以简单并且有效的方式来使得数据同步系统210中的同步管道总量满足确定的并发管道数量。
将会理解,上文仅以各个执行节点内的管道数量为示例描述了选择待调整的执行节点的具体实现方式。备选地和/或附加地,在管道数量以外,还可以考虑其他更多信息,包括但不限于同步管道中的待传输的数据量、传输速度、预期的传输时间、执行节点中的其他可用计算资源的数量,等等。例如,假设期望增加同步管道的数量,具有较小管道数量的执行节点正在同步大块数据并且可用计算资源不足,此时可以在其他执行节点中创建新的同步管道。
上文已经描述了利用数据同步系统210来执行数据同步的各个步骤的细节,在下文中,参见图8描述数据同步的整体流程。图8示出了根据本公开的一些实施方式的在数据同步系统中执行数据同步的方法800的流程图。如图8所示,方法800在框810处开始。在框812处,可以判断接收到的同步任务是否是有效任务。如果确定该任务为无效任务,则方法800前进至框814处,以便重新判断该任务是否有效。基于预定的阈值,可以重复执行框812和814处的操作。如果经过多次尝试仍然确定接收到的任务为无效任务,则方法800可以在框840处结束。此时,可以向数据源110和/或其他上游模块提供报错信息,以便告知接收到的同步任务出现异常。
在框812处,如果确定该任务为有效任务,则方法800前进至框820处,以便确定影响因子是否将会影响并发管道数量。如果框820处的判断结果为“是”,则方法800前进至框822,以便基于上文描述的具体过程来确定并发管道数量的数值;继而方法800前进至框824以便向队列630中添加任务。如果在框820处的判断结果为“否”,方法800直接前进至框824以便向队列630中添加任务。
在框826处,可以从任务队列中获取任务。在框828处,例如可以基于轮询算法或者其他算法来向执行节点分配任务。在框830处,可以确定是否需要调整管道数量。如果确定需要调整管道数量,则方法800前进至框832处,以便基于上文描述的方式来调整管道数量,继而方法800前进至框834处。如果确定不需要调整管道数量,则方法800直接前进至框834处。在框834处,可以基于上文描述的方法来执行ETL流程。也即,可以利用执行节点中的空闲的同步管道,来向数据仓库120同步在同步任务中指定的数据分页。
利用本公开的示例性实现方式,可以利用分布式处理来执行API分页数据的同步。通过在多个执行节点处利用动态流式ETL进行数据同步,可以将数据同步系统210中的同步任务分散至多个执行节点。进一步,可以基于影响因子来确定数据同步系统210中的同步管道的优选并发管道数量,通过将同步管道的数量调整至该优选并发管道数量,可以进一步利用每个执行节点的性能,进而提高数据同步系统210的同步性能。以此方式,可以缓解在同步数据(尤其是敏感数据)的单执行节点的性能瓶颈,并且可以基于实时的动态任务分配来缓和单一执行节点中的内存资源紧张的问题。
示例过程
图9示出了根据本公开的一些实施方式的用于数据同步的方法900的流程图。在框910处,在数据同步系统中接收同步任务,同步任务用于从数据源向数据仓库同步在同步任务中指定的数据分页,数据同步系统包括多个执行节点,多个执行节点中的执行节点包括至少一个同步管道。在框920处,基于由多个执行节点执行的一组同步任务的影响因子确定并发管道数量,并发管道数量表示数据同步系统中的用于执行数据同步的同步管道的数量的预测值。在框930处,响应于确定数据同步系统中的同步管道的当前数量不同于并发管道数量,调整数据同步系统中的同步管道的当前数量。在框940处,利用调整后的数据同步系统来执行同步任务。
根据本公开的一个示例性实现方式,数据同步系统进一步包括影响因子队列,影响因子队列包括一组同步任务的影响因子,以及确定并发管道数量包括:基于影响因子队列中的一组同步任务的影响因子,确定并发管道数量。
根据本公开的一个示例性实现方式,影响因子队列中的影响因子是由执行与影响因子相关联的同步任务的执行节点所确定的。
根据本公开的一个示例性实现方式,数据同步系统进一步包括任务队列,任务队列包括将要由多个执行节点执行的同步任务,以及利用调整后的数据同步系统来执行同步任务包括:向任务队列中写入同步任务,以使得多个执行节点中的执行节点来执行同步任务。
根据本公开的一个示例性实现方式,数据同步系统进一步包括状态队列,状态队列包括一组同步任务的状态,以及方法进一步包括:基于状态队列来更新任务队列。
根据本公开的一个示例性实现方式,状态队列中的状态是由执行与状态相关联的同步任务的执行节点所确定的。
根据本公开的一个示例性实现方式,调整数据同步系统中的同步管道的当前数量包括:基于多个执行节点中的各个执行节点中的同步管道的数量,从多个执行节点中选择执行节点;以及调整选择的执行节点中的同步管道的数量。
根据本公开的一个示例性实现方式,调整选择的执行节点中的同步管道的数量包括以下至少任一项:响应于确定数据同步系统中的同步管道的当前数量高于并发管道数量,禁用执行节点中的同步管道;响应于确定数据同步系统中的同步管道的当前数量低于并发管道数量,在执行节点中创建同步管道。
根据本公开的一个示例性实现方式,影响因子包括以下至少任一项:数据同步系统中的同步任务的变化、延迟、开始时间、执行时间、数据量、数据同步速度。
根据本公开的一个示例性实现方式,基于一组同步任务的影响因子确定并发管道数量包括基于以下任一项来确定并发管道数量:描述并发管道数量与影响因子之间的关联关系的函数;描述并发管道数量与影响因子之间的关联关系的机器学习模型。
根据本公开的一个示例性实现方式,基于一组同步任务的影响因子确定并发管道数量包括:响应于确定同步任务为有效任务,确定并发管道数量。
根据本公开的一个示例性实现方式,该方法900进一步包括:响应于确定同步任务为无效任务,重试同步任务以便重新确定同步任务是否为无效任务;以及响应于确定重试的次数达到预定阈值,终止同步任务。
根据本公开的一个示例性实现方式,同步任务中的数据分页是经由数据源的分页应用编程接口来生成的。
示例装置和设备
图10示出了根据本公开的一些实现方式的用于数据同步的装置1000的框图。该装置1000包括:接收模块1010,被配置用于在数据同步系统中接收同步任务,同步任务用于从数据源向数据仓库同步在同步任务中指定的数据分页,数据同步系统包括多个执行节点,多个执行节点中的执行节点包括至少一个同步管道;确定模块1020,被配置用于基于由多个执行节点执行的一组同步任务的影响因子确定并发管道数量,并发管道数量表示数据同步系统中的用于执行数据同步的同步管道的数量的预测值;调整模块1030,被配置用于响应于确定数据同步系统中的同步管道的当前数量不同于并发管道数量,调整数据同步系统中的同步管道的当前数量;以及执行模块1040,被配置用于利用调整后的数据同步系统来执行同步任务。
根据本公开的一个示例性实现方式,数据同步系统进一步包括影响因子队列,影响因子队列包括一组同步任务的影响因子,以及确定模块包括:数量确定模块,被配置用于基于影响因子队列中的一组同步任务的影响因子,确定并发管道数量。
根据本公开的一个示例性实现方式,影响因子队列中的影响因子是由执行与影响因子相关联的同步任务的执行节点所确定的。
根据本公开的一个示例性实现方式,数据同步系统进一步包括任务队列,任务队列包括将要由多个执行节点执行的同步任务,以及执行模块包括:写入模块,被配置用于向任务队列中写入同步任务,以使得多个执行节点中的执行节点来执行同步任务。
根据本公开的一个示例性实现方式,数据同步系统进一步包括状态队列,状态队列包括一组同步任务的状态,以及装置进一步包括:更新模块,被配置用于基于状态队列来更新任务队列。
根据本公开的一个示例性实现方式,其中状态队列中的状态是由执行与状态相关联的同步任务的执行节点所确定的。
根据本公开的一个示例性实现方式,调整模块1030包括:选择模块,被配置用于基于多个执行节点中的各个执行节点中的同步管道的数量,从多个执行节点中选择执行节点;以及数量调整模块,被配置用于调整选择的执行节点中的同步管道的数量。
根据本公开的一个示例性实现方式,数量调整模块包括以下至少任一项:禁用模块,被配置用于响应于确定数据同步系统中的同步管道的当前数量高于并发管道数量,禁用执行节点中的同步管道;创建模块,被配置用于响应于确定数据同步系统中的同步管道的当前数量低于并发管道数量,在执行节点中创建同步管道。
根据本公开的一个示例性实现方式,影响因子包括以下至少任一项:数据同步系统中的同步任务的变化、延迟、开始时间、执行时间、数据量、数据同步速度。
根据本公开的一个示例性实现方式,确定模块1020进一步被配置用于基于以下至少任一项来确定并发管道数量:描述并发管道数量与影响因子之间的关联关系的函数;描述并发管道数量与影响因子之间的关联关系的机器学习模型。
根据本公开的一个示例性实现方式,确定模块1020包括:验证模块,被配置用于响应于确定同步任务为有效任务,确定并发管道数量。
根据本公开的一个示例性实现方式,该装置进一步包括:重试模块,被配置用于响应于确定同步任务为无效任务,重试同步任务以便重新确定同步任务是否为无效任务;以及终止模块,被配置用于响应于确定重试的次数达到预定阈值,终止同步任务。
根据本公开的一个示例性实现方式,同步任务中的数据分页是经由数据源的分页应用编程接口来生成的。
图11示出了其中可以实施本公开的一个或多个实施方式的电子设备1100的框图。应当理解,图11所示出的电子设备1100仅仅是示例性的,而不应当构成对本文所描述的实施方式的功能和范围的任何限制。
如图11所示,电子设备1100是通用计算设备的形式。电子设备1100的组件可以包括但不限于一个或多个处理器或处理单元1110、存储器1120、存储设备1130、一个或多个通信单元1140、一个或多个输入设备1150以及一个或多个输出设备1160。处理单元1110可以是实际或虚拟处理器并且能够根据存储器1120中存储的程序来执行各种处理。在多处理器系统中,多个处理单元并行执行计算机可执行指令,以提高电子设备1100的并行处理能力。
电子设备1100通常包括多个计算机存储介质。这样的介质可以是电子设备1100可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器1120可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(RAM))、非易失性存储器(例如,只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存)或它们的某种组合。存储设备1130可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如闪存驱动、磁盘或者任何其他介质,其可以能够用于存储信息和/或数据(例如用于训练的训练数据)并且可以在电子设备1100内被访问。
电子设备1100可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图11中示出,可以提供用于从可拆卸、非易失性磁盘(例如“软盘”)进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。存储器1120可以包括计算机程序产品1125,其具有一个或多个程序模块,这些程序模块被配置为执行本公开的各种实施方式的各种方法或动作。
通信单元1140实现通过通信介质与其他电子设备进行通信。附加地,电子设备1100的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通信连接进行通信。因此,电子设备1100可以使用与一个或多个其他服务器、网络个人计算机(PC)或者另一个网络节点的逻辑连接来在联网环境中进行操作。
输入设备1150可以是一个或多个输入设备,例如鼠标、键盘、追踪球等。输出设备1160可以是一个或多个输出设备,例如显示器、扬声器、打印机等。电子设备1100还可以根据需要通过通信单元1140与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与电子设备1100交互的设备进行通信,或者与使得电子设备1100与一个或多个其他电子设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口(未示出)来执行。
根据本公开的示例性实现方式,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,其中计算机可执行指令被处理器执行以实现上文描述的方法。根据本公开的示例性实现方式,还提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,而计算机可执行指令被处理器执行以实现上文描述的方法。
这里参照根据本公开实现的方法、装置、设备和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各个实现方式。
Claims (16)
1.一种用于同步数据的方法,包括:
在数据同步系统中接收同步任务,所述同步任务用于从数据源向数据仓库同步在所述同步任务中指定的数据分页,所述数据同步系统包括多个执行节点,所述多个执行节点中的执行节点包括至少一个同步管道;
基于由所述多个执行节点执行的一组同步任务的影响因子确定并发管道数量,所述并发管道数量表示所述数据同步系统中的用于执行数据同步的同步管道的数量的预测值;
响应于确定所述数据同步系统中的所述同步管道的当前数量不同于所述并发管道数量,调整所述数据同步系统中的所述同步管道的所述当前数量;以及
利用调整后的所述数据同步系统来执行所述同步任务。
2.根据权利要求1所述的方法,其中所述数据同步系统进一步包括影响因子队列,所述影响因子队列包括所述一组同步任务的影响因子,以及确定所述并发管道数量包括:基于所述影响因子队列中的所述一组同步任务的影响因子,确定所述并发管道数量。
3.根据权利要求2所述的方法,其中所述影响因子队列中的影响因子是由执行与所述影响因子相关联的同步任务的执行节点所确定的。
4.根据权利要求1所述的方法,其中所述数据同步系统进一步包括任务队列,所述任务队列包括将要由所述多个执行节点执行的同步任务,以及利用调整后的所述数据同步系统来执行所述同步任务包括:向所述任务队列中写入所述同步任务,以使得所述多个执行节点中的执行节点来执行所述同步任务。
5.根据权利要求4所述的方法,其中所述数据同步系统进一步包括状态队列,所述状态队列包括所述一组同步任务的状态,以及所述方法进一步包括:基于所述状态队列来更新所述任务队列。
6.根据权利要求5所述的方法,其中所述状态队列中的状态是由执行与所述状态相关联的同步任务的执行节点所确定的。
7.根据权利要求1所述的方法,其中调整所述数据同步系统中的所述同步管道的所述当前数量包括:
基于所述多个执行节点中的各个执行节点中的同步管道的数量,从所述多个执行节点中选择执行节点;以及
调整选择的所述执行节点中的同步管道的数量。
8.根据权利要求7所述的方法,其中调整选择的所述执行节点中的同步管道的数量包括以下至少任一项:
响应于确定所述数据同步系统中的所述同步管道的所述当前数量高于所述并发管道数量,禁用所述执行节点中的同步管道;
响应于确定所述数据同步系统中的所述同步管道的所述当前数量低于所述并发管道数量,在所述执行节点中创建同步管道。
9.根据权利要求1所述的方法,其中所述影响因子包括以下至少任一项:所述数据同步系统中的同步任务的变化、延迟、开始时间、执行时间、数据量、数据同步速度。
10.根据权利要求1所述的方法,其中基于所述一组同步任务的所述影响因子确定所述并发管道数量包括基于以下任一项来确定所述并发管道数量:
描述所述并发管道数量与所述影响因子之间的关联关系的函数;
描述所述并发管道数量与所述影响因子之间的关联关系的机器学习模型。
11.根据权利要求1所述的方法,其中基于所述一组同步任务的影响因子确定所述并发管道数量包括:响应于确定所述同步任务为有效任务,确定所述并发管道数量。
12.根据权利要求11所述的方法,进一步包括:
响应于确定所述同步任务为无效任务,重试所述同步任务以便重新确定所述同步任务是否为无效任务;以及
响应于确定重试的次数达到预定阈值,终止所述同步任务。
13.根据权利要求1所述的方法,其中所述同步任务中的数据分页是经由所述数据源的分页应用编程接口来生成的。
14.一种用于同步数据的装置,包括:
接收模块,被配置用于在数据同步系统中接收同步任务,所述同步任务用于从数据源向数据仓库同步在所述同步任务中指定的数据分页,所述数据同步系统包括多个执行节点,所述多个执行节点中的执行节点包括至少一个同步管道;
确定模块,被配置用于基于由所述多个执行节点执行的一组同步任务的影响因子确定并发管道数量,所述并发管道数量表示所述数据同步系统中的用于执行数据同步的同步管道的数量的预测值;
调整模块,被配置用于响应于确定所述数据同步系统中的所述同步管道的当前数量不同于所述并发管道数量,调整所述数据同步系统中的所述同步管道的所述当前数量;以及
执行模块,被配置用于利用调整后的所述数据同步系统来执行所述同步任务。
15.一种电子设备,包括:
至少一个处理单元;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令在由所述至少一个处理单元执行时使所述设备执行根据权利要求1至13中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469420.5A CN115858667A (zh) | 2022-11-22 | 2022-11-22 | 用于同步数据的方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469420.5A CN115858667A (zh) | 2022-11-22 | 2022-11-22 | 用于同步数据的方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858667A true CN115858667A (zh) | 2023-03-28 |
Family
ID=85665104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211469420.5A Pending CN115858667A (zh) | 2022-11-22 | 2022-11-22 | 用于同步数据的方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858667A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117743463A (zh) * | 2023-12-22 | 2024-03-22 | 上海掌数科技有限公司 | 一种高速数据传输同步的方法及系统 |
-
2022
- 2022-11-22 CN CN202211469420.5A patent/CN115858667A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117743463A (zh) * | 2023-12-22 | 2024-03-22 | 上海掌数科技有限公司 | 一种高速数据传输同步的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3000422C (en) | Workflow service using state transfer | |
WO2020211579A1 (zh) | 一种基于分布式批量处理系统的处理方法、装置及系统 | |
EP2851799B1 (en) | Fault tolerant batch processing | |
Cho et al. | Natjam: Design and evaluation of eviction policies for supporting priorities and deadlines in mapreduce clusters | |
US10505791B2 (en) | System and method to handle events using historical data in serverless systems | |
US20110321058A1 (en) | Adaptive Demand-Driven Load Balancing | |
CN111861412B (zh) | 面向完成时间优化的科学工作流调度方法及系统 | |
US8028291B2 (en) | Method and computer program product for job selection and resource allocation of a massively parallel processor | |
CN111294377B (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
CN115858667A (zh) | 用于同步数据的方法、装置、设备和存储介质 | |
US11074112B2 (en) | Maintaining the responsiveness of a user interface while performing a synchronous operation | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
US20130212584A1 (en) | Method for distributed caching and scheduling for shared nothing computer frameworks | |
CN107528871B (zh) | 存储系统中的数据分析 | |
CN113360577A (zh) | 一种mpp数据库数据处理方法、装置、设备及存储介质 | |
CN116954944A (zh) | 基于内存网格的分布式数据流处理方法、装置及设备 | |
CN107832154B (zh) | 一种多进程处理方法、处理装置及应用 | |
CN107958414B (zh) | 一种清除cics系统长交易的方法及系统 | |
CN115618966A (zh) | 用于训练机器学习模型的方法、装置、设备和介质 | |
WO2018188959A1 (en) | Method and apparatus for managing events in a network that adopts event-driven programming framework | |
CN108984105B (zh) | 对网络存储设备中的复制任务进行分配的方法和设备 | |
US20210149726A1 (en) | Scheduling device, scheduling system, scheduling method, and non-transitory computer-readable medium | |
WO2018188958A1 (en) | A method and a host for managing events in a network that adopts event-driven programming framework | |
CN114741165A (zh) | 数据处理平台的处理方法、计算机设备及存储装置 | |
US20100175076A1 (en) | Method for executing a software routine identified in a task object |
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 |