CN115145715A - 一种分布式事务处理方法、系统及相关设备 - Google Patents
一种分布式事务处理方法、系统及相关设备 Download PDFInfo
- Publication number
- CN115145715A CN115145715A CN202110342631.1A CN202110342631A CN115145715A CN 115145715 A CN115145715 A CN 115145715A CN 202110342631 A CN202110342631 A CN 202110342631A CN 115145715 A CN115145715 A CN 115145715A
- Authority
- CN
- China
- Prior art keywords
- lock
- transaction coordinator
- transaction
- lock server
- list
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 91
- 238000012545 processing Methods 0.000 claims abstract description 58
- 230000001360 synchronised effect Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 13
- 238000005192 partition Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种分布式事务处理方法、系统及相关设备,该方法用于包括锁服务器集群和事务协调器集群的分布式系统,事务协调器集群中的事务协调器用于控制分布式事务的处理过程,该处理过程包括对分布式事务涉及的数据库的锁操作,该方法包括:锁服务器集群中的第一锁服务器根据事务协调器列表,向事务协调器列表中的每个事务协调器发送锁数据的获取请求;若第一锁服务器获取到事务协调器列表中每个事务协调器发送的锁数据,第一锁服务器对事务协调器集群中的事务协调器发送的锁请求进行处理。通过执行上述方法,能够降低分布式事务处理过程中的性能开销,提高分布式事务处理效率。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种分布式事务处理方法、系统及相关设备。
背景技术
随着网络技术的快速发展,分布式系统逐渐普遍,分布式系统基于微服务架构,在不同的区域或者不同的节点部署多个服务,服务与服务之间可以通过远程协作完成一项事务操作。例如,当需要实现A银行的账户a向B银行的账户b转账100元转账操作时,需要调用第一服务将A银行的数据库中账户a的余额扣除100元,并调用第二服务将B银行数据库中账户b的余额增加100元。这种由分布式系统操作多个独立的数据库共同完成一个工作的事务称之为分布式事务,也称为全局事务。
分布式事务处理过程中,会对参与事务的数据进行加锁或者放锁操作,以防止并发的分布式事务对同一行数据进行修改时产生冲突。例如执行上述转账操作时,需要对账户a的数据与账户b的数据执行加锁操作,在转账结束之后执行放锁操作。因此在分布式事务中,对数据进行加锁或放锁是非常频繁操作。分布式事务中的锁数据可以存放在数据库中,为了防止锁数据的丢失,提高可靠性,需要对锁数据进行备份,将锁数据由主节点同步复制到备节点,在主节点出现故障时,从备节点中获取锁数据,但是对锁数据的同步复制会带来很大的性能开销。
发明内容
本申请实施例公开了一种分布式事务处理方法、系统及相关设备,能够降低分布式事务处理过程中的性能开销,提高分布式事务处理效率。
第一方面,本申请实施例提供一种分布式事务处理方法,该方法应用于分布式系统,该分布式系统包括锁服务器集群和事务协调器集群,事务协调器集群中的事务协调器用于控制分布式事务的处理过程,分布式事务的处理过程包括分布式事务涉及的数据库的锁操作,该方法包括:
锁服务器集群中的第一锁服务器根据事务协调器列表,向事务协调器列表中的每个事务协调器发送锁数据的获取请求;在第一锁服务器获取到事务协调器列表中每个事务协调器发送的锁数据的情况下,由第一锁服务器对事务协调器集群中的事务协调器发送的锁请求进行处理。
采用本申请实施例中的方法,通过在分布式系统中使用锁服务器集群处理分布式事务中的加锁请求、放锁请求等,锁服务器集群中的每个锁服务器能够根据事务协调器列表,向事务协调器列表中的锁服务器发送获取请求,获取事务协调器列表中每个事务协调器包括的锁数据,从而无需对锁数据进行备份,因此无需每次在执行加锁操作或者放锁操作后,更新备用节点中的锁数据,能够降低分布式事务处理过程中的性能消耗,同时由于不用每次加锁或者放锁后,在更新主节点与备用节点中的锁数据之后才向数据库服务器返回加锁结果或者放锁结果,因此能够降低分布式事务处理过程中的时延,降低事务锁的持有时间,提高事务处理效率。
在一种具体的实现方式中,事务协调器列表是由第二锁服务器同步至第一锁服务器的,事务协调器列表记录了进行锁操作活跃的事务协调器,第二锁服务器是第一锁服务器向事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,对事务协调器集群中的事务协调器发送的锁请求进行处理的主锁服务器。
主锁服务器中维护有事务协调器列表,该事务协调器列表记录有主锁服务器所保存的锁数据所属的事务协调器,主锁服务器每次更新事务协调器列表之后,将更新后的事务协调器列表同步给备用锁服务器,以使锁服务器集群在主锁服务器出现故障时,新选举出的主锁服务器能够根据事务协调器列表从事务协调器中获取锁数据,快速恢复出现故障时主锁服务器中的全量锁数据。
在一种具体的实现方式中,上述第一锁服务器对事务协调器集群中的事务协调器发送的锁请求进行处理,包括:第一锁服务器接收事务协调器集群中第一事务协调器发送的加锁请求;当事务协调器列表中不包括第一事务协调器的标识时,第一锁服务器将第一事务协调器的标识加入事务协调器列表,得到更新后的事务协调器列表;第一锁服务器将更新后的事务协调器列表同步给锁服务器集群中的其他锁服务器;第一锁服务器在确认将更新后的事务协调器列表成功同步给其他锁服务器中预设比例的锁服务器的情况下,根据加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至第一锁服务器的存储区域。
主锁服务器中维护有事务协调器列表,该事务协调器列表记录有主锁服务器所保存的锁数据所属的事务协调器,主锁服务器每次接收到事务协调器发送的锁数据之后,如果事务协调器列表中不包括该事务协调器,则将该事务协调器的标识加入事务协调器列表以更新事务协调器列表,每次更新事务协调器列表之后,将更新后的事务协调器列表同步给备用锁服务器,以使锁服务器集群在主锁服务器出现故障时,新选举出的主锁服务器能够根据事务协调器列表从事务协调器中获取锁数据,快速恢复出现故障时主锁服务器中的全量锁数据。应理解的是,主锁服务器在确认将更新后的事务协调器列表成功同步给其他锁服务器中预设比例的锁服务器的情况下,例如预设比例大于0.5,即可认为更新后的事务协调器列表同步成功。
在一种具体的实现方式中,上述方法还包括:第一锁服务器在确认没有将更新后的事务协调器列表同步给其他锁服务器中预设比例的锁服务器的情况下,向第一事务协调器发送加锁失败的消息,并删除更新后的事务协调器列表中第一事务协调器的标识。
在一种具体的实现方式中,当事务协调器列表中包括第一事务协调器的标识时,第一锁服务器根据加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至第一锁服务器的存储区域。
在一种具体的实现方式中,第一锁服务器对事务协调器集群中的事务协调器发送的锁请求进行处理之前,还包括:第一锁服务器向事务协调器集群中的事务协调器发送第一指示消息,第一指示消息指示事务协调器集群中的事务协调器将锁请求发送给第一锁服务器。
在一种具体的实现方式中,向事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,方法还包括:第一锁服务器在预设时长内没有接收到第二锁服务器发送的心跳包。第一锁服务器没有接收到主锁服务器的心跳包时,能够及时根据事务协调器列表获取事务协调器集群中的锁数据,成为新的主锁服务器,进而接收事务协调器集群中事务协调器的锁请求并处理,防止主锁服务器故障后分布式事务的锁请求无法处理,能够提高分布式系统的性能。
在一种具体的实现方式中,第一锁服务器是根据预设算法从锁服务器集群中选取的候选主锁服务器,该预设算法可以是raft算法或者paxos算法等共识算法中的任意一种。
在一种具体的实现方式中,方法还包括:第一锁服务器在没有接收到事务协调器列表中第二事务协调器发送的锁数据时,向事务协调器列表中第三事务协调器发送获取请求,第三事务协调器中包括第二事务协调器中锁数据的备份;第一锁服务器接收第三事务协调器发送的第二事务协调器中包括的锁数据。
事务协调器集群中的每个事务协调器通过将锁数据在其他事务协调器中进行备份,防止锁服务器在没有获取到一个事务协调器集群中的数据后,不能成为主锁服务器,锁服务器集群中会重复获取事务协调器中锁数据的操作导致降低分布式系统性能。
第二方面,本申请实施例提供一种分布式事务处理系统,分布式系统包括锁服务器集群和事务协调器集群,上述事务协调器集群中的事务协调器用于控制分布式事务的处理过程,上述分布式事务的处理过程包括分布式事务涉及的数据库的锁操作,其中,
锁服务器集群中的第一锁服务器,用于根据事务协调器列表,向事务协调器列表中的每个事务协调器发送锁数据的获取请求;
事务协调器列表中的每个事务协调器,用于将各自的保存的锁数据发送给上述第一锁服务器;
第一锁服务器,还用于在获取到上述事务协调器列表中每个事务协调器发送的锁数据后,对事务协调器集群中的事务协调器发送的锁请求进行处理。
在一种具体的实现方式中,上述事务协调器列表是由第二锁服务器同步至第一锁服务器的,事务协调器列表记录了进行锁操作活跃的事务协调器,第二锁服务器是第一锁服务器向事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,对事务协调器集群中的事务协调器发送的锁请求进行处理的主锁服务器。
在一种具体的实现方式中,上述第一锁服务器还用于在获取到事务协调器列表中每个事务协调器发送的锁数据后,对事务协调器集群中的事务协调器发送的锁请求进行处理,具体包括:接收事务协调器集群中第一事务协调器发送的加锁请求;当事务协调器列表中不包括第一事务协调器的标识时,将第一事务协调器的标识加入事务协调器列表,得到更新后的事务协调器列表;将更新后的事务协调器列表同步给锁服务器集群中的其他锁服务器;在确认将更新后的事务协调器列表成功同步给其他锁服务器中预设比例的锁服务器的情况下,根据加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至第一锁服务器的存储区域。
在一种具体的实现方式中,上述第一锁服务器还用于:在确认没有将更新后的事务协调器列表同步给其他锁服务器中预设比例的锁服务器的情况下,向上述第一事务协调器发送加锁失败的消息,并删除更新后的事务协调器列表中第一事务协调器的标识。
在一种具体的实现方式中,上述第一锁服务器还用于当事务协调器列表中包括第一事务协调器的标识时,根据加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至第一锁服务器的存储区域。
在一种具体的实现方式中,上述第一锁服务器对事务协调器集群中的事务协调器发送的锁请求进行处理之前,还用于:向事务协调器集群中的事务协调器发送第一指示消息,第一指示消息指示事务协调器将锁请求发送给第一锁服务器。
在一种具体的实现方式中,上述第一锁服务器向上述事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,还包括:第一锁服务器在预设时长内没有接收到第二锁服务器发送的心跳包。
在一种具体的实现方式中,第一锁服务器是根据预设算法从上述锁服务器集群中选取的候选主锁服务器。
在一种具体的实现方式中,上述第一锁服务器还用于:在没有接收到上述事务协调器列表中第二事务协调器发送的锁数据时,向事务协调器列表中第三事务协调器发送上述获取请求,其中第三事务协调器中包括第二事务协调器中锁数据的备份;接收第三事务协调器发送的第二事务协调器中包括的锁数据。
第三方面,本申请实施例提供一种分布式事务处理装置,该装置包括用于执行上述第一方面或第一方面任意具体实现方式中所述方法的单元。
第四方面,本申请实施例提供一种计算设备,包括处理器和存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,当所述处理器执行所述指令时,执行如上述第一方面或第一方面任一具体实现方式中所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序指令,当所述计算机程序指令在设备上运行时执行如第一方面或第一方面任意具体实现方式中所述的方法。
第六方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括计算机指令,在被计算设备执行时,计算设备执行前述第一方面或第一方面任一具体实现方式中的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面或第一方面任一具体实现方式中的方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种分布式系统示意图;
图2是本申请实施例提供的一种分布式系统示意图;
图3是本申请实施例提供的另一种分布式系统示意图;
图4是本申请实施例提供的一种确定主锁服务器的流程示意图;
图5是本申请实施例提供的一种锁请求处理方法的流程示意图;
图6是本申请实施例提供的一种分布式事务处理装置的示意图;
图7是本申请实施例提供的一种计算设备的示意图。
具体实施方式
下面结合附图对本申请实施例提供的分布式事务实现方法和分布式系统进行介绍。事务是指访问或更新数据库中的数据的一种操作任务,传统的集中式应用中,事务仅限于对单一数据库资源进行访问,这种事务称为本地事务。在基于微服务的分布式应用中,一个业务通常需要调用多个微服务,多个微服务调用通常对应多个数据库本地事务。当一个业务需要调用多个微服务实现多个数据库本地事务时,需要分布式事务保证这多个数据库本地事务的数据一致性。
分布式事务是指需要操作多个独立的数据库共同完成一个业务的事务。一个分布式事务可以包括多个分支事务,分布式事务的职责是协调其下管辖的分支事务达成一致,要么一起成功提交,要么一起失败回滚。通常,每个分支事务本身就是一个关系型数据库的本地事务。示例性的,用户通过终端发起一项转账业务,以实现A银行账户a向B银行的账户b转账100元。该业务需要分别对A银行的数据库与B银行的数据库中的数据进行操作,该业务需要调用第一服务完成从A银行的数据库的账户a中扣除100元的操作,调用第二服务完成向B银行的数据库的账户b中增加100元的操作。其中,调用第一服务需要进行的数据库操作是一个分支事务,调用第二服务需要进行的数据库操作是另一个分支事务。由于分布式事务通常是跨多个区域、或者跨多个数据库的全局事务,因此,本申请中分布式事务也称为全局事务,在本申请实施例的描述中,全局事务即表示一项分布式事务。
用于实现分布式事务的分布式系统包括一个或多个部署有客户端(client)的用户终端,一个或多个事务协调器(transaction coordinator,TC)、一个或多个提供服务(例如微服务)的数据库服务器。如图1所示,图1是一种分布式系统的示意图。该分布式系统包括用户终端、第一数据库服务器、第二数据库服务器、事务协调器、数据库A和数据库B。分布式事务处理过程中,客户端需要发起分布式事务时,根据负载均衡策略选择一个事务协调器,客户端向该事务协调器发起分布式事务请求,事务协调器创建全局事务标识(identity,ID)后返回给客户端,其中全局事务ID用于唯一的标识一个分布式事务。客户端通过调用位于不同数据库服务器中的服务完成各自对应的分支事务。例如执行上述转账操作,需要调用第一数据库中的第一服务实现将数据库A中的账户a的余额扣减100元,调用第二数据库中的第二服务实现将数据库B中的账户b的余额增加100元。对于每个分支事务,数据库服务器在执行分支事务时,会将所操作的数据库资源(也即数据库中的数据)的锁数据发送给事务协调器,事务协调器根据锁数据对数据库中的一行或多行数据进行加锁,以防止多个分布式事务并发修改同一个数据库中的同一行数据,然后将加锁成功的消息发送给数据库服务器。当前是采用远程字典服务(remote dictionary server,Redis)或者关系型数据库进行加锁,即:将锁数据存放在Redis或关系型数据库,其中,锁数据包括一组键值对(key-value),key包括需要加锁的数据所在的行的标识、该行所在的表的名称以及该表所在的数据库的名称,value是该分布式事务的全局事务ID。而为了防止锁数据的丢失,提高可靠性,需要对锁数据进行备份,将锁数据由主节点同步复制到备节点,即;将锁数据从一个数据库同步复制到另一个数据库,但是这样进行锁数据的同步复制会带来很大的性能开销,影响分布式事务的处理效率。
本申请实施例提供一种分布式系统,该分布式系统包括一个或多个部署有客户端的用户终端,一个或多个提供服务(例如微服务)的数据库服务器、包括多个事务协调器的事务协调器集群以及包括多个锁服务器的锁服务器集群。事务协调器集群中的事务协调器用于控制分布式事务的处理过程,分布式事务的处理过程包括所述分布式事务涉及的数据库的锁操作。锁服务器集群中的锁服务器用于处理事务协调器集群中的事务协调器发送的锁请求。例如加锁请求与放锁请求。如图2所示,图2是本申请实施例提供的一种分布式系统的示意图,该分布式系统中,上述锁服务器集群包括一个主锁服务器与多个备用锁服务器,当上述事务协调器接收到数据库服务器发送的锁数据时,将锁数据发送给主锁服务器,主锁服务器根据锁数据对数据库服务器操作的资源(也即数据库中的数据)进行加锁,将锁数据存放在存储区域中。再将加锁成功的消息发送给事务协调器,同时将发送锁数据的事务协调器记录到主锁服务器中的事务协调器列表,进一步地将事务协调器列表同步给其他备用锁服务器,以使得当主锁服务器在出现故障时,从备用锁服务器中选举的新的主锁服务器能够根据事务协调器列表从事务协调器中获取锁数据。其中,事务协调器列表记录了进行锁操作活跃的事务协调器,进行锁操作活跃的事务协调器是指该事务协调器向主锁服务器发送了锁数据且发送的锁数据还存在于主锁服务器中。上述锁服务器的存储区域是指锁服务器中存储程序和数据的部件,是锁服务器的处理器能够直接寻址的存储空间,例如内存。
如图3所示,图3是本申请实施例提供的另一种分布式系统的示意图,该分布式系统示意图中,为了提高锁服务器处理锁请求的效率,将多个锁服务器分为多个分区,每个分区包括一个主锁服务器与多个备用锁服务器,事务协调器在接收到锁数据之后,根据负载均衡策略选择其中的一个分区,将锁数据发送给该分区的主锁服务器实现加锁。
下面结合附图对本申请实施例提供的分布式系统以及基于该分布式系统实现加锁的方法进行介绍。首先介绍在一个分区的多个锁服务器中确定主锁服务器的方法。如图4所示,图4是本申请实施例提供一种确定主锁服务器的流程示意图,确定主锁服务器的方法包括S401至S406。需要说明的是,当锁服务器集群中的所有锁服务器重新启动,或者在锁服务器集群原来的主锁服务器出现故障时,执行以下S401至S406中确定主锁服务器的操作。
S401.第一锁服务器获取事务协调器列表。
第一锁服务器是锁服务器集群通过预设算法(例如raft算法或者paxos算法等共识算法)选出的候选主锁服务器,第一锁服务器在被选举为候选主锁服务器后,获取该锁服务器集群在将第一锁服务器选举为候选主锁服务器之前的事务协调器列表,并获取事务协调器列表中包括的事务协调器的事务协调器数据。其中,事务协调器列表是由第二锁服务器同步至第一锁服务器的,第二锁服务器是第一锁服务器在被选举为候选主锁服务器之前的主锁服务器,事务协调器数据包括事务协调器列表中每个事务协调器的地址信息,事务协调器列表中包括上述事务协调器集群中部分或全部事务协调器,上述预设算法可以是raft算法,也可以是paxos算法等共识算法,本申请实施例不作限定。
S402.第一锁服务器向事务协调器列表中的每个事务协调器发送获取请求。
第一锁服务器获取到事务协调器列表中每个事务协调器的地址信息之后,向事务协调器列表中的每个事务协调器发送获取请求,该获取请求用于获取接收到获取请求的每个事务协调器中的锁数据。其中,每个事务协调器中的锁数据包括该事务协调器处理的一个或多个分布式事务的锁数据。
S403.每个接收到获取请求的事务协调器将各自的锁数据发送给第一锁服务器。
第一事务协调器接收到第一锁服务器的获取请求之后,获取第一事务协调器中锁数据,将该锁数据发送给第一锁服务器,其中,第一事务协调器是事务协调器列表中的任意一个事务协调器。
在一种可能的实现方式中,如图3中所示,为了提高锁服务器处理锁请求的效率,将多个锁服务器分为多个分区,每个分区包括一个主锁服务器与多个备用锁服务器,事务协调器在接收到锁数据之后,根据负载均衡策略选择其中的一个分区,将锁数据发送给该分区的主锁服务器实现加锁。则第一事务协调器在接收到获取请求之后,将第一事务协调器中之前发生给第一锁服务器的锁数据发送给第一锁服务器。
S404.第一锁服务器确定是否获取到事务协调器列表中每个事务协调器返回的锁数据,如果否,执行S405,如果是,执行S406。
S405.第一锁服务器没有获取到第二事务协调器中的锁数据时,向第三事务协调器发送获取请求,第一锁服务器接收到第三事务协调器发送的第二事务协调器的锁数据后,执行S406。
第三事务协调器是第二事务协调器的备节点,第三事务协调器中包括第二事务协调器中的锁数据,第一锁服务器在没有接收到第二事务协调器返回的锁数据时,向备份有第二事务协调器中锁数据的第三事务协调器发送获取请求,以获取第二事务协调器中包括的锁数据,第一锁服务器接收到第三事务协调器发送的锁数据后,执行S406。其中,第二事务协调器是事务协调器列表中的任意一个事务协调器。
S406.第一锁服务器获取到事务协调器列表中每个事务协调器的锁数据后,通知事务协调器集群中每个事务协调器其为主锁服务器。
第一锁服务器在获取到事务协调器列表中每个事务协调器发送的锁数据后,在第一锁服务器的内存中构建全量锁数据,全量锁数据包括事务协调器列表中每个事务协调器包括的锁数据。
第一锁服务器获取到事务协调器列表中每个事务协调器的锁数据后,向事务协调器集群中的每个事务协调器发送第一指示消息,该第一指示消息用于通知每个事务协调器第一锁服务器为锁服务器集群中的主锁服务器。主锁服务器用于处理事务协调器集群中每个事务协调器的加锁请求、放锁请求和查锁请求,协调服务器集群中每个事务协调器在需要进行加锁、放锁或者查锁时,将加锁请求、放锁请求或者查锁请求发送给该主锁服务器。
需要说明的是,如果上述第一锁服务器没有成功获取到事务协调器列表中每个事务协调器中的锁数据,则第一锁服务器不能得到上述全量锁数据,为防止第一锁服务器在接收到事务协调器发送的加锁请求、放锁请求或者查锁请求时出现错误,锁服务器集群会重新进行选举,根据上述预设算法重新选举该锁服务器集群的候选主锁服务器,例如将锁服务器集群中的第二锁服务器选举为候选主锁服务器,候选主锁服务器再根据上述S401至S406中的方法获取锁数据以确定是否能够成为主锁服务器。
在一种可能的实现方式中,在第一锁服务器成为主锁服务器之后,第一锁服务器会以预设时间间隔向其他锁服务器发送心跳包,任一锁服务器在第一预设时长内没有接收到第一锁服务器发送的心跳包,该任一锁服务器会向其他锁服务器发送选举请求以重新发起选举,锁服务器集群中的多个锁服务器再根据上述预设算法重新选举该分区锁服务器集群的候选主锁服务器,例如将锁服务器集群中的第二锁服务器选举为候选主锁服务器,第二锁服务器再根据上述S401至S406中的方法获取锁数据以确定是否能够成为主锁服务器,其中,上述第一预设时长大于预设时间间隔。
采用本申请实施例中的方法,通过在分布式系统中使用锁服务器集群代替Redis或者数据库,每个锁服务器集群包括一个主锁服务器与多个备用锁服务器,每个锁服务器集群中通过主锁服务器处理系统中的加锁请求、放锁请求与查锁请求等,将加锁或者放锁后的锁数据存放在主锁服务器的存储区域例如内存中,无需对锁数据进行备份,因此无需每次在执行加锁操作或者放锁操作后,更新备用节点中的锁数据,能够降低分布式事务处理过程中的性能消耗,同时由于不用每次加锁或者放锁后,再更新备用节点中的锁数据之后才向数据库服务器返回加锁结果或者放锁结果,因此能够降低分布式事务处理过程中的时延,降低事务锁的持有时间,提高事务处理效率。并且主锁服务器中维护有事务协调器列表,该事务协调器列表记录有主锁服务器所保存的锁数据所属的事务协调器,主锁服务器每次更新事务协调器列表之后,将更新后的事务协调器列表同步给备用锁服务器,以使锁服务器集群在主锁服务器出现故障时,新选举出的主锁服务器能够根据事务协调器列表从事务协调器中获取锁数据,快速恢复出现故障时主锁服务器中的全量锁数据。
在根据上述方法确定一个锁服务器集群中的主锁服务器之后,由主锁服务器处理事务协调器发送的加锁请求、放锁请求和查锁请求。以上述第一锁服务器为分区中的主锁服务器为例,介绍上述本申请实施例提供的锁请求处理方法。如图5所示,图5是本申请实施例提供的一种锁请求处理方法流程示意图。
S501.第一锁服务器获取第一事务协调器发送的锁请求,判断锁请求的类型,如果是加锁请求,执行S502,如果是放锁请求,执行S506,如果是查锁请求,执行S507。
其中,锁请求的类型包括加锁请求、放锁请求与查锁请求,锁请求包括上述锁数据。加锁请求用于指示第一锁服务器进行加锁操作,加锁操作是指保存锁请求中的锁数据,其他事务需要操作锁数据所指示的数据库中的数据时,同样也会对该数据进行加锁,如果锁服务器中已经存在该锁数据,则其他事务加锁失败,不能对该数据进行操作,从而防止并发事务对同一行数据进行操作时产生冲突;放锁请求用于指示第一锁服务器进行放锁操作,放锁操作是指删除锁服务器中锁数据。
S502.在锁请求是加锁请求的情况下,第一锁服务器获取事务协调器列表,判断第一事务协调器是否在事务协调器列表中,若第一事务协调器不在事务协调器列表中,执行S503,若第一事务协调器在事务协调器列表中,执行S505。
事务协调器列表中包括各个事务协调器的标识,例如事务协调器的网际互联协议(internet protocol,IP)地址,第一锁服务器根据发送加锁请求的第一事务协调器的标识与事务协调器列表中的标识进行匹配。如果事务协调器列表中没有第一事务协调器的标识,则确定第一事务协调器不在事务协调器列表中,执行S503中的操作;如果事务协调器列表中有第一事务协调器的标识,则确定第一事务协调器在事务协调器列表中,执行S505中的操作。
S503.第一锁服务器将第一事务协调器的标识加入事务协调器列表,得到更新后的事务协调器列表,将更新后的事务协调器列表同步给锁服务器集群中其他锁服务器,如果没有将更新后的事务协调器列表成功同步给其他锁服务器中预设比例的锁服务器,则执行S504,如果将更新后的事务协调器列表成功同步给分区中其他锁服务器中预设比例的锁服务器,则执行S505。
第一锁服务器将第一事务协调器的标识加入事务协调器列表得到更新后的事务协调器列表之后,将更新后的事务协调器列表发送给其他锁服务器。如果第一锁服务器没有接收到上述其他锁服务器中预设比例的锁服务器返回的确认消息,第一锁服务器确定没有将更新后的事务协调器列表成功同步其他锁服务器,则第一锁服务器执行S504中的操作;如果第一锁服务器接收到其他锁服务器中大于等于预设比例的锁服务器返回的确认消息,第一锁服务器确认已经将更新后的事务协调器列表成功同步给其他锁服务器,则第一锁服务器执行S505中的操作。
S504.第一锁服务器确认没有将更新后的事务协调器列表成功同步给其他锁服务器中预设比例的锁服务器,确定锁请求的结果为加锁失败,执行S508返回锁请求的执行结果。
在第一锁服务器接收加锁请求但没有将更新后得到的更新后的事务协调器列表成功同步给其他锁服务器的情况下,不执行该加锁操作并向发送该加锁请求的事务协调器发送加锁失败的返回消息。同时将更新后的事务协调器列表中的第一事务协调器的标识删除。
在一种可能的实现方式中,上述预设比例可以为1,此时第一锁服务器如果没有将更新后的事务协调器列表成功同步给所有其他锁服务器,则确定加锁失败,从而避免第一锁服务器在出现故障时,新选举出的主锁服务器中的事务协调器列表没有更新导致获取的锁数据不完整。
S505.第一锁服务器执行加锁操作,如果加锁成功,确定锁请求的结果为加锁成功,如果加锁失败,确定锁请求的结果为加锁失败,执行S508返回锁请求的执行结果。
第一锁服务器在确定将更新后的事务协调器列表同步给分区内其他锁服务器中预设比例的锁服务器之后,在全量锁数据中查找是否存在锁请求中的key,如果不存在,则执行加锁请求,将该锁请求中的锁数据保存到锁服务器的存储区域中;如果存在锁请求中的key,则表示存在该key对应的锁数据,再对比锁请求中锁数据的value与第一锁服务器中该key对一个的value,如果value相同,则表示锁请求所要加的锁已经存在,如果value不同,则表示有另外一个事务对该数据进行了加锁,该锁请求加锁失败。
S506.在锁请求是放锁请求的情况下,第一锁服务器将key对应的锁数据从存储区域中删除,执行S508返回锁请求的执行结果。
S507.在锁请求是查锁请求的情况下,第一锁服务器查询存储区域中是否存在上述key对应的锁数据,执行S508返回锁请求的执行结果。
S508.第一锁服务器向第一事务协调器返回锁请求的执行结果。
在一种可能的实现方式中,如果一个事务协调器申请加的锁已全部释放,且该事务协调器在第二预设时长内没有向主锁服务器发送新的加锁请求,则第一锁服务器将该事务协调器的标识从事务协调器列表中删除。
需要说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本发明的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
上文中结合图1至图5详细描述了本申请实施例所提供的锁请求的处理方法,下面将结合图6与图7,描述本申请实施例所提供的分布式事务处理装置及计算设备。
图6是本申请实施例提供的一种分布式事务处理装置的示意图,该分布式事务处理装置600用于上述分布式系统中锁服务器集群中的任一锁服务器,分布式系统包括锁服务器集群和事务协调器集群,事务协调器集群中的事务协调器用于控制分布式事务的处理过程,分布式事务的处理过程包括分布式事务涉及的数据库的锁操作,包括通信单元610与处理单元620,其中,
通信单元610,用于向事务协调器列表中的每个事务协调器发送锁数据的获取请求;
处理单元620,用于在第一锁服务器获取到事务协调器列表中每个事务协调器发送的锁数据后,对事务协调器集群中的事务协调器发送的锁请求进行处理。其中,第一锁服务器是锁服务器集群中的任一锁服务器。
应理解的是,本申请实施例的处理单元620可以通过中央处理器(centralprocessing unit,CPU)实现,也可以通过专用集成电路(application-specificintegrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。也可以通过软件实现图4和图5中所示的分布式事务处理方法时,分布式事务处理装置600及其各个单元也可以为软件模块。
具体的,上述分布式事务处理装置600实现对分布式事务处理的操作可参照上述方法实施例图4和图5中第一锁服务器所执行方法的操作步骤,在此不再具体描述。
图7是本申请实施例提供的一种计算设备的结构示意图,该计算设备700包括:处理器710、通信接口720以及存储器730,处理器710、通信接口720以及存储器730通过总线740相互连接,其中,该处理器710用于调用存储器730中存储的程序代码执行上述图4和图5中关于第一锁服务器执行的操作。
处理器710可以有多种具体实现形式,例如处理器710可以为中央处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)与张量处理器(tensor processing unit,TPU)等处理器中任意一种或多种的组合,处理器710还可以是单核处理器或多核处理器。处理器710可以由CPU和硬件芯片的组合上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器710也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signalprocessor,DSP)等。
通信接口720可以为有线接口或无线接口,用于与其他模块或设备进行通信,例如从事务协调器获取加锁请求、同步事务协调器列表等。有线接口可以是以太接口、控制器局域网络(controller area network,CAN)接口或局域互联网络(local interconnectnetwork,LIN)接口,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器730包括非易失性存储器和易失性存储器,例如,非易失性存储器只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),存储器730可用于存储程序代码和数据,以便于处理器710调用存储器730中存储的程序代码执行上述方法实施例中实现上述图4或图5中由第一锁服务器的操作步骤。此外,计算设备700可能包含相比于图7展示的更多或者更少的组件,或者有不同的组件配置方式。
总线740可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,计算设备700还可以包括输入/输出接口750,输入/输出接口750连接有输入/输出设备,用于接收输入的信息,输出操作结果。
应理解,本申请实施例的计算设备700可对应于上述实施例中的分布式事务处理装置600,并可执行上述方法实施例中分布式事务处理装置或第一锁服务器执行的操作,在此不再赘述。
本申请实施例还提供一种非瞬态计算机存储介质,计算机存储介质中存储有计算机程序指令,当其在处理器上运行时,可以实现上述方法实施例中的方法步骤,计算机存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例的具体操作,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机程序指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质、或者半导体介质,半导体介质可以是固态硬盘。
以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (22)
1.一种分布式事务处理方法,其特征在于,所述方法应用于分布式系统,所述分布式系统包括锁服务器集群和事务协调器集群,所述事务协调器集群中的事务协调器用于控制分布式事务的处理过程,所述分布式事务的处理过程包括所述分布式事务涉及的数据库的锁操作,所述方法包括:
所述锁服务器集群中的第一锁服务器根据事务协调器列表,向所述事务协调器列表中的每个事务协调器发送锁数据的获取请求;
若所述第一锁服务器获取到所述事务协调器列表中每个事务协调器发送的锁数据,所述第一锁服务器所述事务协调器集群中的事务协调器发送的锁请求进行处理。
2.根据权利要求1所述的方法,其特征在于,所述事务协调器列表是由第二锁服务器同步至所述第一锁服务器的,所述事务协调器列表记录了进行锁操作活跃的事务协调器,所述第二锁服务器是所述第一锁服务器向所述事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,对所述事务协调器集群中的事务协调器发送的锁请求进行处理的主锁服务器。
3.根据权利要求1所述的方法,其特征在于,所述第一锁服务器对所述事务协调器集群中的事务协调器发送的锁请求进行处理,包括:
所述第一锁服务器接收事务协调器集群中第一事务协调器发送的加锁请求;
当所述事务协调器列表中不包括所述第一事务协调器的标识时,所述第一锁服务器将所述第一事务协调器的标识加入所述事务协调器列表,得到更新后的事务协调器列表;
所述第一锁服务器将所述更新后的事务协调器列表同步给所述锁服务器集群中的其他锁服务器;
所述第一锁服务器在确认将所述更新后的事务协调器列表成功同步给所述其他锁服务器中预设比例的锁服务器的情况下,根据所述加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至所述第一锁服务器的存储区域。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述第一锁服务器在确认没有将所述更新后的事务协调器列表同步给所述其他锁服务器中预设比例的锁服务器的情况下,向所述第一事务协调器发送加锁失败的消息,并删除所述更新后的事务协调器列表中所述第一事务协调器的标识。
5.根据权利要求3所述的方法,其特征在于,当所述事务协调器列表中包括所述第一事务协调器的标识时,所述第一锁服务器根据所述加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至所述第一锁服务器的存储区域。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述第一锁服务器对所述事务协调器集群中的事务协调器发送的锁请求进行处理之前,还包括:
所述第一锁服务器向所述事务协调器集群中的事务协调器发送第一指示消息,所述第一指示消息指示所述事务协调器集群中的事务协调器将锁请求发送给所述第一锁服务器。
7.根据权利要求2所述的方法,其特征在于,所述向所述事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,所述方法还包括:
所述第一锁服务器在预设时长内没有接收到所述第二锁服务器发送的心跳包。
8.根据权利要求6所述的方法,其特征在于,所述第一锁服务器是根据预设算法从所述锁服务器集群中选取的候选主锁服务器。
9.根据权利要求1至8所述的方法,其特征在于,所述方法还包括:
所述第一锁服务器在没有接收到所述事务协调器列表中第二事务协调器发送的锁数据时,向所述事务协调器列表中第三事务协调器发送所述获取请求,所述第三事务协调器中包括所述第二事务协调器中锁数据的备份;
所述第一锁服务器接收所述第三事务协调器发送的所述第二事务协调器中包括的锁数据。
10.一种分布式事务处理系统,其特征在于,所述分布式系统包括锁服务器集群和事务协调器集群,所述事务协调器集群中的事务协调器用于控制分布式事务的处理过程,所述分布式事务的处理过程包括所述分布式事务涉及的数据库的锁操作,其中,
所述锁服务器集群中的第一锁服务器,用于根据事务协调器列表,向所述事务协调器列表中的每个事务协调器发送锁数据的获取请求;
所述事务协调器列表中的每个事务协调器,用于将各自的保存的锁数据发送给所述第一锁服务器;
所述第一锁服务器,还用于在获取到所述事务协调器列表中每个事务协调器发送的锁数据后,对所述事务协调器集群中的事务协调器发送的锁请求进行处理。
11.根据权利要求10所述的系统,其特征在于,所述事务协调器列表是由第二锁服务器同步至所述第一锁服务器的,所述事务协调器列表记录了进行锁操作活跃的事务协调器,所述第二锁服务器是所述第一锁服务器向所述事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,对所述事务协调器集群中的事务协调器发送的锁请求进行处理的主锁服务器。
12.根据权利要求10所述的系统,其特征在于,所述第一锁服务器还用于在获取到所述事务协调器列表中每个事务协调器发送的锁数据后,对所述事务协调器集群中的事务协调器发送的锁请求进行处理,具体包括:
接收事务协调器集群中第一事务协调器发送的加锁请求;
当所述事务协调器列表中不包括所述第一事务协调器的标识时,将所述第一事务协调器的标识加入所述事务协调器列表,得到更新后的事务协调器列表;
将所述更新后的事务协调器列表同步给所述锁服务器集群中的其他锁服务器;
在确认将所述更新后的事务协调器列表成功同步给所述其他锁服务器中预设比例的锁服务器的情况下,根据所述加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至所述第一锁服务器的存储区域。
13.根据权利要求12所述的系统,其特征在于,所述第一锁服务器还用于:
在确认没有将所述更新后的事务协调器列表同步给所述其他锁服务器中预设比例的锁服务器的情况下,向所述第一事务协调器发送加锁失败的消息,并删除所述更新后的事务协调器列表中所述第一事务协调器的标识。
14.根据权利要求12所述的系统,其特征在于,所述第一锁服务器还用于当所述事务协调器列表中包括所述第一事务协调器的标识时,根据所述加锁请求执行加锁操作,并将执行加锁操作后的锁数据保存至所述第一锁服务器的存储区域。
15.根据权利要求10至14任一项所述的系统,其特征在于,所述第一锁服务器对所述事务协调器集群中的事务协调器发送的锁请求进行处理之前,还用于:
向所述事务协调器集群中的事务协调器发送第一指示消息,所述第一指示消息指示所述事务协调器将锁请求发送给所述第一锁服务器。
16.根据权利要求11所述的系统,其特征在于,所述第一锁服务器向所述事务协调器列表中的每个事务协调器发送锁数据的获取请求之前,还包括:
所述第一锁服务器在预设时长内没有接收到所述第二锁服务器发送的心跳包。
17.根据权利要求16所述的系统,其特征在于,所述第一锁服务器是根据预设算法从所述锁服务器集群中选取的候选主锁服务器。
18.根据权利要求10至17所述的系统,其特征在于,所述第一锁服务器还用于:
在没有接收到所述事务协调器列表中第二事务协调器发送的锁数据时,向所述事务协调器列表中第三事务协调器发送所述获取请求,所述第三事务协调器中包括所述第二事务协调器中锁数据的备份;
接收所述第三事务协调器发送的所述第二事务协调器中包括的锁数据。
19.一种分布式事务处理装置,其特征在于,所述装置包括用于执行如权利要求1至9任一项方法的单元。
20.一种计算设备,其特征在于,包括处理器和存储器,所述存储器用于存储指令,所述处理器用于执行所述指令,当所述处理器执行所述指令时,执行如权利要求1至9任一项所述的方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在网络设备上运行时执行如权利要求1至9任一项所述的方法。
22.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,在被计算设备执行时,计算设备执行如权利要求1至9任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110342631.1A CN115145715A (zh) | 2021-03-30 | 2021-03-30 | 一种分布式事务处理方法、系统及相关设备 |
PCT/CN2022/081655 WO2022206426A1 (zh) | 2021-03-30 | 2022-03-18 | 一种分布式事务处理方法、系统及相关设备 |
EP22778609.2A EP4293513A1 (en) | 2021-03-30 | 2022-03-18 | Distributed transaction processing method and system, and related device |
US18/474,695 US20240013218A1 (en) | 2021-03-30 | 2023-09-26 | Distributed Transaction Processing Method, System, and Related Device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110342631.1A CN115145715A (zh) | 2021-03-30 | 2021-03-30 | 一种分布式事务处理方法、系统及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115145715A true CN115145715A (zh) | 2022-10-04 |
Family
ID=83404134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110342631.1A Pending CN115145715A (zh) | 2021-03-30 | 2021-03-30 | 一种分布式事务处理方法、系统及相关设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4293513A1 (zh) |
CN (1) | CN115145715A (zh) |
WO (1) | WO2022206426A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539642B (zh) * | 2024-01-09 | 2024-04-02 | 上海晨钦信息科技服务有限公司 | 一种信用卡分布式调度平台及调度方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8479044B2 (en) * | 2009-08-28 | 2013-07-02 | International Business Machines Corporation | Method for determining a state associated with a transaction |
CN105426271B (zh) * | 2015-12-22 | 2018-09-21 | 华为技术有限公司 | 对分布式存储系统的锁管理的方法和装置 |
CN107797849B (zh) * | 2016-08-30 | 2021-06-08 | 阿里巴巴集团控股有限公司 | 分布式事务处理的方法、装置与系统 |
CN112039970B (zh) * | 2020-08-25 | 2023-04-18 | 北京思特奇信息技术股份有限公司 | 一种分布式业务锁服务方法、服务端、系统及存储介质 |
CN112148394A (zh) * | 2020-09-08 | 2020-12-29 | 上加下信息技术成都有限公司 | 一种分布式事务协调方法、装置及电子设备 |
-
2021
- 2021-03-30 CN CN202110342631.1A patent/CN115145715A/zh active Pending
-
2022
- 2022-03-18 EP EP22778609.2A patent/EP4293513A1/en active Pending
- 2022-03-18 WO PCT/CN2022/081655 patent/WO2022206426A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022206426A1 (zh) | 2022-10-06 |
EP4293513A1 (en) | 2023-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111480157B (zh) | 用于在区块链网络中添加节点的系统和方法 | |
CN111091429A (zh) | 电子票据标识分配方法及装置、电子票据生成系统 | |
WO2016177130A1 (zh) | 通讯节点的选择方法及装置 | |
CN111049696B (zh) | 用于区块链系统的节点管理的方法、节点和计算设备 | |
JP3798661B2 (ja) | クラスタ化コンピュータ・システム内のグループのメンバによって受信されたマージ要求を処理する方法 | |
CN111061769A (zh) | 一种区块链系统的共识方法及相关设备 | |
CN111475576A (zh) | 基于区块链的分布式数据库存储方法及系统 | |
US9679266B2 (en) | Systems and methods for intelligent batch processing of business events | |
WO2022134797A1 (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN111400112A (zh) | 分布式集群的存储系统的写入方法、装置及可读存储介质 | |
CN109639773A (zh) | 一种动态构建的分布式数据集群控制系统及其方法 | |
CN110971702A (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
CN110635941A (zh) | 一种数据库节点集群故障迁移方法与装置 | |
CN112015595B (zh) | 主从数据库的切换方法、计算设备及存储介质 | |
CN113064764A (zh) | 在区块链系统中执行区块的方法及装置 | |
WO2022206426A1 (zh) | 一种分布式事务处理方法、系统及相关设备 | |
CN113190619B (zh) | 分布式kv数据库的数据读写方法、系统、设备和介质 | |
CN110830582A (zh) | 一种基于服务器集群选主方法和装置 | |
CN113157450B (zh) | 在区块链系统中执行区块的方法及装置 | |
CN114020279A (zh) | 应用软件分布式部署方法、系统、终端及存储介质 | |
CN111291063B (zh) | 主备副本选举方法、系统、计算机设备和存储介质 | |
CN111143040A (zh) | 事务处理方法、装置、系统及存储介质 | |
US20240013218A1 (en) | Distributed Transaction Processing Method, System, and Related Device | |
CN115022307A (zh) | 一种文件下载方法及装置、存储介质及电子设备 | |
CN111338848B (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 |