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

业务数据同步方法及装置、非易失性存储介质、处理器

文献发布时间:2023-06-19 09:55:50


业务数据同步方法及装置、非易失性存储介质、处理器

技术领域

本发明涉及数据处理领域,具体而言,涉及一种业务数据同步方法及装置、非易失性存储介质、处理器。

背景技术

在第三方服务快速发展的背景下,越来越多的情况需要引进第三方厂商提供的服务或为其他厂商提供服务。通常情况下,双方数据的数据结构可能存在较大差异,在数据迁移时会造成大量人力物力的投入,使成本的提高。

现有技术中的一种数据转化方法及系统中,采用了利用读取工具从源数据库中读取数据的方式获取待转化数据,但是,当源数据库数据更新时,无法同时兼顾对源数据库的监听和对变化数据的转化同步处理。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种业务数据同步方法及装置、非易失性存储介质、处理器,以至少解决现有技术中的业务数据同步方法,无法同时兼顾对源数据库的监听和对变化数据的同步处理的技术问题。

根据本发明实施例的一个方面,提供了一种业务数据同步方法,包括:在监听到源数据库中的业务数据更新时,将获取到的待推送数据转存至目标消息队列;当同步转化服务程序监听上述目标消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应;采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台。

可选的,采用监听组件监听上述源数据库中的源数据日志文件,确定上述业务数据是否发生更新,其中,上述监听组件包括:数据库同步监听Canal组件。

可选的,将获取到的待推送数据转存至目标消息队列,包括:获取上述源数据库中的更新后业务数据,以及与上述更新后业务数据对应的更新前业务数据;将上述更新前业务数据和上述更新后业务数据转化为上述待推送数据,其中,上述待推送数据的数据结构为目标消息体结构。

可选的,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,包括:获取上述待推送数据中携带的数据标识信息;基于上述数据标识信息确定上述数据表类型;依据上述数据表类型判断上述待推送数据是否适用本地定制服务,其中,上述本地定制服务基于目标事件监听机制处理待推送数据,并将待推送数据封装成目标事件进行广播;若判断结果为是,则确定与上述数据表类型对应的监听类型,其中,不同的上述监听类型对应不同的事件监听器,上述事件监听器用于在接收到广播后对上述待推送数据进行转化处理。

可选的,若判断结果为否则丢弃上述待推送数据。

可选的,采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台,包括:采用上述推送服务程序将上述转化后待推送数据转化为目标字符串;通过超文本传输协议Http请求访问上述目标第三方平台的数据接收接口,并采用接口请求工具将上述目标字符串推送至上述数据接收接口,其中,上述目标第三方平台还用于将上述目标字符串存储至本地数据库中。

根据本发明实施例的另一方面,还提供了一种业务数据同步装置,包括:监听模块,用于在监听到源数据库中的业务数据更新时,将获取到的待推送数据转存至目标消息队列;转化处理模块,用于当同步转化服务程序监听上述目标消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应;推送模块,用于采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台。

根据本发明实施例的另一方面,还提供了一种非易失性存储介质,上述非易失性存储介质存储有多条指令,上述指令适于由处理器加载并执行任意一项上述的业务数据同步方法。

根据本发明实施例的另一方面,还提供了一种处理器,上述处理器用于运行程序,其中,上述程序被设置为运行时执行任意一项上述的业务数据同步方法。

根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为运行上述计算机程序以执行任意一项上述的业务数据同步方法。

在本发明实施例中,通过在监听到源数据库中的业务数据更新时,将获取到的待推送数据转存至目标消息队列;当同步转化服务程序监听上述目标消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应;采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台,达到了同时兼顾对源数据库的监听和对变化数据的同步的目的,从而实现了提升从源数据库中同步数据至第三方平台的效率的技术效果,进而解决了现有技术中的业务数据同步方法,无法同时兼顾对源数据库的监听和对变化数据的同步处理的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种业务数据同步方法的流程图;

