Non-blocking commit protocol systems and methods
First Claim
1. A distributed system configured to resolve an atomic transaction comprising multiple transactions among a set of parties within the distributed system, the distributed system comprising:
- a plurality of participants, each of the plurality of participants residing on a node of a computer system and in communication with each of the other of the plurality of participants; and
a coordinator residing on a node of the computer system and in communication with each of the plurality of participants, wherein at least one of the plurality of participants resides on the same node of the computer system as the coordinator;
wherein the coordinator is configured to;
receive one or more prepared messages from one or more of the plurality of participants, each prepared message indicating whether the sending participant can commit a transaction of the atomic transaction;
decide to either commit or abort the atomic transaction based on the received prepared messages; and
send the decision to either commit or abort the atomic transaction to two or more of the plurality of participants;
wherein each of the plurality of participants is configured to;
receive a prepare message, the prepare message indicating that the participant should commit a transaction of the atomic transaction;
determine whether the participant can commit the transaction;
send a prepared message to the coordinator, the prepared message indicating whether the participant can commit the transaction;
receive decision messages from two or more of the plurality of participants which are different than the coordinator, each decision message indicating that the sending participant has either committed or aborted a transaction of the atomic transaction;
if communication with the coordinator is available, receive the decision to either commit or abort the atomic transaction from the coordinator;
if the decision is received from the coordinator, decide to either commit or abort the transaction based on the received decision;
if communication with the coordinator is not available and the decision was not received from the coordinator, decide to either commit or abort the transaction based on the received decision messages from the two or more of the plurality of participants which are different than the coordinator; and
send the participant'"'"'s decision to either commit or abort the transaction to each of the other of the plurality of participants with which communication is available.
12 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are provided for atomic single-failure non-blocking and double-failure non-blocking commitment protocols. The protocols may be used for a variety of transactions that involve two or more parties including an initiator of the transaction, a coordinator of the transaction, and one or more participants in the transaction. The participants notify the coordinator when they are prepared to commit the transaction. The coordinator then determines when to commit or abort the transaction. If the coordinator disconnects from one or more of the participants, the participants can resolve the transaction independently. Some embodiments also include a distributor that interacts with the coordinator and the participants to resolve the transaction. If one or more parties become disconnected from the coordinator or the distributor, the participants vote to determine whether to receive instructions from the coordinator or the distributor.
427 Citations
14 Claims
-
1. A distributed system configured to resolve an atomic transaction comprising multiple transactions among a set of parties within the distributed system, the distributed system comprising:
-
a plurality of participants, each of the plurality of participants residing on a node of a computer system and in communication with each of the other of the plurality of participants; and a coordinator residing on a node of the computer system and in communication with each of the plurality of participants, wherein at least one of the plurality of participants resides on the same node of the computer system as the coordinator; wherein the coordinator is configured to; receive one or more prepared messages from one or more of the plurality of participants, each prepared message indicating whether the sending participant can commit a transaction of the atomic transaction; decide to either commit or abort the atomic transaction based on the received prepared messages; and send the decision to either commit or abort the atomic transaction to two or more of the plurality of participants; wherein each of the plurality of participants is configured to; receive a prepare message, the prepare message indicating that the participant should commit a transaction of the atomic transaction; determine whether the participant can commit the transaction; send a prepared message to the coordinator, the prepared message indicating whether the participant can commit the transaction; receive decision messages from two or more of the plurality of participants which are different than the coordinator, each decision message indicating that the sending participant has either committed or aborted a transaction of the atomic transaction; if communication with the coordinator is available, receive the decision to either commit or abort the atomic transaction from the coordinator; if the decision is received from the coordinator, decide to either commit or abort the transaction based on the received decision; if communication with the coordinator is not available and the decision was not received from the coordinator, decide to either commit or abort the transaction based on the received decision messages from the two or more of the plurality of participants which are different than the coordinator; and send the participant'"'"'s decision to either commit or abort the transaction to each of the other of the plurality of participants with which communication is available. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of resolving an atomic transaction comprising multiple transactions among a plurality of participants, each participant residing on a node of a distributed computer system, the method comprising:
-
sending, by the one or more computer processors of each of the plurality of participants, a prepared message to a coordinator, the coordinator residing on the same node as at least one of the plurality of participants, the prepared message indicating that the sending participant is prepared to commit a transaction of the atomic transaction; receiving, by each of a first subset of two or more of the plurality of participants which are different than the coordinator, a decision from the coordinator to either commit or abort the atomic transaction; determining, by each of a second subset of one or more of the plurality of participants, that communication with the coordinator is not available and that no decision from the coordinator was received; deciding, by the one or more computer processors of each of the first subset of the plurality of participants, to either commit or abort the transaction; sending, by the one or more computer processors of two or more of the first subset of the plurality of participants, the decision by the sending participant to either commit or abort the transaction to each of the second subset of the plurality of participants with which communication is available; receiving, by each of the second subset of the plurality of participants, a decision to either commit or abort the transaction from two or more of the first subset of the plurality of participants; and deciding, by the one or more computer processors of each of the second subset of the plurality of participants, to either commit or abort the transaction based on the received decisions from the two or more of the first subset of the plurality of participants. - View Dependent Claims (12, 13, 14)
-
Specification