CN111125240B - 一种分布式事务实现方法、装置、电子设备及存储介质 - Google Patents
一种分布式事务实现方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111125240B CN111125240B CN201811289496.3A CN201811289496A CN111125240B CN 111125240 B CN111125240 B CN 111125240B CN 201811289496 A CN201811289496 A CN 201811289496A CN 111125240 B CN111125240 B CN 111125240B
- Authority
- CN
- China
- Prior art keywords
- target
- database
- target operation
- commit
- execution
- 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.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种分布式事务实现方法、装置、电子设备及存储介质,可以按照预设的执行顺序执行目标分布式事务包含的多个目标操作。当多个目标操作执行结束时,可以按照提交顺序依次判断多个目标操作的提交标识是否为预设的可提交标识。如果第一目标操作的提交标识为可提交标识,向第一目标操作及待提交目标操作对应的数据库发送提交指令,以完成目标分布式事务的提交。基于上述处理,根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种分布式事务实现方法、装置、电子设备及存储介质。
背景技术
数据库是数据以一种能够持久保存,并且可以被操作的方式保存的数据集合。随着互联网业务的不断发展,对于一次业务请求,不再是通过访问某一数据库就可以完成,可能需要访问多个数据库。对于一个跨多个数据库的业务请求,需要保证操作过程中各数据库中数据的一致,即实现多数据库的分布式事务。
为了实现多数据库的分布式事务,现有技术使用两阶段提交方式。具体流程如下:
阶段一:事务管理器向分布式事务相关的各数据库发送预提交指令,确认各数据库是否可以提交各自的操作。如果可以提交操作,数据库向事务管理器返回预提交成功的消息。如果无法提交操作,数据库向事务管理器返回预提交失败的消息。
阶段二:事务管理器接收各数据库返回的预提交消息,如果都是预提交成功,则向各数据库发送正式提交指令,以指示分布式事务相关的各数据库根据对应的操作对数据库中的数据进行处理。各数据库接收到正式提交指令后进行正式提交,以完成分布式事务的提交。
由上述可以看出,现有技术中,事务管理器需要分别与各数据库进行预提交和正式提交两次对话,导致分布式事务处理效率低。
发明内容
本发明实施例的目的在于提供一种分布式事务实现方法、装置、电子设备及计算机可读存储介质,以提高分布式事务的处理效率。具体技术方案如下:
第一方面,为了达到上述目的,本发明实施例公开了一种分布式事务实现方法,上述方法包括:
按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
当所述多个目标操作执行结束时,按照提交顺序依次判断所述多个目标操作的提交标识是否为预设的可提交标识,其中,所述提交顺序为与所述执行顺序相逆的顺序;
在所述多个目标操作中的第一目标操作的提交标识为所述可提交标识的情况下,向所述第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,所述待提交目标操作包括:所述多个目标操作中按照所述提交顺序在所述第一目标操作之前的未提交的目标操作;所述提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
可选的,所述按照预设的执行顺序执行目标分布式事务包含的多个目标操作,包括:
按照预设的执行顺序,针对目标分布式事务包含的每一目标操作,判断预设的数据与数据库的对应关系中,是否存在该目标操作需要处理的目标数据;
如果存在所述目标数据,将所述对应关系中,与所述目标数据对应的数据库,确定为该目标操作对应的目标数据库;
如果不存在所述目标数据,根据预设的分库规则,为所述目标数据分配对应的数据库,作为该目标操作对应的目标数据库;
将该目标操作发送至对应的目标数据库执行。
可选的,在所述为所述目标数据分配对应的数据库,作为该目标操作对应的目标数据库之后,所述方法还包括:
存储所述目标数据与所述目标数据库的对应关系。
可选的,在所述将该目标操作发送至对应的目标数据库执行之后,所述方法还包括:
获取该目标操作对应的目标数据库返回的执行结果;
如果所述执行结果为执行异常,向所述目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,不再执行该目标操作之后的其他目标操作,所述回滚指令用于指示数据库恢复至该数据库执行对应的目标操作之前的状态。
可选的,所述向所述目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,包括:
从该目标操作开始,按照所述提交顺序依次判断每一目标操作的提交标识是否为所述可提交标识;
在所述多个目标操作中的第二目标操作的提交标识为所述可提交标识的情况下,向目标回滚操作对应的数据库发送回滚指令,其中,所述目标回滚操作包括所述第二目标操作、以及所述多个目标操作中按照所述执行顺序在所述执行异常的目标操作与所述第二目标操作之间的目标操作。
第二方面,为达到上述目的,本发明实施例公开了一种分布式事务实现装置,上述装置包括:
执行模块,用于按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
判断模块,用于当所述多个目标操作执行结束时,按照提交顺序依次判断所述多个目标操作的提交标识是否为预设的可提交标识,其中,所述提交顺序为与所述执行顺序相逆的顺序;
发送模块,用于在所述多个目标操作中的第一目标操作的提交标识为所述可提交标识的情况下,向所述第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,所述待提交目标操作包括:所述多个目标操作中按照所述提交顺序在所述第一目标操作之前的未提交的目标操作;所述提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
可选的,所述执行模块,具体用于按照预设的执行顺序,针对目标分布式事务包含的每一目标操作,判断预设的数据与数据库的对应关系中,是否存在该目标操作需要处理的目标数据;
如果存在所述目标数据,将所述对应关系中,与所述目标数据对应的数据库,确定为该目标操作对应的目标数据库;
如果不存在所述目标数据,根据预设的分库规则,为所述目标数据分配对应的数据库,作为该目标操作对应的目标数据库;
将该目标操作发送至对应的目标数据库执行。
可选的,所述执行模块,还用于存储所述目标数据与所述目标数据库的对应关系。
可选的,所述执行模块,还用于获取该目标操作对应的目标数据库返回的执行结果;
如果所述执行结果为执行异常,向所述目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,不再执行该目标操作之后的其他目标操作,所述回滚指令用于指示数据库恢复至该数据库执行对应的目标操作之前的状态。
可选的,所述执行模块,具体用于从该目标操作开始,按照所述提交顺序依次判断每一目标操作的提交标识是否为所述可提交标识;
在所述多个目标操作中的第二目标操作的提交标识为所述可提交标识的情况下,向目标回滚操作对应的数据库发送回滚指令,其中,所述目标回滚操作包括所述第二目标操作、以及所述多个目标操作中按照所述执行顺序在所述执行异常的目标操作与所述第二目标操作之间的目标操作。
在本发明实施的另一方面,为了达到上述目的,本发明实施例还公开了一种电子设备,上述电子设备包括处理器和存储器;
上述存储器,用于存放计算机程序;
上述处理器,用于执行上述存储器上所存放的程序时,实现如上述第一方面所述的分布式事务实现方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有指令,当其在计算机上运行时,实现如上述第一方面所述的分布式事务实现方法。
在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的分布式事务实现方法。
本发明实施例提供的一种分布式事务实现方法、装置、电子设备及计算机可读存储介质,按照预设的执行顺序执行目标分布式事务包含的多个目标操作,当多个目标操作执行结束时,按照提交顺序依次判断多个目标操作的提交标识是否为预设的可提交标识,如果多个目标操作中的第一目标操作的提交标识为可提交标识,向第一目标操作及待提交目标操作对应的数据库发送提交指令,以完成对第一目标操作及待提交目标操作对应的数据库中的数据的处理。基于上述处理,根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式事务实现方法的流程图;
图2为本发明实施例提供的一种执行目标操作方法的流程图;
图3为本发明实施例提供的一种将目标操作发送至目标数据库执行的应用场景图;
图4为本发明实施例提供的一种回滚已执行成功的目标操作方法的流程图;
图5为本发明实施例提供的一种分布式事务实现装置的结构图;
图6为本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明申请提供了一种分布式事务实现方法、装置、电子设备及计算机可读存储介质,通常可以应用于服务器。应用于上述方法的服务器可以称为目标服务器,目标服务器可以按照预设的执行顺序执行目标分布式事务包含的多个目标操作。当各目标操作执行结束时,目标服务器可以按照提交顺序依次判断各目标操作的提交标识是否为预设的可提交标识。如果多个目标操作中的第一目标操作的提交标识为预设的可提交标识,目标服务器可以向第一目标操作及待提交目标操作对应的数据库发送提交指令,以完成目标分布式事务的提交。基于上述处理,根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
参见图1,图1为本发明实施例提供的一种分布式事务实现方法的流程图,可以包括以下步骤:
S101:按照预设的执行顺序执行目标分布式事务包含的多个目标操作。
其中,多个目标操作可以分别对应于不同的数据库。目标操作可以为新增操作、更新操作、删除操作或查询操作。执行顺序可以由技术人员根据业务需要进行设置。
在实施中,目标服务器可以接收用户的访问请求,获取该访问请求对应的多个目标操作。目标服务器可以按照执行顺序将每一目标操作发送至对应的数据库执行。示例性的,目标服务器可以按照执行顺序依次将各目标操作压入预设的堆栈,以记录各目标操作的执行顺序,目标操作被压入堆栈的顺序也即目标操作的执行顺序。
本步骤中,目标服务器可以获取执行顺序中前一目标操作的执行结果,将执行结果作为执行顺序中下一目标操作的输入参数,并将下一目标操作发送至对应的数据库执行。
S102:当多个目标操作执行结束时,按照提交顺序依次判断多个目标操作的提交标识是否为预设的可提交标识。
其中,提交顺序可以为与执行顺序相逆的顺序,可以理解的是,提交顺序可以为目标服务器从堆栈中弹出每一目标操作的顺序。提交标识可以是目标服务器在将每一目标操作压入堆栈时,分每一目标操作分配的标识。目标服务器可以根据提交标识判断是否进行提交。
本步骤中,目标服务器可以根据事务连接的传播级别确定各目标操作的提交标识。示例性的,目标分布式事务可以包含目标操作1、目标操作2、目标操作3、目标操作4和目标操作5,分别对应数据库1、数据库2、数据库3、数据库4和数据库5。如果目标服务器需要数据库1、数据库2、数据库3、数据库4和数据库5同时提交,即对数据库1、数据库2、数据库3、数据库4和数据库5中的数据同时进行处理,以保证数据库1、数据库2、数据库3、数据库4和数据库5的数据一致性,目标服务器可以设置目标操作1的提交标识为可提交标识,分别设置数据库2、数据库3、数据库4和数据库5的提交标识为不可提交标识。例如,目标服务器可以将目标操作1对应的事务连接的is New Transaction参数设置为true,表示目标服务器可以在目标操作1处进行提交。设置目标操作2、目标操作3、目标操作4和目标操作5对应的事务连接的is New Transaction参数为false,表示目标服务器不可以在目标操作2、目标操作3、目标操作4和目标操作5处进行提交。
在实施中,目标服务器在将各目标操作压入堆栈后,目标服务器可以按照提交顺序依次判断每一目标操作的提交标识是否为可提交标识。
本步骤中,目标服务器可以将各目标操作依次从堆栈弹出,在每次弹出一目标操作时,目标服务器可以判断该目标操作的提交标识是否为可提交标识。例如,目标服务器可以判断目标操作对应的连接的is New Transaction参数是否为true。
S103:在多个目标操作中的第一目标操作的提交标识为可提交标识的情况下,向第一目标操作及待提交目标操作对应的数据库发送提交指令。
其中,待提交目标操作可以包括按照提交顺序在第一目标操作之前的未提交的目标操作。提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
在实施中,当目标服务器判断第一目标操作对应的事务连接的is NewTransaction参数为false时,目标服务器可以按照提交顺序继续判断下一目标操作对应的事务连接的is New Transaction参数是否为true,直到判定某一目标操作对应的事务连接的is New Transaction参数为true,目标服务器可以确认提交。
示例性的,如果目标操作1对应的事务连接的is New Transaction参数为true,目标操作2对应的事务连接的is New Transaction参数为false,目标操作3对应的事务连接的is New Transaction参数为true,目标操作4对应的事务连接的is New Transaction参数为false,目标操作5对应的事务连接的is New Transaction参数为false。在目标服务器将目标操作1、目标操作2、目标操作3、目标操作4和目标操作5依次压入堆栈后,目标服务器首先可以从堆栈中弹出目标操作5,并判定目标操作5对应的事务连接的is NewTransaction参数为false,目标服务器可以继续从堆栈中弹出目标操作4,并判定目标操作4对应的事务连接的is New Transaction参数为false,然后,目标服务器可以继续从堆栈中弹出目标操作3,并判定目标操作3对应的事务连接的is New Transaction参数为true,目标服务器则可以确定提交目标操作3、目标操作4和目标操作5,向数据库3、数据库4和数据库5发送提交指令。然后,目标服务器可以从堆栈中弹出目标操作2,并判定目标操作2对应的事务连接的is New Transaction参数为false,目标服务器可以继续从堆栈中弹出目标操作1,并判定目标操作1对应的事务连接的is New Transaction参数为true,目标服务器可以确定提交目标操作1和目标操作2,向数据库1和数据库2发送提交指令。
由以上可见,基于本发明实施例的分布式事务实现方法,目标服务器根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,不需要进行预提交,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
可选的,参见图2,图2为本发明实施例提供的一种执行目标操作方法的流程图,可以包括以下步骤:
S201:按照预设的执行顺序,针对目标分布式事务包含的每一目标操作,判断预设的数据与数据库的对应关系中,是否存在该目标操作需要处理的目标数据,如果存在目标数据,执行S202,如果不存在目标数据,执行S203。
其中,预设的数据和数据库的对应关系可以用索引表来表示。目标服务器可以根据预设的分库规则,利用数据所属的类别,为数据分配对应的数据库,用于存储该数据,并将数据和数据库的对应关系写入到预设的索引表中。数据所属的类别的划分可以由技术人员根据经验进行设置。示例性的,目标服务器可以根据用户的姓名对用户的数据进行分库,将姓名以字母A开头的用户的数据存储在数据库1中,将姓名以字母B开头的用户的数据存储在数据库2中,将姓名以字母C开头的用户的数据存储在数据库3中。
在实施中,针对每一目标操作,目标服务器可以获取该目标操作中携带的数据(即目标数据)的标识,以确定该目标操作需要处理的目标数据,并判断上述对应关系中是否存在目标数据。
S202:将对应关系中,与目标数据对应的数据库,确定为该目标操作对应的目标数据库。
在实施中,如果上述对应关系中存在目标数据,目标服务器可以根据上述对应关系确定目标数据对应的数据库,作为该目标操作对应的目标数据库。示例性的,目标数据为用户姓名以C开头的用户的数据,即目标操作需要处理的数据为用户姓名以C开头的用户的数据,则目标服务器可以将数据库3确定为该目标操作对应的目标数据库。
S203:根据预设的分库规则,为目标数据分配对应的数据库,作为该目标操作对应的目标数据库。
在实施中,如果上述对应关系中不存在目标数据,目标服务器可以根据预设的分库规则,为目标数据分配对应的数据库,作为该目标操作对应的目标数据库。示例性的,目标数据为用户姓名以D开头的用户的数据,则目标服务器可以根据循环的顺序,将数据库1确定为目标操作对应的目标数据库,或者,目标服务器也可以为目标数据分配另一数据库4,用于存储用户姓名以D开头的用户的数据。
S204:将该目标操作发送至对应的目标数据库执行。
在实施中,目标服务器可以根据将目标操作压入堆栈的顺序,将每一目标操作发送至对应的目标数据库执行。
由以上可见,目标服务器可以动态地确定每一目标操作对应的数据库,进而能够提高数据库维护的效率。
参见图3,图3为本发明实施例提供的一种将目标操作发送至目标数据库执行的应用场景图,包括:
目标服务器301、索引库302、第一数据库303和第二数据库304。其中,目标服务器301可以接收数据访问请求。索引库302用于存储索引表,索引表中包含预设的数据与数据库的对应关系。目标服务器301可以从索引库302中获取数据和数据库的对应关系,确定该数据访问请求对应的各目标操作需要访问的第一数据库303和第二数据库304,将该数据访问请求对应的目标操作发送至第一数据库303和第二数据库304执行。
可选的,在为目标数据分配对应的数据库,作为该目标操作对应的目标数据库之后,目标服务器还可以:存储目标数据与目标数据库的对应关系。
在实施中,目标服务器可以将目标数据与目标数据库的对应关系写入到上述索引表中,以使目标服务器在下一次接收到该目标数据对应的目标操作时,可以将该目标数据对应的目标操作发送到对应的目标数据库执行。
由以上可见,基于本发明实施例的分布式事务实现方法,目标服务器可以存储目标数据与目标数据库的对应关系,能够提高数据库维护的效率。
可选的,目标服务器还可以根据各目标操作的执行结果,回滚目标操作。在将该目标操作发送至对应的目标数据库执行之后,上述分布式事务实现方法还可以包括:获取该目标操作对应的目标数据库返回的执行结果。如果执行结果为执行异常,向目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,不再执行该目标操作之后的其他目标操作。
其中,执行结果可以为执行异常或执行成功,回滚指令用于指示数据库恢复至该数据库执行对应的目标操作之前的状态。
在实施中,针对每一目标操作,目标服务器可以在将该目标操作发送至对应的目标数据库执行后,接收目标数据库返回的执行结果。例如,如果在第一预设时长内,目标服务器未接收到目标数据库返回的执行结果,目标服务器可以主动访问目标数据库以获取执行结果。目标服务器也可以在第二预设时长内未接收到目标数据库返回的执行结果的情况下,确定该目标操作的执行结果为执行异常。通常,第二预设时长可以大于第一预设时长。
如果该目标操作对应的执行结果为执行异常,目标服务器可以向目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,以使已执行成功的目标操作对应的数据库恢复至各目标操作执行前的状态。
示例性的,当目标操作1、目标操作2和目标操作3执行成功时,如果目标服务器接收到的目标操作4对应的数据库4返回的执行结果为执行异常,目标服务器可以向目标操作1、目标操作2和目标操作3对应的数据库1、数据库2和数据库3发送回滚指令,以使数据库1、数据库2和数据库3恢复至目标操作1、目标操作2和目标操作3执行前的状态。
由以上可见,基于本发明实施例的分布式事务实现方法,目标服务器可以在目标操作执行异常时,及时将数据库回滚至目标操作执行前的状态,保证数据一致性。
可选的,目标服务器还可以根据目标操作的提交标识回滚目标操作。参见图4,图4为本发明实施例提供的一种回滚已执行成功的目标操作方法的流程图,包括:
S401:从该目标操作开始,按照提交顺序依次判断每一目标操作的提交标识是否为可提交标识。
在实施中,目标服务器在判定某一目标操作的执行结果为执行异常后,可以判断该目标操作的提交标识是否为可提交标识,如果该目标操作的提交标识不是可提交标识,则目标服务器可以按照提交顺序,继续判断下一目标操作的提交标识是否为可提交标识。
S402:在多个目标操作中的第二目标操作的提交标识为可提交标识的情况下,向目标回滚操作对应的数据库发送回滚指令。
其中,目标回滚操作包括第二目标操作、以及多个目标操作中按照执行顺序在执行异常的目标操作与第二目标操作之间的目标操作。
在实施中,如果多个目标操作中的第二目标操作的提交标识为可提交标识,此时,目标服务器可以确认回滚。示例性的,目标分布式事务可以包含目标操作1、目标操作2、目标操作3、目标操作4和目标操作5,分别对应数据库1、数据库2、数据库3、数据库4和数据库5。如果目标服务器需要数据库1单独提交,数据库2、数据库3和数据库4同时提交,数据库5单独提交,目标服务器可以设置目标操作1的提交标识为可提交标识,数据库2的提交标识为可提交标识,数据库3和数据库4的提交标识为不可提交标识,数据库5的提交标识为可提交标识。目标服务器可以设置目标操作1、目标操作2和目标操作5对应的事务连接的is NewTransaction参数为true,目标操作3和目标操作4对应的事务连接的is New Transaction参数为false。当目标操作1、目标操作2和目标操作3执行成功时,目标服务器可以将目标操作4发送至数据库4执行时,此时,目标服务器可以将目标操作4压入上述堆栈。如果目标服务器接收到数据库4返回的执行结果为执行异常,则目标服务器可以将目标操作4弹出堆栈,并判定目标操作4对应的事务连接的is New Transaction参数不是true,目标服务器继续从堆栈中弹出下一目标操作3,并判定目标操作3对应的事务连接的is New Transaction参数是不是true。直至目标服务器从堆栈中弹出目标操作2,确定目标操作2对应的事务连接的is New Transaction参数为true,此时,目标服务器可以向目标操作2、目标操作3和目标操作4对应的数据库2、数据库3和数据库4发送回滚指令,以使数据库2、数据库3和数据库4回滚至目标操作2、目标操作3和目标操作4执行前的状态。
由以上可见,基于本发明实施例的分布式事务实现方法,目标服务器还可以根据目标操作的提交标识回滚目标操作,能够满足不同的业务需求,提高用户体验。
与上述方法实施例相对应,参见图5,图5为本发明实施例提供的一种分布式事务实现装置的结构图,包括:
执行模块501,用于按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
判断模块502,用于当多个目标操作执行结束时,按照提交顺序依次判断多个目标操作的提交标识是否为预设的可提交标识,其中,提交顺序为与执行顺序相逆的顺序;
发送模块503,用于在多个目标操作中的第一目标操作的提交标识为可提交标识的情况下,向第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,待提交目标操作包括:多个目标操作中按照提交顺序在第一目标操作之前的未提交的目标操作;提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
可选的,执行模块501,具体用于按照预设的执行顺序,针对目标分布式事务包含的每一目标操作,判断预设的数据与数据库的对应关系中,是否存在该目标操作需要处理的目标数据;
如果存在目标数据,将对应关系中,与目标数据对应的数据库,确定为该目标操作对应的目标数据库;
如果不存在目标数据,根据预设的分库规则,为目标数据分配对应的数据库,作为该目标操作对应的目标数据库;
将该目标操作发送至对应的目标数据库执行。
可选的,执行模块501,还用于存储目标数据与目标数据库的对应关系。
可选的,执行模块501,还用于获取该目标操作对应的目标数据库返回的执行结果;
如果执行结果为执行异常,向目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,不再执行该目标操作之后的其他目标操作,回滚指令用于指示数据库恢复至该数据库执行对应的目标操作之前的状态。
可选的,执行模块501,具体用于从该目标操作开始,按照提交顺序依次判断每一目标操作的提交标识是否为可提交标识;
在多个目标操作中的第二目标操作的提交标识为可提交标识的情况下,向目标回滚操作对应的数据库发送回滚指令,其中,目标回滚操作包括第二目标操作、以及多个目标操作中按照执行顺序在执行异常的目标操作与第二目标操作之间的目标操作。
由以上可见,基于本发明实施例的分布式事务实现装置,目标服务器根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
本发明实施例还提供了一种电子设备,如图6所示,包括存储器601和处理器602,其中,
存储器601,用于存放计算机程序;
处理器602,用于执行存储器601上所存放的程序时,实现本发明实施例提供的分布式事务实现方法,在本发明的一个实施例中,可以实现如下步骤:
按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
当多个目标操作执行结束时,按照提交顺序依次判断多个目标操作的提交标识是否为预设的可提交标识,其中,提交顺序为与执行顺序相逆的顺序;
在多个目标操作中的第一目标操作的提交标识为可提交标识的情况下,向第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,待提交目标操作包括:多个目标操作中按照提交顺序在第一目标操作之前的未提交的目标操作;提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
关于该方法各个步骤的具体实现以及相关解释内容可以参见前述方法实施例部分,在此不做赘述。
上述电子设备可以具备有实现上述电子设备与其他设备之间通信的通信接口。
上述的处理器602,通信接口,存储器601通过通信总线完成相互间的通信,此处所提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器601可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器602可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例提供的电子设备,根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行本发明实施例提供的分布式事务实现方法。
在本发明的一个实施例中,上述分布式事务实现方法,可以包括:
按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
当多个目标操作执行结束时,按照提交顺序依次判断多个目标操作的提交标识是否为预设的可提交标识,其中,提交顺序为与执行顺序相逆的顺序;
在多个目标操作中的第一目标操作的提交标识为可提交标识的情况下,向第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,待提交目标操作包括:多个目标操作中按照提交顺序在第一目标操作之前的未提交的目标操作;提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
需要说明的是,上述分布式事务实现方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。
通过运行本发明实施例提供的计算机可读存储介质中存储的指令,根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施例提供的分布式事务实现方法。
在本发明的一个实施例中,上述分布式事务实现方法,可以包括:
按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
当多个目标操作执行结束时,按照提交顺序依次判断多个目标操作的提交标识是否为预设的可提交标识,其中,提交顺序为与执行顺序相逆的顺序;
在多个目标操作中的第一目标操作的提交标识为可提交标识的情况下,向第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,待提交目标操作包括:多个目标操作中按照提交顺序在第一目标操作之前的未提交的目标操作;提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
需要说明的是,上述分布式事务实现方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。
通过运行本发明实施例提供的计算机程序产品,根据提交标识,可以直接指示数据库对该数据库中的数据进行处理,相对于两阶段的预提交方式,减少了与数据库的对话次数,能够提高分布式事务的处理效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行上述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种分布式事务实现方法,其特征在于,所述方法包括:
按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
当所述多个目标操作执行结束时,按照提交顺序依次判断所述多个目标操作的提交标识是否为预设的可提交标识,其中,所述提交顺序为与所述执行顺序相逆的顺序;执行顺序为目标操作被压入堆栈的顺序;提交标识为在将每一目标操作压入堆栈时,为每一目标操作分配的;在需要同时提交的多个目标操作中,提交顺序位于最后的操作的提交标识被分配为预设的可提交标识;
在所述多个目标操作中的第一目标操作的提交标识为所述可提交标识的情况下,向所述第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,所述待提交目标操作包括:所述多个目标操作中按照所述提交顺序在所述第一目标操作之前的未提交的目标操作;所述提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
2.根据权利要求1所述的方法,其特征在于,所述按照预设的执行顺序执行目标分布式事务包含的多个目标操作,包括:
按照预设的执行顺序,针对目标分布式事务包含的每一目标操作,判断预设的数据与数据库的对应关系中,是否存在该目标操作需要处理的目标数据;
如果存在所述目标数据,将所述对应关系中,与所述目标数据对应的数据库,确定为该目标操作对应的目标数据库;
如果不存在所述目标数据,根据预设的分库规则,为所述目标数据分配对应的数据库,作为该目标操作对应的目标数据库;
将该目标操作发送至对应的目标数据库执行。
3.根据权利要求2所述的方法,其特征在于,在所述为所述目标数据分配对应的数据库,作为该目标操作对应的目标数据库之后,所述方法还包括:
存储所述目标数据与所述目标数据库的对应关系。
4.根据权利要求2所述的方法,其特征在于,在所述将该目标操作发送至对应的目标数据库执行之后,所述方法还包括:
获取该目标操作对应的目标数据库返回的执行结果;
如果所述执行结果为执行异常,向所述目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,不再执行该目标操作之后的其他目标操作,所述回滚指令用于指示数据库恢复至该数据库执行对应的目标操作之前的状态。
5.根据权利要求4所述的方法,其特征在于,所述向所述目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,包括:
从该目标操作开始,按照所述提交顺序依次判断每一目标操作的提交标识是否为所述可提交标识;
在所述多个目标操作中的第二目标操作的提交标识为所述可提交标识的情况下,向目标回滚操作对应的数据库发送回滚指令,其中,所述目标回滚操作包括所述第二目标操作、以及所述多个目标操作中按照所述执行顺序在所述执行异常的目标操作与所述第二目标操作之间的目标操作。
6.一种分布式事务实现装置,其特征在于,所述装置包括:
执行模块,用于按照预设的执行顺序执行目标分布式事务包含的多个目标操作;
判断模块,用于当所述多个目标操作执行结束时,按照提交顺序依次判断所述多个目标操作的提交标识是否为预设的可提交标识,其中,所述提交顺序为与所述执行顺序相逆的顺序;执行顺序为目标操作被压入堆栈的顺序;提交标识为在将每一目标操作压入堆栈时,为每一目标操作分配的;在需要同时提交的多个目标操作中,提交顺序位于最后的操作的提交标识被分配为预设的可提交标识;
发送模块,用于在所述多个目标操作中的第一目标操作的提交标识为所述可提交标识的情况下,向所述第一目标操作及待提交目标操作对应的数据库发送提交指令,其中,所述待提交目标操作包括:所述多个目标操作中按照所述提交顺序在所述第一目标操作之前的未提交的目标操作;所述提交指令用于指示数据库根据对应的目标操作对该数据库中的数据进行处理。
7.根据权利要求6所述的装置,其特征在于,
所述执行模块,具体用于按照预设的执行顺序,针对目标分布式事务包含的每一目标操作,判断预设的数据与数据库的对应关系中,是否存在该目标操作需要处理的目标数据;
如果存在所述目标数据,将所述对应关系中,与所述目标数据对应的数据库,确定为该目标操作对应的目标数据库;
如果不存在所述目标数据,根据预设的分库规则,为所述目标数据分配对应的数据库,作为该目标操作对应的目标数据库;
将该目标操作发送至对应的目标数据库执行。
8.根据权利要求7所述的装置,其特征在于,所述执行模块,还用于存储所述目标数据与所述目标数据库的对应关系。
9.根据权利要求7所述的装置,其特征在于,所述执行模块,还用于获取该目标操作对应的目标数据库返回的执行结果;
如果所述执行结果为执行异常,向所述目标分布式事务中已执行成功的目标操作对应的数据库发送回滚指令,不再执行该目标操作之后的其他目标操作,所述回滚指令用于指示数据库恢复至该数据库执行对应的目标操作之前的状态。
10.根据权利要求9所述的装置,其特征在于,所述执行模块,具体用于从该目标操作开始,按照所述提交顺序依次判断每一目标操作的提交标识是否为所述可提交标识;
在所述多个目标操作中的第二目标操作的提交标识为所述可提交标识的情况下,向目标回滚操作对应的数据库发送回滚指令,其中,所述目标回滚操作包括所述第二目标操作、以及所述多个目标操作中按照所述执行顺序在所述执行异常的目标操作与所述第二目标操作之间的目标操作。
11.一种电子设备,其特征在于,包括存储器和处理器;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811289496.3A CN111125240B (zh) | 2018-10-31 | 2018-10-31 | 一种分布式事务实现方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811289496.3A CN111125240B (zh) | 2018-10-31 | 2018-10-31 | 一种分布式事务实现方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111125240A CN111125240A (zh) | 2020-05-08 |
CN111125240B true CN111125240B (zh) | 2023-09-01 |
Family
ID=70494090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811289496.3A Active CN111125240B (zh) | 2018-10-31 | 2018-10-31 | 一种分布式事务实现方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125240B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930830B (zh) * | 2020-06-22 | 2024-04-16 | 心有灵犀科技股份有限公司 | 一种基于共享数据库的分布式事务数据处理方法及系统 |
CN112182082B (zh) * | 2020-09-24 | 2021-07-06 | 广州巨杉软件开发有限公司 | 一种实现跨不同数据库引擎事务强一致性的系统及方法 |
CN113254483B (zh) * | 2021-06-03 | 2021-11-09 | 北京金山云网络技术有限公司 | 请求的处理方法和装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016180164A1 (zh) * | 2015-09-29 | 2016-11-17 | 中兴通讯股份有限公司 | 一种分布式事务回滚方法及装置 |
CN107528912A (zh) * | 2017-09-11 | 2017-12-29 | 金蝶软件(中国)有限公司 | 一种自动实现分布式事务处理的方法、系统及相关装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4261609B1 (ja) * | 2008-05-02 | 2009-04-30 | 透 降矢 | トランザクションの同時実行制御を備えたマルチオペレーション・プロセッシングを用いたデータベースのトランザクション処理システム |
US9747356B2 (en) * | 2014-01-23 | 2017-08-29 | Oracle International Corporation | Eager replication of uncommitted transactions |
US10235440B2 (en) * | 2015-12-21 | 2019-03-19 | Sap Se | Decentralized transaction commit protocol |
-
2018
- 2018-10-31 CN CN201811289496.3A patent/CN111125240B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016180164A1 (zh) * | 2015-09-29 | 2016-11-17 | 中兴通讯股份有限公司 | 一种分布式事务回滚方法及装置 |
CN107528912A (zh) * | 2017-09-11 | 2017-12-29 | 金蝶软件(中国)有限公司 | 一种自动实现分布式事务处理的方法、系统及相关装置 |
Non-Patent Citations (1)
Title |
---|
张剑 ; 刘梦赤 ; .面向信息网模型的高可扩展性分布式事务处理机制.计算机工程.2017,(第11期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111125240A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111125240B (zh) | 一种分布式事务实现方法、装置、电子设备及存储介质 | |
CN109885786B (zh) | 数据缓存处理方法、装置、电子设备及可读存储介质 | |
US10509716B2 (en) | Automated recovery of flighted features based on service requests | |
CN110018884B (zh) | 分布式事务处理方法、协调装置、数据库及电子设备 | |
CN111159160B (zh) | 一种版本回滚方法、装置、电子设备及存储介质 | |
CN111382206B (zh) | 一种数据存储方法及装置 | |
CN115757406A (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN110069217B (zh) | 一种数据存储方法及装置 | |
CN112835885A (zh) | 一种分布式表格存储的处理方法、装置及系统 | |
CN111355765A (zh) | 一种网络请求的处理、发送方法及装置 | |
CN110727895B (zh) | 一种敏感词发送方法、装置、电子设备及存储介质 | |
CN111046004B (zh) | 一种数据文件存储方法、装置、设备及存储介质 | |
CN115858668A (zh) | 分布式事务处理方法、装置、电子装置及存储介质 | |
CN116467085A (zh) | 任务处理方法、系统、电子设备及存储介质 | |
CN109002355B (zh) | 处理请求的分配方法、装置及设备 | |
CN112764897B (zh) | 任务请求的处理方法、装置、系统及计算机可读存储介质 | |
CN114564210A (zh) | 一种副本部署方法、装置、系统、电子设备及存储介质 | |
CN109286672B (zh) | 一种用户请求的处理方法、装置及服务器 | |
CN110704301B (zh) | Tpc-e自动化测试方法以及tpc-e测试系统 | |
CN111367694A (zh) | 事件处理方法、服务器及计算机存储介质 | |
CN112527276A (zh) | 一种可视化编程工具中的数据更新方法、装置及终端设备 | |
CN112835762A (zh) | 数据处理方法和装置、存储介质和电子设备 | |
CN111639089B (zh) | 事务处理方法、装置、电子设备和计算机可读存储介质 | |
CN111754117B (zh) | 任务下发方法、装置、电子设备及存储介质 | |
CN114399310A (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 |