CN112597246A - 一种保持数据一致性的方法、装置及系统 - Google Patents
一种保持数据一致性的方法、装置及系统 Download PDFInfo
- Publication number
- CN112597246A CN112597246A CN202011558725.4A CN202011558725A CN112597246A CN 112597246 A CN112597246 A CN 112597246A CN 202011558725 A CN202011558725 A CN 202011558725A CN 112597246 A CN112597246 A CN 112597246A
- Authority
- CN
- China
- Prior art keywords
- data
- compensation
- database
- running water
- abnormal
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000002159 abnormal effect Effects 0.000 claims abstract description 285
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims abstract description 204
- 238000012216 screening Methods 0.000 claims description 23
- 238000012986 modification Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 11
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种保持数据一致性的方法、装置及系统,其中,方法包括:针对需要第一服务设备协同第二服务设备操作的联机交易,若第一服务设备操作成功,但第二服务设备操作失败,则第一服务设备在流水表中记录联机交易的异常流水,在预设的补偿时段,第一服务设备从流水表中筛选待补偿的异常流水,组成目标异常流水集合,根据目标异常流水集合中各异常流水和第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,第二服务设备根据补偿文件对其对应的第二数据库进行数据补偿,经由上述方法,可使分布式系统中的第二服务设备对应的第二数据库中的数据与该分布式系统中的第一服务设备对应的第一数据库中的数据保持一致。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种保持数据一致性的方法、装置、设备及系统。
背景技术
针对包含第一服务设备和第二服务设备的分布式系统,在某些时候,其会处理一些联机交易,联机交易指的是,由第一服务设备协同第二服务设备操作的交易,该种交易一般先由第一服务设备进行操作,第一服务设备操作成功后,再由第二服务设备操作。
然而,在某些时候,由于某种原因可能出现第一服务设备操作成功,但第二服务设备操作失败的情况,在这种情况下,第一服务设备对应的第一数据库(存储第一服务设备的交易操作数据)与第二服务设备对应的第二数据库(存储第二服务设备的交易操作数据)出现了数据不一致,而如何使第一服务设备对应的第一数据库与第二服务设备对应的第二数据库中的数据保持一致是当前亟需解决的问题。
发明内容
有鉴于此,本申请提供了一种保持数据一致性的方法、装置、设备及系统,用以使分布式系统中第一服务设备对应的第一数据库中的数据与该分布式系统中第二服务设备对应的第二数据库中的数据保持一致,其技术方案如下:
一种保持数据一致性的方法,应用于分布式系统中的第一服务设备,所述方法包括:
针对需要协同所述分布式系统中的第二服务设备操作的联机交易,若所述第一服务设备操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;
在预设的补偿时段,顺序从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合;
根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,以使所述第二服务设备根据所述补偿文件对其对应的第二数据库进行数据补偿。
可选的,所述异常流水中记录有交易时间戳;
所述从所述流水表中筛选待补偿的异常流水,包括:
根据所述流水表中各异常流水中记录的交易时间戳,从所述流水表中筛选待补偿的异常流水。
可选的,所述异常流水中记录有交易流水号、数据库操作类型和待补偿数据的关键字段;
所述根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,包括:
针对所述目标异常流水集合中每个待补偿的目标异常流水:
根据所述目标异常流水中记录的待补偿数据和数据库操作类型,以及所述第一数据库中的当前交易操作数据,确定是否需要在所述第二数据库中针对所述目标异常流水进行数据补偿;
若是,则根据所述目标异常流水记录的数据库操作类型,以及所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成第二数据库操作语句,并将所述操作语句写入补偿文件。
可选的,所述根据所述目标异常流水中记录的待补偿数据和数据库操作类型,以及所述第一数据库中的当前交易操作数据,确定是否需要在所述第二数据库中针对所述目标异常流水进行数据补偿,包括:
若所述目标异常流水中记录的数据库操作类型为新增,且在补偿时段所述第一数据库中的当前交易操作数据中存在所述目标异常流水中记录的待补偿数据,则确定需要在所述第二数据库中针对所述目标异常流水进行数据补偿;
若所述目标异常流水中记录的数据库操作类型为删除,且在补偿时段所述第一数据库中的当前交易操作数据中不存在所述目标异常流水中记录的待补偿数据,则确定需要在所述第二数据库中针对所述目标异常流水进行数据补偿;
若所述目标异常流水中记录的数据库操作类型为修改,且在补偿时段所述第一数据库中的当前交易操作数据中存在所述目标异常流水中记录的待补偿数据,则确定需要在所述第二数据库中针对所述目标异常流水进行数据补偿。
可选的,所述根据所述目标异常流水记录的数据库操作类型,以及所述第一数据库中所述目标异常流水记录的交易流水号对应的最新交易操作数据,生成操作语句,包括:
若所述目标异常流水中记录的数据库操作类型为新增,则根据所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成插入语句;
若所述目标异常流水中记录的数据库操作类型为删除,则根据所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成删除语句;
若所述目标异常流水中记录的数据库操作类型为修改,则根据所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成修改语句。
一种保持数据一致性的方法,应用于分布式系统中的第二服务设备,所述方法包括:
接收所述分布式系统中的第一服务设备发送的补偿文件,其中,所述补偿文件中包括至少一条补偿数据,所述补偿数据由第一服务设备根据目标异常流水集合中的各异常流水和其对应的第一数据库中的当前交易操作数据确定,所述目标异常流水集合由所述第一服务设备从流水表中筛选出的待补偿的异常流水组成,所述异常流水为所述第一服务设备操作成功,但所述第二服务设备操作失败的联机交易的异常流水;
根据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
可选的,所述据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,包括:
根据所述补偿文件中的补偿数据生成第二数据库可执行的数据脚本;
利用所述数据脚本对所述第二服务设备对应的第二数据库进行数据补偿。
一种保持数据一致性的装置,应用于分布式系统中的第一服务设备,所述装置包括:异常流水记录模块、异常流水筛选模块和补偿数据确定模块;
所述异常流水记录模块,用于针对需要协同所述分布式系统中的第二服务设备操作的联机交易,若所述第一服务设备操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;
所述异常流水筛选模块,用于在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合;
所述补偿数据确定模块,用于根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,以使所述第二服务设备根据所述补偿文件对其对应的第二数据库进行数据补偿。
一种保持数据一致性的装置,应用于分布式系统中的第二服务设备,所述装置包括:补偿文件接收模块和数据补偿模块;
所述补偿文件接收模块,用于接收所述分布式系统中的第一服务设备发送的补偿文件,其中,所述补偿文件中包括至少一条补偿数据,所述补偿数据由所述分布式系统中的第一服务设备根据目标异常流水集合中的各异常流水和其对应的第一数据库中的当前交易操作数据确定,所述目标异常流水集合由所述第一服务设备从流水表中筛选出的待补偿的异常流水组成,所述异常流水为所述第一服务设备操作成功,但所述第二服务设备操作失败的联机交易的异常流水;
所述数据补偿模块,用于根据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
一种分布式系统,包括:第一服务设备和第二服务设备;
所述第一服务设备,用于针对需要协同所述第二服务设备操作的联机交易,若自身操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;以及在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合,根据所述目标异常流水集合中的各异常流水和自身对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,并将写有补偿数据的补偿文件发送至所述第二服务设备;
所述第二服务设备,用于接收所述补偿文件,并根据所述补偿文件对其对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
经由上述方案可知,本申请提供的保持数据一致性的方法、装置及系统,针对需要分布式系统中的第一服务设备协同第二服务设备操作的联机交易,若第一服务设备操作成功,但第二服务设备操作失败,则第一服务设备在流水表中记录联机交易的异常流水,在预设的补偿时段,第一服务设备从流水表中筛选待补偿的异常流水,组成目标异常流水集合,根据目标异常流水集合中各异常流水和第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,第二服务设备根据补偿文件对其对应的第二数据库进行数据补偿。在联机交易发生操作异常时,经由上述过程,可使得第二服务设备对应的第二数据库中的数据与第一服务设备对应的第一数据库中的数据保持一致。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的保持数据一致性的方法的流程示意图;
图2为本申请实施例提供的应用于分布式系统中的第一服务设备,用于保持数据一致性的装置的结构示意图;
图3为本申请实施例提供的应用于分布式系统中的第二服务设备,用于保持数据一致性的装置的结构示意图;
图4为本申请实施例提供的分布式系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对需要由分布式系统的第一服务设备协同该分布式系统中的第二服务设备操作的联机交易,在第一服务设备操作成功,但第二服务设备操作失败的情况下,为了使第二服务设备对应的第二数据库中的数据与第一服务设备对应的第一数据库中的数据保持一致,本案发明人进行了深入研究,通过研究,最终提出了一种保持数据一致性的方法,该方法的基本构思是,当联机交易发生操作异常时,如涉及数据不强调数据的强一致性,先记录下联机交易的异常流水,视作交易成功,在交易量较小的时段,读取异常流水进行数据补偿,该方法使得分布式系统中第一服务设备和第二服务设备分别对应的数据库中的数据能够保持一致性,并且能保证交易成功率,提高系统整体的可靠性和容错率。
接下来通过下述实施例对本申请提供的保持数据一致性的方法进行介绍。
请参阅图1,示出了本申请实施例提供的保持数据一致性的方法的流程示意图,该方法可以包括:
步骤S101:针对需要协同第二服务设备操作的联机交易,若第一服务设备操作成功,但第二服务设备操作失败,则第一服务设备在流水表中记录联机交易的异常流水。
需要说明的是,流水表中的流水标注有流水类型,流水类型包括异常、正常。
其中,异常流水中记录有交易流水号、交易时间戳、数据库操作类型、操作的数据表名、操作的条件字符串。
具体的,数据库操作类型包括新增、删除和修改,操作的数据表名为联机交易所涉及的交易操作的具体物理表名,若联机交易涉及多个物理表,则记录多个物理表的表名,操作的条件字符串为联机交易所操作的关键字段和取值,可通过该字段和取值于数据库中查询到唯一的记录。
步骤S102:在预设的补偿时段,第一服务设备从流水表中筛选待补偿的异常流水,组成目标异常流水集合。
其中,预设的补偿时段优选为交易量较小的时段。
具体的,第一服务设备从流水表中筛选待补偿的异常流水的过程可以包括:根据流水表中各异常流水中记录的交易时间戳,顺序从流水表中筛选待补偿的异常流水。在筛选时,可基于流水类型从流水表中筛选异常流水。
可选的,可根据流水表中各异常流水中记录的交易时间戳,从流水表中筛选当天的异常流水,作为待补偿的异常流水,即,本实施例优选为每天对当天产生的异常流水进行数据补偿。
步骤S103:第一服务设备根据目标异常流水集合中的各异常流水和自身对应的第一数据库中当前补偿时刻的最新交易操作数据,在补偿文件中写入补偿数据。
具体的,针对目标异常流水集合中每个待补偿的目标异常流水,执行:
步骤S1031、根据目标异常流水中记录的待补偿数据和数据库操作类型,以及第一数据库中的当前交易操作数据,确定是否需要在第二数据库中针对目标异常流水进行数据补偿,若是,则执行步骤S1032,若否,则不进行任何处理。
前述内容提到,数据库操作类型包括新增、删除和修改,本实施例分别对目标异常流水中记录的数据库操作类型为新增、删除和修改时,确定是否需要针对目标异常流水进行数据补偿的实现过程进行介绍:
(a)目标异常流水中记录的数据库操作类型为新增:
若在补偿执行时刻第一数据库中的当前交易操作数据中存在目标异常流水中记录的待补偿数据,则确定需要在第二数据库中针对目标异常流水进行数据补偿;若第一数据库中的当前交易操作数据中不存在目标异常流水中记录的待补偿数据,则确定不需要在第二数据库中针对目标异常流水进行数据补偿。
需要说明的是,目标异常流水中记录的待补偿数据为,在流水表中记录目标异常流水时的待补偿数据,若第一数据库中的当前交易操作数据中存在目标异常流水中记录的待补偿数据,说明目标异常流水中记录的待补偿数据仍存在于第一数据库中,其后续并未被操作,因此,需要针对该待补偿数据在第二数据库中进行补偿,若第一数据库中的当前交易操作数据中不存在目标异常流水中记录的待补偿数据,说明目标异常流水中记录的待补偿数据已从第一数据库中删除,此时,不再需要针对该待补偿数据在第二数据库中进行补偿。
(b)目标异常流水中记录的数据库操作类型为删除:
若在补偿执行时刻第一数据库中的当前交易操作数据中不存在目标异常流水中记录的待补偿数据,则确定需要在第二数据库中针对目标异常流水进行数据补偿;若第一数据库中的当前交易操作数据中存在目标异常流水中记录的待补偿数据,则确定不需要在第二数据库中针对目标异常流水进行数据补偿。
需要说明的是,若第一数据库中的当前交易操作数据中不存在目标异常流水中记录的待补偿数据,说明目标异常流水中记录的待补偿数据已从第一数据库中删除,此时需要针对待补偿数据在第二数据库中进行补偿,即,将第二数据库中的该数据同样删除,若第一数据库中的当前交易操作数据中存在目标异常流水中记录的待补偿数据,说明本应将该待补偿数据从第一数据库中删除,但是通过后续其它交易新增或没有删除掉,此时,为了使第一数据库中的数据与第二数据库中的数据保持一致,不需要从第二数据库中将该待补偿数据删除,即不需要在第二数据库中针对目标异常流水进行数据补偿。
(c)目标异常流水中记录的数据库操作类型为修改:
若在补偿执行时刻第一数据库中的当前交易操作数据中存在目标异常流水中记录的待补偿数据,则确定需要在第二数据库中针对目标异常流水进行数据补偿;若第一数据库中的当前交易操作数据中不存在目标异常流水中记录的待补偿数据,则确定不需要在第二数据库中针对目标异常流水进行数据补偿。
需要说明的是,若第一数据库中的当前交易操作数据中存在目标异常流水中记录的待补偿数据,说明目标异常流水中记录的待补偿数据仍存在于第一数据库中,其后续并未被操作,因此,需要针对该待补偿数据在第二数据库中进行补偿,若第一数据库中的当前交易操作数据中不存在目标异常流水中记录的待补偿数据,说明目标异常流水中记录的待补偿数据已从第一数据库中删除,此时,不再需要针对该待补偿数据在第二数据库中进行补偿。
步骤S1032、第一服务设备根据目标异常流水记录的数据库操作类型,以及第一数据库中目标异常流水记录的交易流水号对应的最新交易操作数据,生成操作语句,并将操作语句写入补偿文件。
考虑到目标异常流水中记录的待补偿数据可能不是最新的数据,因为,从记录目标异常流水至进行数据补偿期间,待补偿数据可能被操作过,为了能够保证最终的数据一致性,本实施例根据第一数据库中目标异常流水记录的交易流水号对应的最新交易操作数据,生成操作语句。
本实施例分别对目标异常流水中记录的数据库操作类型为新增、删除和修改时,生成操作语句的实现过程进行介绍:
(a)目标异常流水中记录的数据库操作类型为新增:
根据第一数据库中目标异常流水记录的交易流水号对应的最新交易操作数据,生成插入语句(即生成insert语句)。
(b)目标异常流水中记录的数据库操作类型为删除:
根据第一数据库中目标异常流水记录的交易流水号对应的最新交易操作数据,生成删除语句(即生成delete语句)。
(c)目标异常流水中记录的数据库操作类型为修改:
根据第一数据库中目标异常流水记录的交易流水号对应的最新交易操作数据,生成修改语句(即生成update语句)。
步骤S104:将写有补偿数据的补偿文件发送至第二服务设备。
步骤S105:第二服务设备根据接收的补偿文件对其对应的第二数据库进行数据补偿,以使其对应的第二数据库中的数据与第一服务设备对应的第一数据库中的数据保持一致。
具体的,第二服务设备根据接收的补偿文件对其对应的第二数据库进行数据补偿的过程包括:第二服务设备根据补偿文件中的补偿数据生成数据脚本,通过执行数据脚本对第二数据库进行数据补偿。
优选的,本实施例提供的方法还可以包括:第二服务设备在针对补偿文件中的每条补偿数据完成补偿后,记录每条补偿数据对应的补偿结果,其中,补偿结果至少用于指示针对对应的补偿数据是否补偿成功。针对补偿失败的数据,后续可由数据库管理人员进行排查分析和手工执行。
本申请实施例提供的保持数据一致性的方法中,针对需要第一服务设备协同第二服务设备操作的联机交易,若第一服务设备处理成功,但第二服务设备处理失败,则第一服务设备在流水表中记录联机交易的异常流水,在预设的补偿时段,第一服务设备从流水表中筛选待补偿的异常流水,组成目标异常流水集合,根据目标异常流水集合中各异常流水和第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,第二服务设备根据补偿文件对其对应的第二数据库进行数据补偿。当联机交易操作异常时,经由本申请实施例提供的保持数据一致性的方法,可使得第二服务设备对应的第二数据库中的数据与第一服务设备对应的第一数据库中的数据保持一致。
本申请实施例提供的保持数据一致性的方法使得,分布式系统不会因为第二服务设备故障而中断服务,并且,在联机交易发生操作异常,不需要将相关的全部事务进行回滚,另外,由于本申请不需要管理员手动对所有数据执行补偿,管理员只需要在每日完成数据补偿后检查补偿结果,对补偿失败的数据进行手动补偿即可,因此,人工成本较低。
本申请实施例还提供了一种应用于分布式系统中的第一服务设备、保持数据一致性的装置,请参阅图2,示出了该装置的结构示意图,可以包括:异常流水记录模块201、异常流水筛选模块202和补偿数据确定模块203。
异常流水记录模块201,用于针对需要协同第二服务设备操作的联机交易,若所述第一服务设备操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水。
异常流水筛选模块202,用于在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合。
补偿数据确定模块203,用于根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,以使所述第二服务设备根据所述补偿文件对其对应的第二数据库进行数据补偿。
其中,异常流水中记录有交易时间戳。
可选的,异常流水筛选模块202,具体用于根据所述流水表中各异常流水中记录的交易时间戳,顺序从所述流水表中筛选待补偿的异常流水。
其中,异常流水中记录有交易流水号、数据库操作类型和待补偿数据。
可选的,补偿数据确定模块203包括:补偿判别子模块和补偿数据生成及写入子模块。
所述补偿判别子模块,用于针对所述目标异常流水集合中每个待补偿的目标异常流水,根据所述目标异常流水中记录的待补偿数据和数据库操作类型,以及所述第一数据库中的当前交易操作数据(即最新的交易操作数据),确定是否需要在第二数据库中针对所述目标异常流水进行数据补偿。
所述补偿数据生成及写入子模块,用于在所述补偿判别子模块确定需要在第二数据库中针对所述目标异常流水进行数据补偿时,根据所述目标异常流水记录的数据库操作类型,以及所述第一数据库中所述目标异常流水记录的交易流水号对应的最新交易操作数据,生成第二数据库可执行的操作语句,并将所述操作语句写入补偿文件。
可选的,所述补偿判别子模块在根据所述目标异常流水中记录的待补偿数据和数据库操作类型,以及所述第一数据库中的当前交易操作数据,确定是否需要在第二数据库中针对所述目标异常流水进行数据补偿时,具体用于若所述目标异常流水中记录的数据库操作类型为新增,且所述第一数据库中的当前交易操作数据中存在所述目标异常流水中记录的待补偿数据,则确定需要在第二数据库中针对所述目标异常流水进行数据补偿;若所述目标异常流水中记录的数据库操作类型为删除,且所述第一数据库中的当前交易操作数据中不存在所述目标异常流水中记录的待补偿数据,则确定需要在第二数据库中针对所述目标异常流水进行数据补偿;若所述目标异常流水中记录的数据库操作类型为修改,且所述第一数据库中的当前交易操作数据中存在所述目标异常流水中记录的待补偿数据,则确定需要在第二数据库中针对所述目标异常流水进行数据补偿。
可选的,所述补偿数据生成及写入子模块在根据所述目标异常流水记录的数据库操作类型,以及所述第一数据库中所述目标异常流水记录的交易流水号对应的最新交易操作数据,生成操作语句时,具体用于在所述目标异常流水中记录的数据库操作类型为新增时,根据所述第一数据库中所述目标异常流水记录的交易流水号对应的最新交易操作数据,生成插入语句;在所述目标异常流水中记录的数据库操作类型为删除时,根据所述第一数据库中所述目标异常流水记录的交易流水号对应的最新交易操作数据,生成删除语句;在所述目标异常流水中记录的数据库操作类型为修改时,根据所述第一数据库中所述目标异常流水记录的交易流水号对应的最新交易操作数据,生成修改语句。
本实施例提供的应用于分布式系统中的第一服务设备的保持数据一致性的装置,在需要第一服务设备协同第二服务设备操作的联机交易发生操作异常时,可使第二服务设备对应的第二数据库中的数据与第一服务设备对应的第一数据库中的数据保持一致。
本申请实施例还提供了一种应用于分布式系统中的第二服务设备、保持数据一致性的装置,请参阅图3,示出了该装置的结构示意图,可以包括:补偿文件接收模块301和数据补偿模块302。
补偿文件接收模块301,用于接收分布式系统中的第一服务设备发送的补偿文件。
其中,所述补偿文件中包括至少一条补偿数据,所述补偿数据由第一服务设备根据目标异常流水集合中的各异常流水和其对应的第一数据库中的当前交易操作数据确定,所述目标异常流水集合由所述第一服务设备从流水表中筛选出的待补偿的异常流水组成,所述异常流水为所述第一服务设备操作成功,但所述第二服务设备操作失败的联机交易的异常流水。
数据补偿模块302,用于根据所述补偿文件对第二服务设备对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
可选的,数据补偿模块302可以包括:数据脚本生成子模块和数据补偿子模块。其中:
数据脚本生成子模块,用于根据所述补偿文件中的补偿数据生成第二数据库可执行的数据脚本;
数据补偿子模块,用于利用所述数据脚本对所述第二服务设备对应的第二数据库进行数据补偿。
本实施例提供的应用于分布式系统中的第二服务设备的保持数据一致性的装置,在需要第一服务设备协同第二服务设备操作的联机交易发生操作异常时,可使第二服务设备对应的第二数据库中的数据与第一服务设备对应的第一数据库中的数据保持一致。
本实施例还提供了一种分布式系统,请参阅图4,示出了该分布式系统的结构示意图,可以包括:第一服务设备401和第二服务设备402。
第一服务设备401,用于针对需要协同第二服务设备操作的联机交易,若自身操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;以及在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合,根据所述目标异常流水集合中的各异常流水和自身对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,并将写有补偿数据的补偿文件发送至第二服务设备。
第二服务设备402,用于接收第一服务设备401发送的补偿文件,并根据所述补偿文件对其对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
在需要第一服务设备协同第二服务设备操作的联机交易发生操作异常时,第一服务设备可在流水表中记录联机交易的异常流水,并可在预设的补偿时段从流水表中筛选待补偿的异常流水,组成目标异常流水集合,根据目标异常流水集合中各异常流水和第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,并将写有补偿数据的补偿文件提供给第二服务设备,第二服务设备可根据补偿文件对其对应的第二数据库进行数据补偿,经由上述过程可使得第二服务设备对应的第二数据库中的数据与第一服务设备对应的第一数据库中的数据保持一致。
本申请实施例还提供了一种第一服务设备,该第一服务设备可以包括:至少一个处理器,至少一个通信接口,至少一个存储器和至少一个通信总线;
在本申请实施例中,处理器、通信接口、存储器、通信总线的数量为至少一个,且处理器、通信接口、存储器通过通信总线完成相互间的通信;
处理器可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器603可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
针对需要协同所述分布式系统中的第二服务设备操作的联机交易,若所述第一服务设备操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;
在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合;
根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,以使所述第二服务设备根据所述补偿文件对其对应的第二数据库进行数据补偿。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的程序,所述程序用于:
针对需要协同所述分布式系统中的第二服务设备操作的联机交易,若所述第一服务设备操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;
在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合;
根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,以使所述第二服务设备根据所述补偿文件对其对应的第二数据库进行数据补偿。
本申请实施例还提供了一种第二服务设备,该第二服务设备可以包括:至少一个处理器,至少一个通信接口,至少一个存储器和至少一个通信总线;
在本申请实施例中,处理器、通信接口、存储器、通信总线的数量为至少一个,且处理器、通信接口、存储器通过通信总线完成相互间的通信;
处理器可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器603可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
接收所述分布式系统中的第一服务设备发送的补偿文件,其中,所述补偿文件中包括至少一条补偿数据,所述补偿数据由第一服务设备根据目标异常流水集合中的各异常流水和其对应的第一数据库中的当前交易操作数据确定,所述目标异常流水集合由所述第一服务设备从流水表中筛选出的待补偿的异常流水组成,所述异常流水为所述第一服务设备操作成功,但所述第二服务设备操作失败的联机交易的异常流水;
根据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的程序,所述程序用于:
接收所述分布式系统中的第一服务设备发送的补偿文件,其中,所述补偿文件中包括至少一条补偿数据,所述补偿数据由第一服务设备根据目标异常流水集合中的各异常流水和其对应的第一数据库中的当前交易操作数据确定,所述目标异常流水集合由所述第一服务设备从流水表中筛选出的待补偿的异常流水组成,所述异常流水为所述第一服务设备操作成功,但所述第二服务设备操作失败的联机交易的异常流水;
根据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种保持数据一致性的方法,其特征在于,应用于分布式系统中的第一服务设备,所述方法包括:
针对需要协同所述分布式系统中的第二服务设备操作的联机交易,若所述第一服务设备操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;
在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合;
根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,以使所述第二服务设备根据所述补偿文件对其对应的第二数据库进行数据补偿。
2.根据权利要求1所述的保持数据一致性的方法,其特征在于,所述异常流水中记录有交易时间戳;
所述从所述流水表中筛选待补偿的异常流水,包括:
根据所述流水表中各异常流水中记录的交易时间戳,顺序从所述流水表中筛选待补偿的异常流水。
3.根据权利要求1所述的保持数据一致性的方法,其特征在于,所述异常流水中记录有交易流水号、数据库操作类型和待补偿数据的关键字段;
所述根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,包括:
针对所述目标异常流水集合中每个待补偿的目标异常流水:
根据所述目标异常流水中记录的待补偿数据和数据库操作类型,以及所述第一数据库中的当前交易操作数据,确定是否需要在所述第二数据库中针对所述目标异常流水进行数据补偿;
若是,则根据所述目标异常流水记录的数据库操作类型,以及所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成操作语句,并将所述操作语句写入补偿文件。
4.根据权利要求3所述的保持数据一致性的方法,其特征在于,所述根据所述目标异常流水中记录的待补偿数据和数据库操作类型,以及所述第一数据库中的当前交易操作数据,确定是否需要在所述第二数据库中针对所述目标异常流水进行数据补偿,包括:
若所述目标异常流水中记录的数据库操作类型为新增,且在补偿执行时刻所述第一数据库中的当前交易操作数据中存在所述目标异常流水中记录的待补偿数据,则确定需要在所述第二数据库中针对所述目标异常流水进行数据补偿;
若所述目标异常流水中记录的数据库操作类型为删除,且在补偿执行时刻所述第一数据库中的当前交易操作数据中不存在所述目标异常流水中记录的待补偿数据,则确定需要在所述第二数据库中针对所述目标异常流水进行数据补偿;
若所述目标异常流水中记录的数据库操作类型为修改,且在补偿执行时段所述第一数据库中的当前交易操作数据中存在所述目标异常流水中记录的待补偿数据,则确定需要在所述第二数据库中针对所述目标异常流水进行数据补偿。
5.根据权利要求3所述的保持数据一致性的方法,其特征在于,所述根据所述目标异常流水记录的数据库操作类型,以及所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成操作语句,包括:
若所述目标异常流水中记录的数据库操作类型为新增,则根据补偿时段所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成插入语句;
若所述目标异常流水中记录的数据库操作类型为删除,则根据补偿时段所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成删除语句;
若所述目标异常流水中记录的数据库操作类型为修改,则根据所述第一数据库中所述目标异常流水记录的交易流水号对应的当前交易操作数据,生成修改语句。
6.一种保持数据一致性的方法,其特征在于,应用于分布式系统中的第二服务设备,所述方法包括:
接收所述分布式系统中的第一服务设备发送的补偿文件,其中,所述补偿文件中包括至少一条补偿数据,所述补偿数据由第一服务设备根据目标异常流水集合中的各异常流水和其对应的第一数据库中的当前交易操作数据确定,所述目标异常流水集合由所述第一服务设备从流水表中筛选出的待补偿的异常流水组成,所述异常流水为所述第一服务设备操作成功,但所述第二服务设备操作失败的联机交易的异常流水;
根据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
7.根据权利要求6所述的保持数据一致性的方法,其特征在于,所述根据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,包括:
根据所述补偿文件中的补偿数据生成所述第二数据库可用的数据脚本;
利用所述数据脚本对所述第二服务设备对应的第二数据库进行数据补偿。
8.一种保持数据一致性的装置,其特征在于,应用于分布式系统中的第一服务设备,所述装置包括:异常流水记录模块、异常流水筛选模块和补偿数据确定模块;
所述异常流水记录模块,用于针对需要协同所述分布式系统中的第二服务设备操作的联机交易,若所述第一服务设备操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;
所述异常流水筛选模块,用于在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合;
所述补偿数据确定模块,用于根据所述目标异常流水集合中的各异常流水和所述第一服务设备对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,以使所述第二服务设备根据所述补偿文件对其对应的第二数据库进行数据补偿。
9.一种保持数据一致性的装置,其特征在于,应用于分布式系统中的第二服务设备,所述装置包括:补偿文件接收模块和数据补偿模块;
所述补偿文件接收模块,用于接收所述分布式系统中的第一服务设备发送的补偿文件,其中,所述补偿文件中包括至少一条补偿数据,所述补偿数据由所述分布式系统中的第一服务设备根据目标异常流水集合中的各异常流水和其对应的第一数据库中的当前交易操作数据确定,所述目标异常流水集合由所述第一服务设备从流水表中筛选出的待补偿的异常流水组成,所述异常流水为所述第一服务设备操作成功,但所述第二服务设备操作失败的联机交易的异常流水;
所述数据补偿模块,用于根据所述补偿文件对所述第二服务设备对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
10.一种分布式系统,其特征在于,包括:第一服务设备和第二服务设备;
所述第一服务设备,用于针对需要协同所述第二服务设备操作的联机交易,若自身操作成功,但所述第二服务设备操作失败,则在流水表中记录所述联机交易的异常流水;以及在预设的补偿时段,从所述流水表中筛选待补偿的异常流水,组成目标异常流水集合,根据所述目标异常流水集合中的各异常流水和自身对应的第一数据库中的当前交易操作数据,在补偿文件中写入补偿数据,并将写有补偿数据的补偿文件发送至所述第二服务设备;
所述第二服务设备,用于接收所述补偿文件,并根据所述补偿文件对其对应的第二数据库进行数据补偿,以使所述第二数据库中的数据与所述第一数据库中的数据保持一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011558725.4A CN112597246B (zh) | 2020-12-25 | 2020-12-25 | 一种保持数据一致性的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011558725.4A CN112597246B (zh) | 2020-12-25 | 2020-12-25 | 一种保持数据一致性的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597246A true CN112597246A (zh) | 2021-04-02 |
CN112597246B CN112597246B (zh) | 2024-04-12 |
Family
ID=75202339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011558725.4A Active CN112597246B (zh) | 2020-12-25 | 2020-12-25 | 一种保持数据一致性的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597246B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060222160A1 (en) * | 2005-03-31 | 2006-10-05 | Marcel Bank | Computer network system for building, synchronising and/or operating a second database from/with a first database, and procedures for it |
CN106503257A (zh) * | 2016-11-15 | 2017-03-15 | 北京京东金融科技控股有限公司 | 基于binlog补偿机制的分布式事务服务方法及系统 |
US20170094011A1 (en) * | 2015-09-30 | 2017-03-30 | International Business Machines Corporation | Data consistency maintenance for sequential requests |
CN107330776A (zh) * | 2017-04-25 | 2017-11-07 | 阿里巴巴集团控股有限公司 | 一种记账及异常记账明细检测方法及装置 |
US10394798B1 (en) * | 2015-12-07 | 2019-08-27 | Gravic, Inc. | Method of ensuring transactional integrity of a system that includes a first subsystem and a second subsystem |
CN110287200A (zh) * | 2019-07-02 | 2019-09-27 | 江苏满运软件科技有限公司 | 对账方法、系统、计算机设备和存储介质 |
CN111277639A (zh) * | 2020-01-16 | 2020-06-12 | 中国建设银行股份有限公司 | 一种保持数据一致性的方法和装置 |
CN111475515A (zh) * | 2020-03-05 | 2020-07-31 | 深圳壹账通智能科技有限公司 | 失败任务的补偿管理方法、装置、计算机设备及存储介质 |
CN111813791A (zh) * | 2020-06-17 | 2020-10-23 | 上海悦易网络信息技术有限公司 | 一种分布式补偿事务的方法及设备 |
-
2020
- 2020-12-25 CN CN202011558725.4A patent/CN112597246B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060222160A1 (en) * | 2005-03-31 | 2006-10-05 | Marcel Bank | Computer network system for building, synchronising and/or operating a second database from/with a first database, and procedures for it |
US20170094011A1 (en) * | 2015-09-30 | 2017-03-30 | International Business Machines Corporation | Data consistency maintenance for sequential requests |
US10394798B1 (en) * | 2015-12-07 | 2019-08-27 | Gravic, Inc. | Method of ensuring transactional integrity of a system that includes a first subsystem and a second subsystem |
CN106503257A (zh) * | 2016-11-15 | 2017-03-15 | 北京京东金融科技控股有限公司 | 基于binlog补偿机制的分布式事务服务方法及系统 |
CN107330776A (zh) * | 2017-04-25 | 2017-11-07 | 阿里巴巴集团控股有限公司 | 一种记账及异常记账明细检测方法及装置 |
CN110287200A (zh) * | 2019-07-02 | 2019-09-27 | 江苏满运软件科技有限公司 | 对账方法、系统、计算机设备和存储介质 |
CN111277639A (zh) * | 2020-01-16 | 2020-06-12 | 中国建设银行股份有限公司 | 一种保持数据一致性的方法和装置 |
CN111475515A (zh) * | 2020-03-05 | 2020-07-31 | 深圳壹账通智能科技有限公司 | 失败任务的补偿管理方法、装置、计算机设备及存储介质 |
CN111813791A (zh) * | 2020-06-17 | 2020-10-23 | 上海悦易网络信息技术有限公司 | 一种分布式补偿事务的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112597246B (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9954747B2 (en) | Systems and methods of specifying service level criteria | |
CN108647357B (zh) | 数据查询的方法及装置 | |
CN102597966A (zh) | 运行管理装置以及运行管理方法 | |
CN109544014B (zh) | 基于历史数据回放的反欺诈方法及装置 | |
CN109284331B (zh) | 基于业务数据资源的制证信息获取方法、终端设备及介质 | |
CN112612775B (zh) | 一种数据存储方法、装置、计算机设备及存储介质 | |
CN113987393A (zh) | 一种网页操作记录器、系统、装置及方法 | |
CN111382198A (zh) | 数据还原方法、装置、设备及存储介质 | |
CN113190531A (zh) | 一种数据库迁移方法、装置、设备和存储介质 | |
CN102542016B (zh) | 文件系统弹性管理 | |
CN112202633A (zh) | 区块链网络的测试方法、装置、电子设备及可读存储介质 | |
CN108256311B (zh) | 一种授权认证方法、装置及电子设备 | |
CN112307384A (zh) | 页面快照展示方法、装置、电子设备及存储介质 | |
CN112597246A (zh) | 一种保持数据一致性的方法、装置及系统 | |
CN108304569B (zh) | 一种测试数据积累方法及装置 | |
CN109558064B (zh) | 一种电子发票数据链的同步方法、装置、介质及电子设备 | |
CN111338574B (zh) | 基于区块链的数据自修复方法、装置、介质及电子设备 | |
CN114490415A (zh) | 业务测试方法、计算机设备、存储介质和计算机程序产品 | |
CN113918236A (zh) | 一种辅助管理方法、装置及介质 | |
CN111158870A (zh) | 一种管理数据库的方法及装置 | |
CN115543685A (zh) | 一种数据库回滚方法、装置、电子设备及存储介质 | |
CN111177241A (zh) | 一种数据处理方法、装置、系统、电子设备及其存储介质 | |
CN111429125A (zh) | 账户管理方法、装置、存储介质及电子设备 | |
CN110597828A (zh) | 一种数据库变更方法、装置、设备及存储介质 | |
CN111079199B (zh) | 基于区块链技术的企业信用数据截图防篡改方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |