数据同步系统、方法、装置及存储介质与流程

文档序号:16545156发布日期:2019-01-08 20:48阅读:133来源:国知局
数据同步系统、方法、装置及存储介质与流程

本申请涉及数据同步系统、方法、装置及存储介质,属于数据同步技术领域。



背景技术:

分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库由多个层级的服务域和在服务域上层的核心域构成,每个服务域可以包括多个平台域形成集群来为用户提供服务;每个服务域下还可以有多个用户域。比如:通过分布式数据库为用户提供视频会议服务。

在一种典型的分布式数据库的部署方式中,同一层级的不同服务域之间的数据相互独立;每级服务域下的平台域包含其所有下级服务域下的平台域的所有数据;同一服务域下的不同平台域中的数据一致。

根据上述部署方式可知,在某个服务域中的平台域的数据更新时,在该服务域之上的各个层级的服务域下的平台域以及核心域都需要进行同步数据更新;并且该服务域中的其他平台域也需要进行同步数据更新。

目前,使用数据库同步的方式进行不同平台域之间的数据同步,比如:通过mysql、mssql、oracle等数据库系统提供的数据库同步机制进行数据同步。

然而,在多个平台域同时需要对同一数据进行更新操作时,上述同步机制无法解决多个平台域同时更新同一数据导致的数据冲突的问题。



技术实现要素:

本申请提供了一种数据同步系统、方法、装置及存储介质,可以解决多个平台域同时更新同一数据导致的数据冲突的问题。本申请提供如下技术方案:

第一方面,提供了一种数据同步系统,所述系统包括核心域和n级服务域,存在至少一个服务域包括m个平台域,所述核心域位于所述n级服务域的上级,所述n和所述m均为正整数;

所述核心域,用于获取至少一个下级的服务域发送的数据更新请求;根据所述数据更新请求执行数据更新操作;获取数据更新路径,根据所述数据更新路径生成数据更新消息;通过核心域守护进程将所述数据更新消息写入所述数据更新路径指示的第一级的目标服务域所订阅的消息队列;

第i级的目标服务域中的目标平台域,用于通过第i级守护进程获取订阅的消息队列中的所述数据更新消息;根据所述数据更新消息执行数据更新操作;

其中,所述第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;所述i为小于或等于所述n的正整数,所述i的值越小对应的层级越高。

可选地,所述目标平台域为所述第i级的目标服务域中的主平台域,所述主平台域是指所述第i级的目标服务域中提供发送变更消息服务的平台域;所述第i级守护进程订阅的消息队列为上一级服务域的消息队列;所述主平台域,还用于:

在所述数据更新路径未完成时,通过所述第i级守护进程将所述数据更新消息写入所述数据更新路径指示的第i+1级的目标服务域所订阅的消息队列,i+1小于或等于n。

可选地,在所述第i级的目标服务域还包括其它平台域时,所述其它平台域是指所述第i级的目标服务域中除所述主平台域之外的平台域;

所述主平台域,还用于:

通过所述第i级守护进程将所述数据更新消息写入所述其它平台域所订阅的消息队列。

可选地,所述目标平台域为所述第i级的目标服务域中除主平台域之外的其他平台域;所述第i级守护进程订阅的消息队列为所述目标服务域中主平台域的消息队列。

可选地,所述核心域生成的数据更新路径包括:所述数据更新消息待写入的至少一级服务域及每级服务域对应的消息版本号,所述消息版本号用于指示所述数据更新消息的先后执行顺序;所述目标平台域,还用于:

在执行数据更新操作之前,通过所述第i级守护进程检测所述数据更新消息中的消息版本号是否与预测版本号相同,所述预测版本号是根据上一次执行更新操作时的历史版本号确定出的本次执行更新操作时预测使用的版本号;

在所述数据更新消息中的消息版本号与所述预测版本号相同时,触发执行所述根据所述数据更新消息执行数据更新操作的步骤,将所述历史版本号更新为所述消息版本号。

可选地,所述目标平台域,还用于在所述数据更新消息中的消息版本号与所述预测版本号不同,且在所述数据更新消息之前未收到过具有所述消息版本号的数据更新消息时,向所述核心域发送消息补充请求;所述消息补充请求用于请求所述核心域发送遗漏的数据更新消息;

所述核心域,用于接收所述消息补充请求;根据所述消息补充请求向所述目标平台域发送遗漏的数据更新消息,所述遗漏的数据更新消息包括版本号为所述预测版本号的数据更新消息。

可选地,在所述数据更新消息中的消息版本号与所述预测版本号不同,且在所述数据更新消息之前所述目标平台域已接收到具有所述消息版本号的数据更新消息时,所述目标平台域不执行所述根据所述数据更新消息执行数据更新操作的步骤。