图2是根据本发明实施例的一种可选的同步业务数据的执行流程示意图;

图3是根据本发明实施例的一种业务数据同步装置的结构示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种业务数据同步方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的一种业务数据同步方法的流程图,如图1所示,该方法包括如下步骤:

步骤S102,在监听到源数据库中的业务数据更新时,将获取到的待推送数据转存至目标消息队列;

步骤S104,当同步转化服务程序监听上述目标消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应;

步骤S106,采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台。

在本发明实施例中,通过在监听到源数据库中的业务数据更新时,将获取到的待推送数据转存至目标消息队列;当同步转化服务程序监听上述目标消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应;采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台,达到了同时兼顾对源数据库的监听和对变化数据的转化同步的目的,从而实现了提升从源数据库中同步数据至第三方平台的效率的技术效果,进而解决了现有技术中的业务数据同步方法,无法同时兼顾对源数据库的监听和对变化数据的同步处理的技术问题。

在一种可选的实施例中,采用监听组件监听上述源数据库中的源数据日志文件,确定上述业务数据是否发生更新,其中,上述监听组件包括:数据库同步监听Canal组件。

可选的,上述源数据库可以但不限于为MySQL业务数据库;上述目标消息队列可以为Kafka消息队列、RabbitMq消息队列。

在本申请实施例中还可以按照业务数据的更新类型或变化类型(添加、修改、删除),确定是否需要在目标第三方平台中进行相应处理,如图2所示,如果需要则将待推送数据转化为目标第三方平台要求的数据结构,通过第三方平台推送服务程序将转化后待推送数据以目标消息体结构推送到目标第三方平台。

通过本申请实施例,可以解决由于双方数据结构存在差异所导致的数据同步和转化问题,通过Canal组件监听源数据库数据的更新,将更新数据通过定制化数据同步转化服务,直接将改变后的业务数据转化为第三方平台要求的数据结构再推送到第三方平台。

在一种可选的实施例中,将获取到的待推送数据转存至目标消息队列,包括:

步骤S202,获取上述源数据库中的更新后业务数据,以及与上述更新后业务数据对应的更新前业务数据;

步骤S204,将上述更新前业务数据和上述更新后业务数据转化为上述待推送数据,其中,上述待推送数据的数据结构为目标消息体结构。

在本申请实施例中,采用Canal组件监测到的MySQL业务数据库中变化的业务数据后,获取该业务数据的更新前业务数据和更新后业务数据,并将上述更新前业务数据和上述更新后业务数据转化为目标消息体结构的待推送数据;之后将该待推送数据放入Kafka消息队列中,并采用同步转化服务程序(即定制化数据同步转化服务程序)监听Kafka消息队列中的待推送数据,当同步转化服务程序监听上述Kafka消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应。

在一种可选的实施例中,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,包括:

步骤S302,获取上述待推送数据中携带的数据标识信息;

步骤S304,基于上述数据标识信息确定上述数据表类型;

步骤S306,依据上述数据表类型判断上述待推送数据是否适用本地定制服务,其中,上述本地定制服务基于目标事件监听机制处理待推送数据,并将待推送数据封装成目标事件进行广播;

步骤S308,若判断结果为是,则确定与上述数据表类型对应的监听类型,其中,不同的上述监听类型对应不同的事件监听器,上述事件监听器用于在接收到广播后对上述待推送数据进行转化处理。

在上述可选的实施例中,若判断结果为否则丢弃上述待推送数据。

可选的,上述数据标识信息可以为数据表标识信息和/或源数据库标识信息。

可选的,上述目标事件可以为Spring事件,上述目标事件监听机制可以为Spring事件监听机制,该Spring事件监听机制基于设计模式种观察者模式实现,需要说明的是,除上述Spring事件监听机制外,其它基于观察者设计模式的事件监听技术方案也适用于本申请实施例。

