一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

消息处理方法和装置与流程

2022-12-09 19:50:23 来源:中国专利 TAG:


1.本发明实施例涉及数据传输技术领域,尤其涉及一种消息处理方法和装置。


背景技术:

2.随着信息技术的快速发展以及大数据、人工智能的兴起,数据作为无形的资产越来越受到企业的重视。面对指数级别增长的海量数据,传统的单机存储系统受限于有限的存储与计算能力,早已不能支撑业务的发展。为此,具有多个存储节点的分布式存储系统应运而生。分布式存储系统中包括主节点以及从节点。主节点能够接受外部请求消息,通过将消息传达给符合请求条件的从节点来对数据进行处理,保障了分布式存储系统的高效性。
3.相关技术在,随着各种存储系统的不断发展,越来越多的数据需要在多个数据库系统间进行共享、备份,来充分有效的利用数据,并保证数据的可靠性。当源数据库发生变化时,目标数据库的数据也要同时进行更新,这样才能保证数据的一致性。相比于传统的文件同步方式,消息需要更少的存储空间以及更高的传输效率,已成为系统间同步的主要方式。
4.然而,在实际的消息传递过程中,目标数据库接收到的消息顺序会与消息产生的顺序不一致,也就产生了消息乱序的问题,造成目标数据库最终的数据与源数据库存储的数据不一致,因此如何解决数据在传输过程中因消息乱序导致的目标数据库最终的数据与源数据库存储的数据不一致,成为亟需解决的问题。


技术实现要素:

5.本发明实施例提供一种消息处理方法和装置,以解决现有技术中因消息乱序导致的目标数据库最终的数据与源数据库存储的数据不一致的问题。
6.本发明实施例的第一方面提供一种消息处理方法,包括:
7.接收源数据库发送的待处理消息,所述待处理消息是在对所述源数据库中存储的目标数据进行操作使所述目标数据发生变化时生成的;
8.解析所述待处理消息,得到时间戳和对所述目标数据的操作信息,所述时间戳用于表示对所述目标数据进行操作使所述目标数据发生变化的时间;
9.根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定目标数据库中的待操作数据;
10.根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,以使所述目标数据库中的数据与所述源数据库中的数据同步。
11.可选的,同一个主键信息对应至少一个数据的生命周期,每个数据的生命周期包括:第一时间戳、第二时间戳、所述主键信息对应数据字段值、每个字段最后一次操作时对应的第三时间戳以及所述主键信息对应的指示值;
12.其中,所述第一时间戳为所述数据新创建时对应的时间戳,所述第二时间戳为所述数据失效时对应的时间戳或当前系统时间最大值;
13.所述指示值用于指示所述主键信息是否被修改,若所述指示值为空,则表示所述主键信息未被修改,若所述指示值不为空,则所述指示值为修改后的主键信息。
14.可选的,所述根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定目标数据库中的待操作数据,包括:
15.根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定所述待处理消息所属的所述主键信息对应的目标生命周期;
16.将所述目标生命周期中的每个字段的值或所述主键信息,确定为待操作数据。
17.可选的,所述操作信息包括插入操作信息,所述插入操作信息包括待插入数据的主键信息和待插入数据的字段值,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:
18.根据所述待插入数据的主键信息和待插入数据的字段值,创建新数据;
19.生成所述主键信息对应的第一生命周期,所述第一生命周期的第一时间戳和第三时间戳为所述待处理消息中的时间戳,所述第一生命周期的第二时间戳为当前系统时间最大值,所述主键信息对应的数据字段值为所述待插入数据的字段值,所述第一生命周期中的所述主键信息对应的指示值为空。
20.可选的,所述操作信息包括数据更新操作信息,所述数据更新操作信息用于指示修改数据字段值,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:
21.若所述目标生命周期中的主键信息对应的指示值为空,且所述待处理消息的时间戳大于所述目标生命周期中的字段最后一次操作时对应的第三时间戳,则根据所述数据更新操作信息修改所述主键信息对应的数据字段值;
22.若所述目标生命周期中的主键信息对应的指示值为空,且所述待处理消息的时间戳小于所述目标生命周期中的字段最后一次操作时对应的第三时间戳,则所述主键信息对应的数据字段值保持不变;
23.若所述目标生命周期中的主键信息对应的指示值不为空,则根据所述指示值确定修改后的主键信息对应的数据存储位置,并根据所述数据更新操作信息对修改后的主键信息对应的数据进行修改操作。
24.可选的,所述操作信息包括删除操作信息,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:
25.将所述目标生命周期中的第二时间戳设置为所述待处理消息中的时间戳,以使所述待操作数据成为失效数据。
26.可选的,所述操作信息包括主键更新操作信息,所述主键更新操作信息用于指示修改主键信息,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:
27.根据所述主键更新操作信息,修改所述目标生命周期中的主键信息对应的指示值,并将所述目标生命周期中的第二时间戳设置为所述待处理消息中的时间戳;
28.创建修改后的主键信息对应的数据,并生成所述修改后的主键信息对应的新数据生命周期。
29.本发明实施例的第二方面提供一种消息同步处理装置,包括:
30.接收模块,用于接收源数据库发送的待处理消息,所述待处理消息是在对所述源数据库中存储的目标数据进行操作使所述目标数据发生变化时生成的;
31.解析模块,用于解析所述待处理消息,得到时间戳和对所述目标数据的操作信息,所述时间戳用于表示对所述目标数据进行操作使所述目标数据发生变化的时间;
32.确定模块,用于根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定目标数据库中的待操作数据;
33.同步模块,用于根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,以使所述目标数据库中的数据与所述源数据库中的数据同步。
34.本发明实施例的第三方面提供一种计算机设备,包括:至少一个处理器和存储器;
35.所述存储器存储计算机执行指令;
36.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行本发明实施例第一方面所述的消息处理方法。
37.本发明实施例的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现本发明实施例第一方面所述的消息处理方法。
38.本发明实施例的第五方面提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面所述的消息处理方法。
39.本发明实施例提供一种消息处理方法和装置,其中的方法通过接收源数据库发送的待处理消息,该待处理消息是在对所述源数据库中存储的目标数据进行操作使所述目标数据发生变化时生成的,由于待处理消息包含对所述目标数据进行操作使所述目标数据发生变化的时间戳以及对所述目标数据的具体操作信息,因此,目标数据库在解析待处理消息得到所述时间戳和操作信息之后,可以根据时间戳以及所述目标数据对应的主键信息来确定目标数据中待操作数据,由于主键信息能够用于标识目标数据库中的数据且时间戳的值是随着时间严格递增的,因此,通过时间戳和主键信息来准确得到源数据库产生的消息的实际顺序,即源数据库中数据发生变化的实际顺序,因此根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理能够准确的使所述目标数据库中的数据与所述源数据库中的数据同步。避免了因目标数据库接收到的消息顺序错乱而造成目标数据库中的数据操作错误,导致目标数据库中的数据与源数据库中的数据不一致的问题。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
41.图1是本发明一示例性实施例示出的消息处理方法的应用场景图;
42.图2是本发明一示例性实施例示出的消息处理方法的流程示意图;
43.图3是本发明一示例性实施例示出的数据生命周期的示意图;
44.图4a是本发明另一示例性实施例示出的数据生命周期的示意图;
45.图4b是本发明另一示例性实施例示出的数据生命周期的示意图;
46.图5是本发明一示例性实施例示出的消息处理装置的结构示意图;
47.图6是本发明一示例性实施例示出的计算机设备的结构示意图。
具体实施方式
48.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
50.随着信息技术的快速发展以及大数据、人工智能的兴起,数据作为无形的资产越来越受到企业的重视。面对指数级别增长的海量数据,传统的单机存储系统受限于有限的存储与计算能力,早已不能支撑业务的发展。为此,具有多个存储节点的分布式存储系统应运而生。分布式存储系统中包括主节点以及从节点。主节点能够接受外部请求消息,通过将消息传达给符合请求条件的从节点来对数据进行处理,保障了分布式存储系统的高效性。
51.相关技术在,随着各种存储系统的不断发展,越来越多的数据需要在多个数据库系统间进行共享、备份,来充分有效的利用数据,并保证数据的可靠性。当源数据库发生变化时,目标数据库的数据也要同时进行更新,这样才能保证数据的一致性。相比于传统的文件同步方式,消息需要更少的存储空间以及更高的传输效率,已成为系统间同步的主要方式。以源数据库为oracle为例,当源数据库中的数据发生变化时,数据复制组件(oracle golden gate,ogg)就可以记录数据的变化消息,并将带有时间戳(scn)的消息发送至分布式订阅消息系统进行存储,然后再由分布式订阅消息系统将源数据库发送的消息批量发送至目标数据库,目标数据库异步工作,根据接收到的消息来更新目标数据库中的相应数据。然而,在实际的消息传递过程中,目标数据库接收到的消息顺序会与消息产生的顺序不一致,也就产生了消息乱序的问题,比如作为消息产生的源头数据复制组件ogg出现故障,导致之前的消息需要重新发送、作为消息存储的中间系统kafka出现传输错乱的情况以及消息在传输过程中,网络出现抖动情况等都可能造成目标数据库最终的数据与源数据库存储的数据不一致,因此如何解决数据在传输过程中因消息乱序导致的目标数据库最终的数据与源数据库存储的数据不一致,成为亟需解决的问题。
52.针对此缺陷,本发明的技术方案主要在于:在对所述源数据库中存储的目标数据进行操作时,会使所述目标数据发生变化,源数据库中的数据复制组件ogg会记录带时间戳的数据变化消息作为待处理消息发送至目标数据库,当目标数据库接收源数据库发送的待处理消息时,由于待处理消息包含对所述目标数据进行操作使所述目标数据发生变化的时间戳以及对所述目标数据的具体操作信息,因此,目标数据库在解析待处理消息得到所述
时间戳和操作信息之后,可以根据时间戳以及所述目标数据对应的主键信息来确定目标数据中的待操作数据,由于主键信息能够用于标识目标数据库中的数据且时间戳的值是随着时间严格递增的,因此,通过时间戳和主键信息来准确得到源数据库产生的消息的实际顺序,即源数据库中数据发生变化的实际顺序,因此根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理能够准确的使所述目标数据库中的数据与所述源数据库中的数据同步。避免了因目标数据库接收到的消息顺序错乱而造成目标数据库中的数据操作错误,导致目标数据库中的数据与源数据库中的数据不一致的问题。
53.图1是本发明一示例性实施例示出的消息处理方法的应用场景图。
54.如图1所示,本实施例提供的应用场景的基本架构主要包括:源数据库101,分布式订阅消息系统kafka 102和目标数据库103;其中,当对源数据库中存储的数据进行操作导致数据发生变化时,源数据库中的数据复制组件ogg记录数据变化消息,源数据库将数据变化消息发送至分布式订阅消息系统kafka中进行存储,然后分布式订阅消息系统kafka将数据变化消息批量发送至目标数据库,由目标数据库根据接收到的数据变化消息对目标数据库中存储的相应数据进行操作处理。
55.图2是本发明一示例性实施例示出的消息处理方法的流程示意图,本实施例中提供的方法的执行主体可以是图1所示实施例中的目标数据库。
56.如图2所示,本实施例提供的方法可以包括以下步骤。
57.s201,接收源数据库发送的待处理消息,所述待处理消息是在对所述源数据库中存储的目标数据进行操作使所述目标数据发生变化时生成的。
58.具体的,当源数据库中的数据发生变化时,源数据库中的组件ogg会记录带有时间戳(记为scn)的消息,并将消息发送至分布式订阅消息系统kafka中进行存储,然后分布式订阅消息系统kafka将消息发送至目标数据库。
59.s202,解析所述待处理消息,得到时间戳和对所述目标数据的操作信息,所述时间戳用于表示对所述目标数据进行操作使所述目标数据发生变化的时间。
60.具体的,当目标数据库接收到带有时间戳的待处理消息时,首先要对消息进行解析,判断源数据库数据变化的时间以及对数据的具体操作。源数据库中数据发生变化的时间由时间戳scn来标记。时间戳scn的值随着时间严格递增,比如,对于时刻i与时刻j,如果有i《j成立,那么一定有scni《scnj。因此,通过判断消息的时间戳scn大小可以确定消息实际产生的顺序,也就是源数据库中数据发生变化的顺序。
61.一些实施例中,所述操作信息包括:插入操作信息、数据更新操作信息、删除操作信息和主键更新操作信息。这四种对数据的具体操作方式都可以通过消息的形式来进行传递。
62.s203,根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定目标数据库中的待操作数据。
63.一些实施例中,所述根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定目标数据库中的待操作数据,包括:根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定所述待处理消息所属的所述主键信息对应的目标生命周期;将所述目标生命周期中的每个字段的值或所述主键信息,确定为待操作数据。
64.具体的,根据消息的时间戳以及消息中包含的源数据库中产生变化的数据的主
键,来确定目标数据库中所要修改的数据以及所在的生命周期。在现实问题中,数据的主键经常会出现复用的情况,其中最常见的就是用户的手机号码。用户在开户时会选择一个手机号码,这时数据库会创建以手机号码为主键的数据。当用户注销时,数据库会标记这条数据失效。而另一个用户在开户时,如果也选择了相同的手机号,此时就会出现主键复用的情况。如果源数据库对以手机号为主键的数据进行操作,并且向目标数据库发送消息,由于消息传到目标数据库时会发生乱序,就会造成对第一个用户的数据更新的操作执行到了第二个用户的数据上的情况。为了规避这一问题,就需要明确相同主键对应不同数据的生命周期。数据的生命周期包含了数据从创建到失效整个期间内所包含的所有信息。
65.示例性的,同一个主键信息对应至少一个数据的生命周期,同一个主键信息对应的至少一个数据的生命周期的结构如图3所示,包括:第一时间戳、第二时间戳、所述主键信息对应数据字段值、每个字段最后一次操作时对应的第三时间戳以及所述主键信息对应的指示值;其中,所述第一时间戳为所述数据新创建时对应的时间戳,所述第二时间戳为所述数据失效时对应的时间戳或当前系统时间最大值;所述指示值用于指示所述主键信息是否被修改,若所述指示值为空,则表示所述主键信息未被修改,若所述指示值不为空,则所述指示值为修改后的主键信息。
66.s204,根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,以使所述目标数据库中的数据与所述源数据库中的数据同步。
67.本步骤中,当要目标数据库中的待操作数据确定后,就可以根据待处理消息的时间戳以及主键信息,来对目标数据库中待处理消息所属的生命周期中主键信息对应的数据字段进行相应的修改操作。
68.本实施例中,通过接收源数据库发送的待处理消息,该待处理消息是在对所述源数据库中存储的目标数据进行操作使所述目标数据发生变化时生成的,由于待处理消息包含对所述目标数据进行操作使所述目标数据发生变化的时间戳以及对所述目标数据的具体操作信息,因此,目标数据库在解析待处理消息得到所述时间戳和操作信息之后,可以根据时间戳以及所述目标数据对应的主键信息来确定目标数据中待操作数据,由于主键信息能够用于标识目标数据库中的数据且时间戳的值是随着时间严格递增的,因此,通过时间戳和主键信息来准确得到源数据库产生的消息的实际顺序,即源数据库中数据发生变化的实际顺序,因此根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理能够准确的使所述目标数据库中的数据与所述源数据库中的数据同步。避免了因目标数据库接收到的消息顺序错乱而造成目标数据库中的数据操作错误,导致目标数据库中的数据与源数据库中的数据不一致的问题。
69.为了更好的理解本技术,下面将以具体实例对本技术提供的消息处理方法进行详细描述。
70.示例性的,假设源数据库中存储的数据格式为(主键,字段1,字段2),并对源数据库中存储的数据进行了六次操作,源数据库中的组件ogg记录了六条消息分别为:
71.消息1:scn1 创建数据(a,1,3);
72.消息2:scn3 数据(a,1,3)的主键更改为b;
73.消息3:scn4 创建数据(a,7,8);
74.消息:4:scn2 主键为a的第二个字段修改为5;
75.消息5:scn6 主键为a的第二个字段修改为6;
76.消息6:scn5 主键为a的第二个字段修改为7。
77.一些实施例中,通过消息的时间戳scn值可以看出,消息实际产生的顺序为消息1、消息4、消息2、消息3、消息6、消息5。但由于发生了消息乱序问题,目标数据库实际接收到消息的顺序为消息1至消息6。如果采用现有方法,目标数据库直接按照接收到的消息顺序来执行操作,数据库中最终存储的数据为(b,1,3)和(a,7,7)。但根据消息实际产生的顺序,目标数据库按照六条消息执行完相应的数据操作之后应该存的数据是(b,1,5)和(a,7,6),消息乱序导致了目标数据库存储的数据与源数据库不一致。
78.在一种可能的实施例中,所述操作信息包括插入操作信息,所述插入操作信息包括待插入数据的主键信息和待插入数据的字段值,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:根据所述待插入数据的主键信息和待插入数据的字段值,创建新数据;生成所述主键信息对应的第一生命周期,所述第一生命周期的第一时间戳和第三时间戳为所述待处理消息中的时间戳,所述第一生命周期的第二时间戳为当前系统时间最大值,所述主键信息对应的数据字段值为所述待插入数据的字段值,所述第一生命周期中的所述主键信息对应的指示值为空。
79.示例性的,目标数据库接收到消息1时,对消息1进行解析,获得该消息1的时间戳scn1,并识别出该消息对应的操作信息的是对数据的插入操作。然后,目标数据库创建以a为主键信息的数据,并且生成主键a对应的第一个生命周期(记为lt1),数据的生成时间(即第一时间戳)值设置为scn1,数据失效时间(即第二时间戳)设置为当前系统时间的最大值,主键对应的数据字段值分别设置为1和3,每个字段对应的第三时间戳值都设置为scn1,由于该主键没有被修改过,因此,主键信息对应的指示值设置为空(即null)。
80.在一种可能的实施例中,所述操作信息包括主键更新操作信息,所述主键更新操作信息用于指示修改主键信息,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:根据所述主键更新操作信息,修改所述目标生命周期中的主键信息对应的指示值,并将所述目标生命周期中的第二时间戳设置为所述待处理消息中的时间戳;创建修改后的主键信息对应的数据,并生成所述修改后的主键信息对应的新数据生命周期。
81.示例性的,目标数据库接收到消息2时,对消息2进行解析,获得该消息的时间戳scn3,并识别出该消息执行的是对数据主键更改的操作。由于是对数据主键进行修改,说明主键为a的数据的第一个生命周期结束,因此将该数据的失效时间(即第二时间戳)改为scn3,主键信息对应的指示值设置为新的主键b。随后目标数据库会创建主键为b的数据,生成主键为b的第一个生命周期lt1,第一时间戳设置为scn1,第二时间戳设置为当前系统时间最大值,主键信息对应的数据字段值分别设置为1和3,每个字段对应的第三时间戳都设置为scn1,主键信息对应的指示值为空。由于数据的主键由a变成b,分布式的存储系统会将数据分配到其他存储节点,但可以根据主键为a的第一个生命周期中的指示值来定位。
82.在本实施例中一种可能的情况下,目标数据库接收到消息3时,对消息3进行解析,获得该消息的时间戳scn4,并识别出该消息执行的是对数据的插入操作。由于要插入数据的主键还是为a,所以创建以a为主键的第二个生命周期lt2,第一时间戳设置为scn4,第二时间戳设置为当前系统时间的大值,主键信息对应的数据字段分别设置为7和8,每个字段
对应的第三时间戳都设置为scn4,由于主键没有被修改过,主键信息对应的指示值设置为null。
83.在一种可能的实施例中,所述操作信息包括数据更新操作信息,所述数据更新操作信息用于指示修改数据字段值,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:若所述目标生命周期中的主键信息对应的指示值为空,且所述待处理消息的时间戳大于所述目标生命周期中的字段最后一次操作时对应的第三时间戳,则根据所述数据更新操作信息修改所述主键信息对应的数据字段值;若所述目标生命周期中的主键信息对应的指示值为空,且所述待处理消息的时间戳小于所述目标生命周期中的字段最后一次操作时对应的第三时间戳,则所述主键信息对应的数据字段值保持不变;若所述目标生命周期中的主键信息对应的指示值不为空,则根据所述指示值确定修改后的主键信息对应的数据存储位置,并根据所述数据更新操作信息对修改后的主键信息对应的数据进行修改操作。
84.示例性的,目标数据库接收到消息4时,对消息4进行解析,获得该消息的时间戳scn2,并识别出该消息执行的是对主键为a的数据的第二个字段的更新操作。判断消息4所属的生命周期,由于scn1《scn2《scn3,所以该消息4属于主键为a的数据的第一个生命周期。随后检查生命周期的指示值不为null,则说明该数据主键被修改过,通过指示值找到需要进行更新的主键b对应的数据字段。接下来监控模块判断该消息4属于主键为b的第几生命周期,由于scn1《scn2《当前系统时间最大值,因此该消息4属于主键b对应的数据的第一生命周期。由于该消息4是对数据字段的第二个字段进行更新,需要判断第二个字段所对应的第三时间戳与scn2的大小。因为scn1《scn2,则说明该消息确实为最新的一次操作,需将第二个字段所对应的字段值设置为5,并将对应的第三时间戳修改为scn2。
85.在本实施例中一种可能的情况下,目标数据库接收到消息5时,对消息5进行解析,获得该消息的时间戳scn6,并识别出该消息执行的是对主键为a的数据的第二个字段的更新操作。监控模块首先要判断消息所属的生命周期,由于scn4《scn6《当前系统时间最大值,所以该消息5属于主键为a的数据的第二个生命周期。随后检查第二个生命周期的指示为null,则说明该数据主键没有被修改过。监控模块判断第二个字段所对应的第三时间戳与scn6的大小。因为scn4《scn6,则说明该消息确实为最新的一次操作,需将第二个字段所对应的value值设置为6,并将对应的第三时间戳修改为scn6。
86.在本实施例中一种可能的情况下,目标数据库接收到消息6时,对消息6进行解析,获得该消息的时间戳scn5,并识别出该消息执行的是对主键为a的数据的第二个字段的更新操作。首先要判断消息6所属的生命周期,由于scn4《scn5《当前系统时间最大值,所以该消息6属于主键为a的数据的第二个生命周期。随后检查生命周期的指示值为null,则说明该数据主键没有被修改过。判断第二个字段所对应的第三时间戳与scn5的大小。因为scn5《scn6,则说明该消息不是最新一次的更新,第二个字段所对应的value值与其对应的time值不需要修改,保持不变。
87.在一种可能的实施例中,所述操作信息包括删除操作信息,所述根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,包括:将所述目标生命周期中的第二时间戳设置为所述待处理消息中的时间戳,以使所述待操作数据成为失效数据。
88.进一步的,经上述对消息的处理后,目标数据库中存储的有效数据可以通过查看
没有结束的生命周期来获得,即如果第二时间戳为当前系统时间的最大值,则说明该数据是有效数据。
89.示例性的,经目标数据库按照本技术提供的方法对上述消息1-6进行处理后,得到的数据生命周期结构如图4a和图4b所示,从图4a和图4b中可以看出,目标数据库中的有效数据即为主键a对应的第二个生命周期中的数据(a,7,6),主键b对应的第一个生命周期的数据(b,1,5)。
90.本实施例中,通过对消息的处理,能够很好的避免因消息乱序造成的目标数据库与源数据库存储数据不一致的问题。
91.图5是本发明一示例性实施例示出的消息处理装置的结构示意图。
92.如图5所示,本实施例提供的装置包括:
93.接收模块501,用于接收源数据库发送的待处理消息,所述待处理消息是在对所述源数据库中存储的目标数据进行操作使所述目标数据发生变化时生成的;
94.解析模块502,用于解析所述待处理消息,得到时间戳和对所述目标数据的操作信息,所述时间戳用于表示对所述目标数据进行操作使所述目标数据发生变化的时间;
95.确定模块503,用于根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定目标数据库中的待操作数据;
96.同步模块504,用于根据所述时间戳和所述操作信息,对所述待操作数据进行操作处理,以使所述目标数据库中的数据与所述源数据库中的数据同步。
97.进一步的,同一个主键信息对应至少一个数据的生命周期,每个数据的生命周期包括:第一时间戳、第二时间戳、所述主键信息对应数据字段值、每个字段最后一次操作时对应的第三时间戳以及所述主键信息对应的指示值;
98.其中,所述第一时间戳为所述数据新创建时对应的时间戳,所述第二时间戳为所述数据失效时对应的时间戳或当前系统时间最大值;
99.所述指示值用于指示所述主键信息是否被修改,若所述指示值为空,则表示所述主键信息未被修改,若所述指示值不为空,则所述指示值为修改后的主键信息。
100.进一步的,所述确定模块,具体用于:
101.根据所述待处理消息中的时间戳和所述目标数据对应的主键信息,确定所述待处理消息所属的所述主键信息对应的目标生命周期;
102.将所述目标生命周期中的每个字段的值或所述主键信息,确定为待操作数据。
103.进一步的,所述操作信息包括插入操作信息,所述插入操作信息包括待插入数据的主键信息和待插入数据的字段值,所述同步模块具体用于:
104.根据所述待插入数据的主键信息和待插入数据的字段值,创建新数据;
105.生成所述主键信息对应的第一生命周期,所述第一生命周期的第一时间戳和第三时间戳为所述待处理消息中的时间戳,所述第一生命周期的第二时间戳为当前系统时间最大值,所述主键信息对应的数据字段值为所述待插入数据的字段值,所述第一生命周期中的所述主键信息对应的指示值为空。
106.进一步的,所述操作信息包括数据更新操作信息,所述数据更新操作信息用于指示修改数据字段值,所述同步模块具体用于::
107.若所述目标生命周期中的主键信息对应的指示值为空,且所述待处理消息的时间
戳大于所述目标生命周期中的字段最后一次操作时对应的第三时间戳,则根据所述数据更新操作信息修改所述主键信息对应的数据字段值;
108.若所述目标生命周期中的主键信息对应的指示值为空,且所述待处理消息的时间戳小于所述目标生命周期中的字段最后一次操作时对应的第三时间戳,则所述主键信息对应的数据字段值保持不变;
109.若所述目标生命周期中的主键信息对应的指示值不为空,则根据所述指示值确定修改后的主键信息对应的数据存储位置,并根据所述数据更新操作信息对修改后的主键信息对应的数据进行修改操作。
110.进一步的,所述操作信息包括删除操作信息,所述同步模块具体用于:
111.将所述目标生命周期中的第二时间戳设置为所述待处理消息中的时间戳,以使所述待操作数据成为失效数据。
112.进一步的,所述操作信息包括主键更新操作信息,所述主键更新操作信息用于指示修改主键信息,所述同步模块具体用于:
113.根据所述主键更新操作信息,修改所述目标生命周期中的主键信息对应的指示值,并将所述目标生命周期中的第二时间戳设置为所述待处理消息中的时间戳;
114.创建修改后的主键信息对应的数据,并生成所述修改后的主键信息对应的新数据生命周期。
115.本实施例中提供的各个模块的具体功能实现可参考上述有关方法实施例中的详细描述。
116.图6为本发明实施例提供的计算机设备的硬件结构示意图。如图6所示,本实施例提供的计算机设备60包括:至少一个处理器601和存储器602。其中,处理器601、存储器602通过总线603连接。
117.在具体实现过程中,至少一个处理器601执行所述存储器602存储的计算机执行指令,使得至少一个处理器501执行上述方法实施例中的消息处理方法。
118.处理器601的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
119.在上述的图6所示的实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
120.存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器。
121.总线可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component interconnect,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
122.本技术的另一实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述方法实施例中的消息处理方法。
123.本技术的另一实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面所述的消息处理方法。
124.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
125.一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
126.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
127.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献