可选地,所述系统还包括:

用户域,用于通过显示界面接收操作请求;并将所述操作请求发送至所述下级的服务域中的服务平台域;所述操作请求用于请求对所述下级的服务域中的主平台域进行数据更新操作,所述服务平台域用于为所述用户域提供服务,所述服务平台域为所述下级的服务域中的主平台域或者其它平台域;

所述下级的服务域中的服务平台域,用于接收所述操作请求;根据所述操作请求生成数据更新请求;将所述数据更新请求发送至所述核心域。

第二方面,提供了一种数据同步方法,用于核心域中,所述核心域位于n级服务域的上级,存在至少一个服务域包括m个平台域,所述n和所述m均为正整数;所述方法包括:

获取至少一个下级的服务域发送的数据更新请求;

根据所述数据更新请求执行数据更新操作;

根据所述数据更新请求获取数据更新路径,根据所述数据更新路径生成数据更新消息;

通过核心域守护进程将所述数据更新消息写入所述数据更新路径指示的第一级的目标服务域所订阅的消息队列,所述数据更新消息用于供第i级的目标服务域中的目标平台域通过第i级守护进程获取订阅的消息队列中的所述数据更新消息;根据所述数据更新消息执行数据更新操作;

其中,所述第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;所述i为小于或等于所述n的正整数,所述i的值越小对应的层级越高。

第三方面,提供了一种数据同步方法,用于第i级的目标服务域中的目标平台域,所述目标平台域为目标服务域包括的m个平台域中的任一平台域,服务域的层级数为n级,n级服务域之上为核心域,所述n和所述m均为正整数;所述i为小于或等于所述n的正整数,所述i的值越小对应的层级越高;所述方法包括:

通过第i级守护进程订阅消息队列,所述第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;

通过所述第i级守护进程获取订阅的所述消息队列中的所述数据更新消息;

根据所述数据更新消息执行数据更新操作。

第四方面,提供了一种数据同步装置,用于核心域中,所述核心域位于n级服务域的上级,存在至少一个服务域包括m个平台域,所述n和所述m均为正整数;所述装置包括:

请求获取模块,用于获取至少一个下级的服务域发送的数据更新请求;

操作执行模块,用于根据所述数据更新请求执行数据更新操作;

路径获取模块,用于根据所述数据更新请求获取数据更新路径,根据所述数据更新路径生成数据更新消息;

消息传递模块,用于通过核心域守护进程将所述数据更新消息写入所述数据更新路径指示的第一级的目标服务域所订阅的消息队列,所述数据更新消息用于供第i级的目标服务域中的目标平台域通过第i级守护进程获取订阅的消息队列中的所述数据更新消息;根据所述数据更新消息执行数据更新操作;

其中,所述第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;所述i为小于或等于所述n的正整数,所述i的值越小对应的层级越高。

第五方面,提供了一种数据同步装置,用于第i级的目标服务域中的目标平台域,所述目标平台域为目标服务域包括的m个平台域中的任一平台域,服务域的层级数为n级,n级服务域之上为核心域,所述n和所述m均为正整数;所述i为小于或等于所述n的正整数,所述i的值越小对应的层级越高;所述装置包括:

队列订阅模块,用于通过第i级守护进程订阅消息队列,所述第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;

消息获取模块,用于通过所述第i级守护进程获取订阅的所述消息队列中的所述数据更新消息;

操作执行模块,用于根据所述数据更新消息执行数据更新操作。

第六方面,提供一种数据同步装置,所述装置包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现第二方面所述的数据同步方法;或者,实现第三方面所述的数据同步方法。

第七方面,提供一种计算机可读存储介质,所述存储介质中存储有程序,所述程序由所述处理器加载并执行以实现第二方面所述的数据同步方法;或者,实现第三方面所述的数据同步方法。

本申请的有益效果在于:通过由核心域统一获取下级的服务域发送的数据更新请求;并对该数据更新请求统一进行数据更新处理;再由核心域获取数据更新路径,根据该数据更新路径生成数据更新消息;将该数据更新消息发送至数据更新路径指示的第一级的目标服务域所订阅的消息队列;这样,该目标服务域中的目标平台的第一级守护进程可以通过监控该消息队列获取到数据更新消息,然后,根据该数据更新消息进行数据更新处理,并在数据更新路径未完成时,继续向数据更新路径指示的下一级的目标服务域所订阅的消息队列发送数据更新消息,依次循环;可以解决在多个平台域同时需要对同一数据进行更新操作时,可能导致数据冲突的问题;由于核心域统一处理各个的服务域发送的数据更新请求,在处理结束后,向各个下级的服务域发送数据更新消息,因此,可以避免多个平台域同时更新同一数据,但是更新方式不同,导致在数据更新时出现数据冲突的问题,从而可以保证数据更新后数据的一致性。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。

附图说明

图1是本申请一个实施例提供的数据同步系统的结构示意图;

图2是本申请一个实施例提供的数据同步方法的流程图;

图3是本申请一个实施例提供的核心域的数据同步过程的流程图;

图4是本申请一个实施例提供的rabbitmq中rpc的消息处理机制的示意图;

图5是本申请一个实施例提供的rabbitmq中异步的消息处理机制的示意图;

图6是本申请一个实施例提供的第i级的目标服务域中的主平台域的数据同步过程的流程图;

图7是本申请一个实施例提供的第i级的目标服务域中的其他平台域的数据同步过程的流程图;

图8是本申请一个实施例提供的数据同步装置的框图;

图9是本申请一个实施例提供的数据同步装置的框图;

图10是本申请一个实施例提供的数据同步装置的框图。

具体实施方式

下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。

本申请提供的数据同步系统可以应用于视频会议场景、银行存管场景、电子商务场景等,本实施例不对数据同步系统的应用场景作限定。

图1是本申请一个实施例提供的数据同步系统的结构示意图,如图1所示,该系统至少包括:核心域110和n级服务域120,n为正整数(图1中以n=2为例进行说明)。

其中,核心域110和n级服务域120是将一个或多个平台域从逻辑上划分成的平台域的集群,核心域110可以视为一个特殊的服务域120,n级服务域120的顶级的服务域。

核心域110与至少一个第一级的服务域120通信相连,每个第一级的服务域120与至少一个第二级的服务域120通信相连,……依次类推,每个第n-1级的服务域120与至少一个第n级的服务域120通信相连。

每个服务域120包括m个平台域,m为正整数。每个平台域都部署有守护进程并订阅至少一个消息队列。可选地,服务域120还包括用户域。用户域是指具有相同属性的用户,是一种逻辑的概念。同一用户域中的用户可以具有统一的管理和设置权限。比如:用户域为构成由某公司中的各个用户构成,该用户域具有同一种可使用的服务或权限,该用户域的管理员可以对用户域中的所有用户进行管理。

同一级的不同服务域120之间的数据相互独立(即可能相同也可能不同)。比如:图1中的第一级的服务域120中服务域a下的平台域中的数据和服务域b下的平台域中的数据互相独立。同一服务域120下的不同平台域中的数据是一致的,比如:对于图1中第一级的服务域120中服务域a下的主平台域a和其它平台域a1,主平台域a中的数据和其它主平台域a1中的数据一致。

每个服务域120的平台域包含该服务域120所管理的至少一个下一级的服务域120中所有平台域的数据。也即,每个服务域120中的平台域的数据大于等于该服务域120连接的下一级的所有服务域120中平台域的数据的并集;比如:图1中核心域110下平台域包含了核心域110连接的下一级的服务域a、b、c中所有平台域的数据,还可以包含其它数据。

假设核心域110中的每个平台域包含数据1、2、3、4、5、6、7、8、9、10;核心域110包括连接的下一级的服务域a的数据1、3、6,服务域b的数据2、5、8、9,以及服务域c的数据4、7。

此时,服务域a中的平台域a和a1中保存的数据为1、3、6;服务域b中的平台域b、b1和b2中保存的数据为2、5、8、9;服务域c中的平台域c中保存的数据为4、7。

服务域a连接的下一级的服务域d中的平台域d中的数据为1、3和6中的至少一个;服务域b连接的下一级的服务域e中的平台域e和e1中的数据为2、5、8、9中的至少一种,服务域b连接的下一级的服务域f中的平台域f中的数据为2、5、8、9中的至少一种,平台域e和e1中的数据与平台域f中的数据可以不同;或者,也可以相同,本实施例对此不作限定。

根据上例可知,核心域110包含了服务域a、b、c的所有数据,即服务域a、b、c中数据的并集。核心域110还包括了另外1个数据10,该数据10属于核心域110,不属于核心域110连接的下一级的任何一个服务域120。

核心域110可以由单独的服务器主机构成;或者,也可以是由多台服务器主机构成。核心域110中存储有n级服务域120中存储的数据。可选地,核心域110中还存储有n级服务域120中未存储的数据。核心域110用于对n级服务域120中的每个服务域120的数据更新请求进行管理。可选地,核心域110不直接为用户提供服务。可选地,核心域110中可以包括至少一个平台域。

可选地,核心域110包括核心域守护进程和至少一个消息队列。核心域守护进程用于监听至少一个消息队列中的数据变更消息队列;当数据变更消息队列中有数据更新消息到达时;将数据变更消息发送至至少一个消息队列中数据更新路径指示的第一级的目标服务域所订阅的消息队列。