作为一种可选的实施例,如下通过从实时性和可定制化的角度,阐述本申请实施例所提供的数据同步方法中的定制化统计服务的工作流程:

首先,通过Canal插件监听源数据日志文件,当源数据库出现数据更新时,Canal插件将一条更新数据转化为包含变化前和变化后数据的Canal消息体结构。Canal消息体通过Kafka消息队列推送至定制化数据同步转化服务进行同步转化处理。

然后,当Canal消息体结构转入定制化数据同步转化服务后,该定制化数据同步转化服务会根据消息中的数据库名和表明判断该消息是否适用于本地定制化服务。若适用则继续执行,若不适用则直接丢弃该条Canal消息体结构。上述本地定制服务基于Spring事件监听机制处理消息,将Canal消息体结构封装成Spring事件并进行广播,例如,可以按照数据表标识信息划分成不同的监听类型,不同监听类型对应不同监听器,监听器收到广播后进行相应的消息转化处理。

作为一种可选的实施例,采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台,包括:

步骤S402,采用上述推送服务程序将上述转化后待推送数据转化为目标字符串;

步骤S404,通过超文本传输协议Http请求访问上述目标第三方平台的数据接收接口,并采用接口请求工具将上述目标字符串推送至上述数据接收接口,其中,上述目标第三方平台还用于将上述目标字符串存储至本地数据库中。

可选的,上述接口请求工具可以为POST请求,在本申请实施例中,在生成第三方格式的数据体后,将数据体转化为JSON格式的字符串,通过HTTP请求访问第三方平台的数据接收接口,其中,不同数据处理方法访问对应接口,使用POST请求将JSON字符串推送至目标接口,由第三方平台处理并保存至第三方本地数据库,实现双方的数据同步。

作为一种可选的实施例,假设目前存在A、B、C三个事件监听器,当某个表的Canal消息经Kafka消息队列推送至定制服务,不同的数据变化进行相应处理,结合上一部分叙述的根据数据表分类的事件监听,采用策略模式将监听到的源数据库表的变化数据进行分类并处理,例如,如果A1表接收到Canal消息则将该Canal消息采用监听器A对其进行监听,如果B1表接收到Canal消息则将该Canal消息采用监听器B对其进行监听,如果C1表接收到Canal消息则将该Canal消息采用监听器C对其进行监听。

需要说明的是,如果与预先确定的事件监视器对应的数据表,均没有接收到Canal消息,即该Canal消息不适用本地定制服务,则丢弃该Canal消息。

假设现有源数据库A1表的添加了一条新数据,A1表对应的事件监听器A监听并接收新增数据,将变化数据导入策略工厂,获取变化数据的变化类型(Insert),遍历策略工厂中的策略实现类对象数组,将变化类型参数导入对象的变化类型验证方法,遍历到某个符合类型的策略实现类对象元素时,执行如下所示的对象实现的数据转化处理方法:将Canal消息体结构导入策略工厂获取变化数据的变化类型,i=0,遍历策略工厂中的策略实现类对象数组,获取数组中的第i个元素,验证该元素是否符合条件,如果验证结果为是则进行处理,如果验证结果为否则i=i+1,直至验证结果为是并在处理之后结束。

每个消息处理策略内都有一个相应的数据转化处理方法,根据不同数据表的类型,使用相应的数据模型将传入数据转化为第三方平台规定的数据结构。例如,源数据库中更新一条A1表数据,该数据经流程由A1表监听器接收,选择相应变化类型的数据处理策略并使用第三方平台关于A1表的数据模型。将源数据体中的属性按数据模型转化为对应的新属性,如表1所示的数据体格式对应关系表,源数据体中包含id、address等属性,对应数据模型中的dataId、address,将源数据体中必要的属性值写入对应新数据体的属性中,舍弃源数据体中多余属性,获得新数据体。

表1

本申请实施例适用于大部分第三方平台的接入,普适性好。并且本申请实施例中的事件监听部分和数据处理部分有良好的扩展性,可根据对接不同的第三方平台,加入对不同表的监听和新的数据处理方法。