示意性地,核心域110用于获取至少一个下级的服务域120发送的数据更新请求;根据数据更新请求执行数据更新操作;获取数据更新路径,根据数据更新路径生成数据更新消息;通过核心域守护进程将数据更新消息写入数据更新路径指示的第一级的目标服务域所订阅的消息队列。

其中,数据更新路径用于指示数据更新消息待写入的至少一层服务域120。示意性地,数据更新路径的格式如下:

[{一级服务域uuid:一级服务域消息版本号};{二级服务域uuid:二级服务域消息版本号}…{m级服务域uuid:m级服务域消息版本号}]

其中,通用唯一识别码(universallyuniqueidentifier,uuid)为服务域标识,uuid是核心域为每个服务域设置的。示意性地,uuid为32位的编号。消息版本号用于指示数据更新消息的先后执行顺序。比如:消息版本号越小的数据更新消息越先被执行,消息版本号越大的数据更新消息越后被执行。消息版本号可以通过数字、字母等表示,本实施例不对消息版本号的表示方式作限定。

本实施例中以数据更新路径为数组方式表示,数组长度与数据更新路径的层级数呈正相关关系为例进行说明,在实际实现时,数据更新路径也可以通过其他方式表示,本实施例对此不作限定。

可选地,核心域110通过有线或者无线的方式与n级服务域120中的第一级的服务域120进行通信连接。

n级服务域120用于为用户提供服务。每级服务域120均包括至少一个服务域120,存在至少一个服务域120包括m个平台域。可选地,每个服务域120还包括至少一个用户域。m个平台域包括主平台域,该主平台域用于为服务域提供发送变更消息服务。可选地,m个平台域还可以包括其它平台域,该其它平台域可以在主平台域的发送变更消息服务出现异常时,作为备用的平台域提供发送变更消息服务。其它平台域是指服务域120中除主平台域之外的平台域。m正整数。

可选地,每个平台域可以由单独的服务器主机构成;或者,也可以由多个服务器主机构成。

每个平台域均包括守护进程。主平台域中的守护进程订阅了上一级服务域的消息队列,从上一级服务域的消息队列中获取数据更新消息;并在数据更新路径未完成时,将数据更新消息发送至该数据更新路径指示的下级平台域的守护进程订阅的消息队列;和/或,写入同级的其他平台域的守护进程订阅的消息队列。其他平台域中的守护进程用于监控主平台域的消息队列;从上一级服务域的消息队列中获取数据更新消息。

示意性地,作为第一级服务域120中的平台域,用于通过第一级守护进程获取订阅的消息队列中的数据更新消息;根据数据更新消息执行数据更新操作。其中,第一级守护进程订阅的消息队列为核心域中的目标消息队列,和/或,为本级其它平台域的消息队列。依次类推,作为第i级服务域120中的平台域,用于通过第i级守护进程获取订阅的消息队列中的数据更新消息;根据数据更新消息执行数据更新操作。在数据更新路径未完成时,将数据更新消息写入数据更新路径指示的第i+1级的目标服务域所订阅的消息队列,i+1小于或等于n。

其中,第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;i为小于或等于n的正整数,i的值越小对应的层级越高。

本实施例中,上下级的平台域之间通过有线或者无线的方式建立有通信连接。

图2是本申请一个实施例提供的数据同步方法的流程图,本实施例以该方法应用于图1所示的数据同步系统中为例进行说明。该方法至少包括以下几个步骤:

步骤201,核心域获取至少一个下级的服务域发送的数据更新请求;根据数据更新请求执行数据更新操作;获取数据更新路径,根据数据更新路径生成数据更新消息;通过核心域守护进程将数据更新消息写入目标消息队列。

目标消息队列是数据更新路径指示的第一级的目标服务域所订阅的消息队列。

核心域可以同时获取2个或者2个以上的下级的服务域发送的数据更新请求,并对该数据更新请求统一进行处理,防止数据冲突。当然,核心域也可以仅获取到一个下级的服务域发送的数据更新请求。

步骤202,第i级的目标服务域中的目标平台域通过第i级守护进程获取订阅的消息队列中的数据更新消息;根据数据更新消息执行数据更新操作。

其中,第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;i为小于或等于n的正整数,i的值越小对应的层级越高。

综上所述,本实施例提供的数据同步方法,通过由核心域统一获取下级的服务域发送的数据更新请求;并对该数据更新请求统一进行数据更新处理;再由核心域获取数据更新路径,根据该数据更新路径生成数据更新消息;将该数据更新消息发送至数据更新路径指示的第一级的目标服务域所订阅的消息队列;这样,该目标服务域中的目标平台的第一级守护进程可以通过监控该消息队列获取到数据更新消息,然后,根据该数据更新消息进行数据更新处理,并在数据更新路径未完成时,继续向数据更新路径指示的下一级的目标服务域所订阅的消息队列发送数据更新消息,依次循环;可以解决在多个平台域同时需要对同一数据进行更新操作时,可能导致数据冲突的问题;由于核心域统一处理各个的服务域发送的数据更新请求,在处理结束后,向各个下级的服务域发送数据更新消息,因此,可以避免多个平台域同时更新同一数据,但是更新方式不同,导致在数据更新时出现数据冲突的问题,从而可以保证数据更新后数据的一致性。

为了更清楚地理解本申请提供的数据同步方法,下面对该数据同步方法分为三个部分分别进行说明。其中,第一部分:核心域的数据同步过程(参考图3所述的实施例);第二部分:第i级的目标服务域中的主平台域的数据同步过程(参考图6所述的实施例);第三部分:第i级的目标服务域中的其他平台域的数据同步过程(参考图7所述的实施例)。

图3是本申请一个实施例提供的核心域的数据同步过程的流程图,本实施例以该方法应用于图1所示的数据同步系统中为例进行说明,该方法至少包括以下几个步骤:

步骤301,用户域通过显示界面接收操作请求。

可选地,用户域可以是具有相同属性的用户使用的终端所构成的集合,比如:手机、计算机、平板电脑、可穿戴式设备等构成的集合。用户域由所属的服务域下的服务平台域提供服务,该服务平台域可以为该服务域下的主平台域;或者,也可以是其它平台域。比如:由主平台域为用户域提供视频会议服务。

操作请求用于请求对服务域中的数据进行数据更新操作。可选地,操作请求包括待更新数据的数据标识和更新方式。其中,数据标识可以是数据的存储位置的标识、数据的摘要内容和数据的哈希值中的至少一种,本实施例不对数据标识的形式作限定。更新方式包括但不限于:增加、删除、修改等,本实施例对此不作限定。

可选地,操作请求还包括请求标识和队列标识。其中,队列标识用于供为用户域提供服务的平台域确定更新操作完成时,应答消息返回的消息队列。为用户域提供服务的平台域在返回应答消息时,请求标识携带在该应答消息中,该请求标识用于供用户域确定被处理完成的操作请求。

步骤302,用户域将操作请求发送至下级的服务域中的服务平台域。

其中,下级的服务域用于为用户域提供服务,服务平台域用于为用户域提供服务,服务平台域为下级的服务域中的主平台域或者其它平台域。

可选地,下级的服务域中的服务平台域出现异常时,该下级的服务域中除服务平台域之外的平台域可以作为备用的平台域为用户域提供服务。

可选地,用户域与服务域之间通过消息队列(messagequeue,mq)实现消息通信。示意性地,消息队列为rabbitmq,rabbitmq提供用户域与服务域之间基于远程过程调用协议(remoteprocedurecallprotocol,rpc)的消息处理机制。

参考图4所示的rabbitmq中rpc的消息处理机制,用户域401发送操作请求时,在操作请求中携带队列标识和请求标识;下级的服务域402收到操作请求并处理,在下级的服务域402处理完操作请求后,生成应答消息并发送至队列标识指示的消息队列,该应答消息携带有请求标识;用户域401已订阅下级的服务域402中队列标识指示的消息队列,从该消息队列获取到服务器的应答消息后,根据其中的请求标识确定哪条操作请求已被执行,根据执行结果进行后续业务处理。

步骤303,下级的服务域接收操作请求。

步骤304,下级的服务域根据操作请求生成数据更新请求;将数据更新请求发送至核心域。

可选地,服务域调用与核心域之间的应用程序编程接口(applicationprogramminginterface,api)向核心域发送数据更新请求。

可选地,数据更新请求中的请求内容可以与操作请求中的请求内容相同。

步骤305,核心域获取至少一个下级的服务域发送的数据更新请求。

由于可能存在多个服务域同时修改同一数据,因此,核心域会接收到多个下级的服务域同时发送的数据更新请求,该数据更新请求用于请求更新同一数据。当然,不同的下级的服务域发送的数据更新请求也可以请求更新不同的数据。

步骤306,核心域根据数据更新请求执行数据更新操作。

可选地,数据更新操作包括增加操作、删除操作和更改操作中的至少一种。

可选地,核心域执行数据更新操作之后,还可以生成应答消息,并将该应答消息通过发送数据更新请求的服务域返回至用户域。

步骤307,核心域获取数据更新路径。

核心域确定发送数据更新请求的服务域的各个上级服务域的服务域标识,根据各个上级服务域的服务域标识生成数据更新路径。