并且,本申请实施例可以同时实现了对源数据的实时监听和对变化数据的转化同步;通过Canal监听到的变化数据,采用Kafka消息队列使处理程序获取变化数据,相较于使用Redis缓存的读写功能,使用Kafka消息队列避免了数据量大时对缓存数据库造成的读写压力。

实施例2

根据本发明实施例,还提供了一种用于实施上述业务数据同步方法的装置实施例,图3是根据本发明实施例的一种业务数据同步装置的结构示意图,如图3所示,上述业务数据同步装置,包括:监听模块500、转化处理模块502和推送模块504,其中:

监听模块500,用于在监听到源数据库中的业务数据更新时,将获取到的待推送数据转存至目标消息队列;转化处理模块502,用于当同步转化服务程序监听上述目标消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应;推送模块504,用于采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。

此处需要说明的是,上述监听模块500、转化处理模块502和推送模块504对应于实施例1中的步骤S102至步骤S106,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。

需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。

上述的业务数据同步装置还可以包括处理器和存储器,上述监听模块500、转化处理模块502和推送模块504等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元,上述内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

根据本申请实施例,还提供了一种非易失性存储介质的实施例。可选地,在本实施例中,上述非易失性存储介质包括存储的程序,其中,在上述程序运行时控制上述非易失性存储介质所在设备执行上述任意一种业务数据同步方法。

可选地,在本实施例中,上述非易失性存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中,上述非易失性存储介质包括存储的程序。

可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:在监听到源数据库中的业务数据更新时,将获取到的待推送数据转存至目标消息队列;当同步转化服务程序监听上述目标消息队列中的上述待推送数据时,依据上述推送数据的数据表类型对上述待推送数据进行转化处理,得到转化后待推送数据,其中,上述转化后待推送数据的数据结构与目标第三方平台的数据结构对应;采用推送服务程序将上述转化后待推送数据推送至上述目标第三方平台。

可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:采用监听组件监听上述源数据库中的源数据日志文件,确定上述业务数据是否发生更新,其中,上述监听组件包括:数据库同步监听Canal组件。

可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:获取上述源数据库中的更新后业务数据,以及与上述更新后业务数据对应的更新前业务数据;将上述更新前业务数据和上述更新后业务数据转化为上述待推送数据,其中,上述待推送数据的数据结构为目标消息体结构。

可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:获取上述待推送数据中携带的数据标识信息;基于上述数据标识信息确定上述数据表类型;依据上述数据表类型判断上述待推送数据是否适用本地定制服务,其中,上述本地定制服务基于目标事件监听机制处理待推送数据,并将待推送数据封装成目标事件进行广播;若判断结果为是,则确定与上述数据表类型对应的监听类型,其中,不同的上述监听类型对应不同的事件监听器,上述事件监听器用于在接收到广播后对上述待推送数据进行转化处理。

可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:若判断结果为否则丢弃上述待推送数据。

可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:采用上述推送服务程序将上述转化后待推送数据转化为目标字符串;通过超文本传输协议Http请求访问上述目标第三方平台的数据接收接口,并采用接口请求工具将上述目标字符串推送至上述数据接收接口,其中,上述目标第三方平台还用于将上述目标字符串存储至本地数据库中。

根据本申请实施例,还提供了一种处理器的实施例。可选地,在本实施例中,上述处理器用于运行程序,其中,上述程序运行时执行上述任意一种业务数据同步方法。

根据本申请实施例,还提供了一种电子装置的实施例,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为运行上述计算机程序以执行上述任意一种的业务数据同步方法。

根据本申请实施例,还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有上述任意一种的业务数据同步方法步骤的程序。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取非易失性存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的非易失性存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 业务数据同步方法及装置、非易失性存储介质、处理器
  • 数据处理方法、装置、非易失性存储介质及处理器
技术分类

06120112358359