可选地,核心域中存储有各个服务域最后一次执行数据更新操作时的历史版本号,此时,核心域还可以获取发送数据更新请求的下级的服务域的历史版本号和该下级的服务域的各个上级的服务域的历史版本号,根据该历史版本号确定各个服务域(包括发送数据更新请求的下级的服务域和该下级的服务域的各个上级的服务域)本次进行数据更新操作时的消息版本号,并将消息版本号设置在数据更新路径中,同时,核心域更新本次数据更新操作各个服务域的历史版本号为消息版本号。

比如:核心域获取到的数据更新路径为[{一级服务域1:一级服务域消息版本号v5};{二级服务域1:二级服务域消息版本号v4}]。

可选地,核心域在执行数据更新操作之后,将本次数据更新操作保存至数据同步日志,该数据同步日志还可以包括数据更新路径。

步骤308,核心域根据数据更新路径生成数据更新消息。

核心域将数据更新路径携带在数据更新消息中。

步骤309,核心域通过核心域守护进程将数据更新消息写入数据更新路径指示的第一级的目标服务域所订阅的消息队列。

可选地,核心域在生成数据更新消息之后,还会将该数据更新消息发送至数据变更消息队列,核心域守护进程预先对数据变更消息队列进行订阅;在数据变更消息队列接收到数据更新消息时,核心域守护进程会监控到该数据更新消息,然后,获取该数据更新消息并将该数据更新消息写入数据更新路径指示的第一级的目标服务域所订阅的消息队列。

其中,核心域包括各个一级的服务域中的平台域所订阅的消息队列,该消息队列可以为一个;或者,也可以为多个。

核心域在将数据更新消息发送至数据变更消息队列时,可以基于rabbitmq中异步的消息处理机制发送该数据变更消息。

参考图5所示的rabbitmq中异步的消息处理机制,核心域中的生产者501生成了数据更新消息之后,将该数据更新消息发送至消息交换器502,数据更新消息包括该数据更新消息的路由规则,消息交换器502根据该路由规则将该数据更新消息发送至数据变更消息队列,然后被核心域守护进程503消费。

综上所述,本实施例中,通过基于rabbitmq的消息处理机制来实现上下级之间消息的路由,可以保证消息不丢失,并保证消息顺序的一致性。

另外,通过守护进程与rabbitmq的消息处理机制来进行数据同步,可以实现数据变更消息与数据库系统之间解耦;解决数据库系统的差异性导致不同的数据库系统同步数据的方式不统一的技术问题;由于即使不同的平台域使用不同的数据库系统,通过守护进程也可以实现以统一的方式进行数据同步,因此,保证了数据同步方式的一致性,从而实现不同数据库系统的增量数据的同步。

图6是本申请一个实施例提供的第i级的目标服务域中的主平台域的数据同步过程的流程图,本实施例以该方法应用于图1所示的数据同步系统中为例进行说明,该方法至少包括以下几个步骤:

步骤601,第i级的目标服务域中的主平台域通过第i级守护进程获取订阅的消息队列中的数据更新消息。

其中,当i的值为1时,第i级守护进程订阅的消息队列为第i级的目标服务域中的主平台域所订阅的核心域中的消息队列;当i的值大于1时,第i级守护进程订阅的消息队列为第i级的目标服务域中的主平台域订阅的第i-1级的服务域中的消息队列。

数据更新消息包括数据更新路径,该数据更新路径包括:数据更新消息待写入的至少一级服务域及每级服务域对应的消息版本号。消息版本号用于指示数据更新消息的先后执行顺序。

步骤602,第i级的目标服务域中的主平台域通过第i级守护进程检测数据更新消息中的消息版本号是否与预测版本号相同。

预测版本号是根据上一次执行更新操作时的历史版本号确定出的本次执行更新操作时预测使用的版本号。比如:预测版本号为历史版本号+1。

主平台域获取到数据更新消息之后,获取数据更新消息中数据更新路径指示的该主平台域对应的消息版本号,并将该消息版本号与预测版本号进行比较;在消息版本号与预测版本号相同时,执行步骤603;在消息版本号与预测版本号不同,且在本次接收的数据更新消息之前未收到过具有消息版本号的数据更新消息时,执行步骤605;在消息版本号与预测版本号不同,且在本次接收的数据更新消息之前已接收到具有消息版本号的数据更新消息时,执行步骤608。

步骤603,第i级的目标服务域中的主平台域根据数据更新消息执行数据更新操作,将历史版本号更新为消息版本号。

步骤604,在数据更新路径未完成时,第i级的目标服务域中的主平台域通过第i级守护进程将数据更新消息写入数据更新路径指示的第i+1级的目标服务域所订阅的消息队列,该主平台域的数据更新操作流程结束。i+1小于或等于n。

可选地,在第i级的目标服务域除主平台域之外还包括其它平台域时,第i级的目标服务域中的主平台域还可以将数据更新消息写入目标服务域下其它平台域所订阅的消息队列。

可选地,在数据更新路径完成时,第i级的目标服务域中的主平台域将数据更新消息写入该目标服务域下其它平台域所订阅的消息队列;或者,流程结束。

步骤605,第i级的目标服务域中的主平台域向核心域发送消息补充请求。

消息补充请求用于请求核心域发送遗漏的数据更新消息,遗漏的数据更新消息包括版本号为预测版本号的数据更新消息。比如:第i级的目标服务域的历史版本号为5,根据该历史版本号确定出的预测版本号为6,在消息版本号大于6时,该消息版本号与预测版本号不同。另外,由于第i级的目标服务域按照消息版本号的顺序逐条执行数据更新消息,消息版本号大于6,说明第i级的目标服务域未接收到具有该消息版本号的消息,此时,在历史版本号至消息版本号之间存在还未接收过的数据更新消息,且这些消息中至少包括版本号为预测版本号的数据更新消息,因此,需要核心域补发这些消息。

步骤606,核心域接收消息补充请求;根据消息补充请求向第i级的目标服务域中的主平台域发送遗漏的数据更新消息。

可选地,核心域接收到的消息补充请求包括第i级的目标服务域的服务域标识,核心域根据该服务域标识确定对应的服务域下目标平台域的历史版本号,将消息版本号大于该历史版本号的所有数据更新消息发送至第i级的目标服务域;或者,核心域根据该历史版本号确定预测版本号,将版本号为预测版本号的数据更新消息发送至第i级的目标服务域。

可选地,核心域还可以统计消息补充请求的接收次数,在该接收次数达到预设的次数阈值时,核心域可以通过目标平台域向对应的用户域发送告警通知,该告警通知用于提示该用户域对应的用户数据更新过程存在异常,以供用户对该异常进行排查处理。

步骤607,第i级的目标服务域中的主平台域接收遗漏的数据更新消息;根据遗漏的数据更新消息中版本号为预测版本号的数据更新消息执行数据更新操作,将历史版本号更新为消息版本号,执行步骤604。

步骤608,第i级的目标服务域中的主平台域不根据数据更新消息执行数据更新操作;在数据更新路径未完成时,第i级的目标服务域中的主平台域通过第i级守护进程将数据更新消息写入数据更新路径指示的第i+1级的目标服务域所订阅的消息队列,该主平台域的数据更新操作流程结束。

可选地,在数据更新消息中的消息版本号与预测版本号不同,且在本次接收的数据更新消息之前目标平台域已接收到具有消息版本号的数据更新消息时,说明主平台域已经处理过该数据更新消息,不需要再次处理该数据更新消息,因此,可以在数据更新路径未完成时直接将该数据更新消息发送至下一级的目标服务域。比如:第i级的目标服务域的历史版本号为5,根据该历史版本号确定出的预测版本号为6,在消息版本号小于6时,该消息版本号与预测版本号不同。另外,由于第i级的目标服务域按照消息版本号的顺序逐条执行数据更新消息,消息版本号小于6,说明第i级的目标服务域已接收到具有该消息版本号的消息,此时,不需要再次处理该数据更新消息。

可选地,在数据更新路径完成,且在第i级的目标服务域除主平台域之外还包括其它平台域时,第i级的目标服务域中的主平台域将数据更新消息写入第i级的目标服务域下其它平台域所订阅的消息队列。或者,在数据更新路径完成,且在第i级的目标服务域除主平台域之外不包括其它平台域时,该主平台域的数据更新操作流程结束。

综上所述,本实施例中,通过对数据更新消息的消息版本号进行检测,在消息版本号与历史版本号之间存在跳号时,请求核心域重新下发遗漏的数据更新消息,可以避免数据异常,保证数据更新操作的有序性。

图7是本申请一个实施例提供的第i级的目标服务域中的其他平台域的数据同步过程的流程图,本实施例以该方法应用于图1所示的数据同步系统中为例进行说明,该方法至少包括以下几个步骤:

步骤701,第i级的目标服务域中的其他平台域通过第i级守护进程获取订阅的消息队列中的数据更新消息。

其他平台域中的第i级守护进程订阅的消息队列为第i级的目标服务域下的主平台域中的消息队列。

步骤702,第i级的目标服务域中的其他平台域通过第i级守护进程检测数据更新消息中的消息版本号是否与预测版本号相同。

预测版本号是根据上一次执行更新操作时的历史版本号确定出的本次执行更新操作时预测使用的版本号。

本步骤的相关描述参见步骤602,本实施例在此不再赘述。

可选地,其它平台域获取到数据更新消息之后,获取数据更新消息中数据更新路径指示的该主平台域对应的消息版本号,并将该消息版本号与预测版本号进行比较;在消息版本号与预测版本号相同时,执行步骤703;在消息版本号与预测版本号不同,且在本次接收的数据更新消息之前未收到过具有消息版本号的数据更新消息时,执行步骤704;在消息版本号与预测版本号不同,且在本次接收的数据更新消息之前已接收到具有消息版本号的数据更新消息时,执行步骤707。

步骤703,第i级的目标服务域中的其他平台域根据数据更新消息执行数据更新操作,将历史版本号更新为消息版本号,该其它平台域的数据更新操作流程结束。

步骤704,第i级的目标服务域中的其它平台域向核心域发送消息补充请求。

消息补充请求用于请求核心域发送遗漏的数据更新消息。

步骤705,核心域接收消息补充请求;根据消息补充请求向第i级的目标服务域中的其它平台域发送遗漏的数据更新消息。

遗漏的数据更新消息包括版本号为预测版本号的数据更新消息。

本步骤的相关描述参见步骤606,本实施例在此不作赘述。

步骤706,第i级的目标服务域中的其它平台域根据遗漏的数据更新消息中版本号为预测版本号的数据更新消息执行数据更新操作,将历史版本号更新为消息版本号,该其它平台域的数据更新操作流程结束。

需要补充说明的是,步骤701-705可以在步骤604之后执行;或者,也可以在步骤604之前执行;或者,还可以与步骤604同时执行,本实施例对此不作限定。

步骤707,第i级的目标服务域中的其它平台域不根据数据更新消息执行数据更新操作,流程结束。

综上所述,本实施例中,通过对数据更新消息的消息版本号进行检测,在消息版本号与历史版本号之间存在跳号时,请求核心域重新下发遗漏的数据更新消息,可以避免数据异常,保证数据更新操作的有序性。

图8是本申请一个实施例提供的数据同步装置的框图,本实施例以该装置应用于图1所示的数据同步系统中的核心域110中,所述核心域位于n级服务域的上级,每级服务域中的每个服务域包括m个平台域,所述n和所述m均为正整数;该装置至少包括以下几个模块:请求获取模块810、操作执行模块820、路径获取模块830和消息传递模块840。

请求获取模块810,用于获取至少一个下级的服务域发送的数据更新请求;

操作执行模块820,用于根据所述数据更新请求执行数据更新操作;

路径获取模块830,用于根据所述数据更新请求获取数据更新路径,根据所述数据更新路径生成数据更新消息;

消息传递模块840,用于通过核心域守护进程将所述数据更新消息写入所述数据更新路径指示的第一级的目标服务域所订阅的消息队列,所述数据更新消息用于供第i级的目标服务域中的目标平台域通过第i级守护进程获取订阅的消息队列中的所述数据更新消息;根据所述数据更新消息执行数据更新操作;

其中,所述第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;所述i为小于或等于所述n的正整数,所述i的值越小对应的层级越高。

相关细节参考上述方法实施例。

图9是本申请一个实施例提供的数据同步装置的框图,本实施例以该装置应用于图1所示的数据同步系统中的第i级的目标服务域中的目标平台域,所述目标平台域为目标服务域包括的m个平台域中的任一平台域,服务域的层级数为n级,n级服务域之上为核心域,所述n和所述m均为正整数;所述i为小于或等于所述n的正整数,所述i的值越小对应的层级越高;所述装置包括:队列订阅模块910、消息获取模块920和操作执行模块930。

队列订阅模块910,用于通过第i级守护进程订阅消息队列,所述第i级守护进程订阅的消息队列为上一级服务域的消息队列,和/或,为本级其它平台域的消息队列;

消息获取模块920,用于通过所述第i级守护进程获取订阅的所述消息队列中的所述数据更新消息;

操作执行模块930,用于根据所述数据更新消息执行数据更新操作。

相关细节参考上述方法实施例。

需要说明的是:上述实施例中提供的数据同步装置在进行数据同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据同步装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据同步装置与数据同步方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图10是本申请一个实施例提供的数据同步装置的框图,该装置可以是图1所示的数据同步系统中的核心域;或者,也可以是平台域。该装置至少包括处理器1001和存储器1002。

处理器1001可以包括一个或多个处理核心,比如:4核心处理器、10核心处理器等。处理器1001可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。

存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的数据同步方法。

在一些实施例中,数据同步装置还可选包括有:外围设备接口和至少一个外围设备。处理器1001、存储器1002和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。示意性地,外围设备包括但不限于:射频电路、电源等。

当然,数据同步装置还可以包括更少或更多的组件,本实施例对此不作限定。

可选地,本申请还提供有一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的数据同步方法。

可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的数据同步方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1