← Back to Patent Explorer
US5261085A Expired / Lapsed US ⏱️ 0.0 years remaining

Fault-tolerant system and method for implementing a distributed state machine

Assignee: Hewlett Packard Development Co LP
•
Filing: 1992-07-13
•
Granted: 1993-11-09
•
Expires: 2012-07-13
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract System and method for implementing a distributed state machine in which consistency is maintained despite the failure of any number of processes and communication paths. This machine and method are suitable for systems with modest reliability requirements that do not justify the expense of an extremely fault tolerant, real-time implementation. One process in a network of server processes is chosen as the leader, and that leader is responsible for broadcasting state machine commands to the other processes. The commands are numbered consecutively, and they are recorded in stable storage by the processes. Each command is broadcast through a uniquely numbered ballot or referendum, and each process participating in a ballot may either vote to accept the command or not vote. To be issued, a command must be voted for by a majority of the processes in the system. Each issued command is stored by each of the processes in the majority set which voted for it, and since any two majority sets must have at least one process in common, any command which has been issued will appear in the store of at least one process of any majority set participating in a subsequent ballot. When a new leader is chosen, messages are exchanged between the new leader and the other processes in the system to ensure that each of the processes has all of the commands that the other processes have. As part of this procedure, any command for which one of the processes has previously voted but does not have a command number is broadcast as a proposed command in a new ballot.

Inventors

  • 👤 Leslie B. Lamport

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 19:29
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/16; G06F11/18; G06F11/182; G06F11/14; G06F11/1402; G06F11/1415; G06F11/142; G06F11/1425; G06F11/1658; G06F11/187

Claims Analysis

Total Claims: 28
Claim 1
Independent Claim 144 words
In a data processing system utilizing a distributed state machine: a network of server processes having commands in stable storage, one of said processes being designated as a leader for sending commands to the other processes, means for exchanging messages between the leader and the other processes to ensure that each of the processes has all of the commands that the other processes have, means for sending a proposed command from the leader to the other processes, means for sending messages from the other processes to the leader to indicate acceptance of the proposed command, means active upon receipt of acceptance messages from a majority of the processes in the system for sending a message to the processes in the majority to declare the command as issued, and means for recording the issued command in the stable storage of each process in the majority.
Claim 2
Dependent Claim 144 words
In a data processing system utilizing a distributed state machine: a network of server processes having commands in stable storage, one of said processes being designated as a leader for sending commands to the other processes, means for exchanging messages between the leader and the other processes to ensure that each of the processes has all of the commands that the other processes have, means for sending a proposed command from the leader to the other processes, means for sending messages from the other processes to the leader to indicate acceptance of the proposed command, means active upon receipt of acceptance messages from a majority of the processes in the system for sending a message to the processes in the majority to declare the command as issued, and means for recording the issued command in the stable storage of each process in the majority.
Claim 3
Dependent Claim 115 words
The system of claim 1 wherein the commands are numbered consecutively, and the means for exchanging messages includes means for sending an initial message from the leader to the other processes indicating the highest command number through which the leader has all previously issued commands, and means responsive to the initial message for sending reply messages from the other processes to the leader indicating any commands the other processes have with numbers greater than the leader's highest number, any command numbers the other processes do not have which are less than or equal to the leader's highest number, and any commands for which the other processes have previously voted but do not have command numbers.
Claim 4
Dependent Claim 50 words
The system of claim 1 including means for determining the order in which the commands are proposed, means for numbering the commands consecutively in their order of issuance, and means for conditioning the processes to give no effect to a higher numbered command proposed prior to a lower numbered command.
Claim 5
Dependent Claim 34 words
The system of claim 1 including means for preventing the leader from sending a proposed command until all previously proposed commands up to a predetermined number prior to the proposed command have been issued.
Claim 6
Dependent Claim 333 words
In a data processing system utilizing a distributed state machine: a network of server processes having consecutively numbered commands in stable storage, one of said processes being designated as a leader for sending proposed commands to the other processes in consecutively numbered ballots, means for sending an initial message from the leader to the other processes indicating the highest command number through which the leader has all previously issued commands, means responsive to the initial message for sending reply messages from the other processes to the leader indicating (i) any commands the other processes have with numbers greater than the leader's highest number, (ii) any command numbers the other processes do not have which are less than or equal to the leader's highest number, and (iii) any commands for which the other processes have previously voted but do not have command numbers, means responsive to the receipt of reply messages from a majority of the processes in the system for conditioning the leader (i) to record in its stable storage any commands indicated by the other processes with numbers greater than the leader's highest number, (ii) to send the other processes any commands they have indicated they do not have, and (iii) to send a numbered ballot containing a proposed command which is either (a) the command for which one of the processes has most recently voted but does not have a command number or (b) a new command in the event that none of the processes has indicated a voted command without a number, means for conditioning the processes which receive the ballot to send a message to the leader if they vote to accept the command and to record their votes in stable storage, means active upon receipt of voting messages from a majority of the processes in the system for sending a message declaring the command as being issued, and means for recording the issued command in the stable storage of the processes in the majority which voted for it.
Claim 7
Dependent Claim 333 words
In a data processing system utilizing a distributed state machine: a network of server processes having consecutively numbered commands in stable storage, one of said processes being designated as a leader for sending proposed commands to the other processes in consecutively numbered ballots, means for sending an initial message from the leader to the other processes indicating the highest command number through which the leader has all previously issued commands, means responsive to the initial message for sending reply messages from the other processes to the leader indicating (i) any commands the other processes have with numbers greater than the leader's highest number, (ii) any command numbers the other processes do not have which are less than or equal to the leader's highest number, and (iii) any commands for which the other processes have previously voted but do not have command numbers, means responsive to the receipt of reply messages from a majority of the processes in the system for conditioning the leader (i) to record in its stable storage any commands indicated by the other processes with numbers greater than the leader's highest number, (ii) to send the other processes any commands they have indicated they do not have, and (iii) to send a numbered ballot containing a proposed command which is either (a) the command for which one of the processes has most recently voted but does not have a command number or (b) a new command in the event that none of the processes has indicated a voted command without a number, means for conditioning the processes which receive the ballot to send a message to the leader if they vote to accept the command and to record their votes in stable storage, means active upon receipt of voting messages from a majority of the processes in the system for sending a message declaring the command as being issued, and means for recording the issued command in the stable storage of the processes in the majority which voted for it.
Claim 8
Dependent Claim 39 words
The system of claim 5 including means for determining the order in which the commands are proposed, and means for conditioning the processes to give no effect to a higher numbered command proposed prior to a lower numbered command.
Claim 9
Dependent Claim 39 words
The system of claim 5 including means for preventing the leader from sending a ballot containing a newly proposed command until all previously proposed commands up to a predetermined number prior to the newly proposed command have been issued.
Claim 10
Dependent Claim 201 words
In a data processing system utilizing a distributed state machine: a network of server processes having commands in stable storage, one of said processes being designated as a leader for sending proposed commands to the other processes in ballots with unique numbers, means for defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, means for sending a message from the leader to the other processes in the majority set to indicate that a new ballot is coming, means for sending reply messages from the other processes in the majority set to the leader identifying the most recent ballots and commands for which they have voted, means responsive to the reply messages for sending a ballot to the processes in the majority set on the command identified as being the one most recently voted for in a previous ballot, means for sending messages from the other processes to the leader to vote for the proposed command, and means responsive to votes from the processes in the majority set for declaring the command as issued if all of the processes in the set vote for it.
Claim 11
Dependent Claim 201 words
In a data processing system utilizing a distributed state machine: a network of server processes having commands in stable storage, one of said processes being designated as a leader for sending proposed commands to the other processes in ballots with unique numbers, means for defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, means for sending a message from the leader to the other processes in the majority set to indicate that a new ballot is coming, means for sending reply messages from the other processes in the majority set to the leader identifying the most recent ballots and commands for which they have voted, means responsive to the reply messages for sending a ballot to the processes in the majority set on the command identified as being the one most recently voted for in a previous ballot, means for sending messages from the other processes to the leader to vote for the proposed command, and means responsive to votes from the processes in the majority set for declaring the command as issued if all of the processes in the set vote for it.
Claim 12
Dependent Claim 258 words
In a data processing system utilizing a distributed state machine: a network of server processes having consecutively numbered commands in stable storage, one of said processes being designated as a leader for sending proposed commands to the other processes in consecutively numbered ballots, means for defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, means for sending a message from the leader to the processes in the majority set indicating that a new ballot with a proposed ballot number is coming, means responsive to the new ballot message for sending reply messages from the other processes in the majority set to the leader indicating any commands for which the other processes have previously voted but do not have command numbers, means responsive to the reply messages for conditioning the leader to send a numbered ballot to the processes in the majority set containing as a proposed command the command for which one of the processes has most recently voted but does not have a command number, means for conditioning the processes which receive the ballot to send a message to the leader if they vote to accept the command and to record their votes in stable storage, means active upon receipt of voting messages from all of the processes in the majority set for sending a message declaring the command as being issued, and means for recording the issued command in the stable storage of the processes in the majority set.
Claim 13
Dependent Claim 258 words
In a data processing system utilizing a distributed state machine: a network of server processes having consecutively numbered commands in stable storage, one of said processes being designated as a leader for sending proposed commands to the other processes in consecutively numbered ballots, means for defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, means for sending a message from the leader to the processes in the majority set indicating that a new ballot with a proposed ballot number is coming, means responsive to the new ballot message for sending reply messages from the other processes in the majority set to the leader indicating any commands for which the other processes have previously voted but do not have command numbers, means responsive to the reply messages for conditioning the leader to send a numbered ballot to the processes in the majority set containing as a proposed command the command for which one of the processes has most recently voted but does not have a command number, means for conditioning the processes which receive the ballot to send a message to the leader if they vote to accept the command and to record their votes in stable storage, means active upon receipt of voting messages from all of the processes in the majority set for sending a message declaring the command as being issued, and means for recording the issued command in the stable storage of the processes in the majority set.
Claim 14
Dependent Claim 139 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having commands in stable storage, the steps of: designating one of the processes being as a leader for sending commands to the other processes, exchanging messages between the leader and the other processes to ensure that each of the processes has all of the commands that the other processes have, sending a proposed command from the leader to the other processes, sending messages from the other processes to the leader to indicate acceptance of the proposed command, upon receipt of acceptance messages from a majority of the processes in the system sending a message to the processes in the majority to declare the command as issued, and recording the issued command in the stable storage of each process in the majority.
Claim 15
Dependent Claim 139 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having commands in stable storage, the steps of: designating one of the processes being as a leader for sending commands to the other processes, exchanging messages between the leader and the other processes to ensure that each of the processes has all of the commands that the other processes have, sending a proposed command from the leader to the other processes, sending messages from the other processes to the leader to indicate acceptance of the proposed command, upon receipt of acceptance messages from a majority of the processes in the system sending a message to the processes in the majority to declare the command as issued, and recording the issued command in the stable storage of each process in the majority.
Claim 16
Dependent Claim 104 words
The method of claim 10 wherein the commands are numbered consecutively, and the messages are exchanged by sending a message from the leader to the other processes indicating the highest command number through which the leader has all previously issued commands, and sending reply messages from the other processes to the leader indicating any commands the other processes have with numbers greater than the leader's highest number, any command numbers the other processes do not have which are less than or equal to the leader's highest number, and any commands for which the other processes have previously voted but do not have command numbers.
Claim 17
Dependent Claim 47 words
The method of claim 10 including the steps of determining the order in which the commands are proposed, numbering the commands consecutively in their order of issuance, and conditioning the processes to give no effect to a higher numbered command proposed prior to a lower numbered command.
Claim 18
Dependent Claim 35 words
The system of claim 10 including the step of preventing the leader from sending a proposed command until all previously proposed commands up to a predetermined number prior to the proposed command have been issued.
Claim 19
Dependent Claim 307 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having consecutively numbered commands in stable storage, the steps of designating one of the processes as a leader for sending proposed commands to the other processes in consecutively numbered ballots, sending a message from the leader to the other processes indicating the highest command number through which the leader has all previously issued commands, sending reply messages from the other processes to the leader indicating (i) any commands the other processes have with numbers greater than the leader's highest number, (ii) any command numbers the other processes do not have which are less than or equal to the leader's highest number, and (iii) any commands for which the other processes have previously voted but do not have command numbers, upon receipt of reply messages from a majority of the processes in the system recording in the leader's stable storage any commands indicated by the other processes with numbers greater than the leader's highest number, sending the other processes any commands they have indicated they do not have, sending a numbered ballot containing a proposed command which is either (a) the command for which one of the processes has most recently voted but does not have a command number or (b) a new command in the event that none of the processes has indicated a voted command without a number, sending a message from each of the processes which receive the ballot if that process votes to accept the command, recording each such vote in the stable storage of the process, declaring the command as being issued upon receipt of voting messages from a majority of the processes in the system, and recording the issued command in the stable storage of the processes in the majority which voted for it.
Claim 20
Dependent Claim 307 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having consecutively numbered commands in stable storage, the steps of designating one of the processes as a leader for sending proposed commands to the other processes in consecutively numbered ballots, sending a message from the leader to the other processes indicating the highest command number through which the leader has all previously issued commands, sending reply messages from the other processes to the leader indicating (i) any commands the other processes have with numbers greater than the leader's highest number, (ii) any command numbers the other processes do not have which are less than or equal to the leader's highest number, and (iii) any commands for which the other processes have previously voted but do not have command numbers, upon receipt of reply messages from a majority of the processes in the system recording in the leader's stable storage any commands indicated by the other processes with numbers greater than the leader's highest number, sending the other processes any commands they have indicated they do not have, sending a numbered ballot containing a proposed command which is either (a) the command for which one of the processes has most recently voted but does not have a command number or (b) a new command in the event that none of the processes has indicated a voted command without a number, sending a message from each of the processes which receive the ballot if that process votes to accept the command, recording each such vote in the stable storage of the process, declaring the command as being issued upon receipt of voting messages from a majority of the processes in the system, and recording the issued command in the stable storage of the processes in the majority which voted for it.
Claim 21
Dependent Claim 38 words
The method of claim 14 including the steps of determining the order in which the commands are proposed, and conditioning the processes to give no effect to a higher numbered command proposed prior to a lower numbered command.
Claim 22
Dependent Claim 40 words
The method of claim 14 including the step of preventing the leader from sending a ballot containing a newly proposed command until all previously proposed commands up to a predetermined number prior to the newly proposed command have been issued.
Claim 23
Dependent Claim 185 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having commands in stable storage, the steps of: designating one of the processes as a leader for sending proposed commands to the other processes in ballots with unique numbers, defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, sending a message from the leader to the other processes in the majority set to indicate that a new ballot is coming, sending reply messages from the other processes in the majority set to the leader identifying the most recent ballots and commands for which they have voted, upon receipt of the reply messages sending a ballot to the processes in the majority set on the command identified as being the one most recently voted for in a previous ballot, sending messages from the other processes to the leader to vote for the proposed command, and declaring the command as issued if all of the processes in the set vote for it.
Claim 24
Dependent Claim 185 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having commands in stable storage, the steps of: designating one of the processes as a leader for sending proposed commands to the other processes in ballots with unique numbers, defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, sending a message from the leader to the other processes in the majority set to indicate that a new ballot is coming, sending reply messages from the other processes in the majority set to the leader identifying the most recent ballots and commands for which they have voted, upon receipt of the reply messages sending a ballot to the processes in the majority set on the command identified as being the one most recently voted for in a previous ballot, sending messages from the other processes to the leader to vote for the proposed command, and declaring the command as issued if all of the processes in the set vote for it.
Claim 25
Dependent Claim 239 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having consecutively numbered commands in stable storage, the steps of: designating one of the processes as a leader for sending proposed commands to the other processes in consecutively numbered ballots, defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, sending a message from the leader to the processes in the majority set indicating that a new ballot with a proposed ballot number is coming, sending reply messages from the other processes in the majority set to the leader in response to the new ballot message indicating any commands for which the other processes have previously voted but do not have command numbers, sending a numbered ballot to the processes in the majority set containing as a proposed command the command for which one of the processes has most recently voted but does not have a command number, sending messages from the processes which receive the ballot to the leader if they vote to accept the command, recording the votes of the processes in stable storage, sending a message declaring the command as being issued upon receipt of voting messages from all of the processes in the majority set, and recording the issued command in the stable storage of the processes in the majority set.
Claim 26
Dependent Claim 239 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having consecutively numbered commands in stable storage, the steps of: designating one of the processes as a leader for sending proposed commands to the other processes in consecutively numbered ballots, defining a majority set of the processes such that any two majority sets selected in a similar manner will have at least one process in common, sending a message from the leader to the processes in the majority set indicating that a new ballot with a proposed ballot number is coming, sending reply messages from the other processes in the majority set to the leader in response to the new ballot message indicating any commands for which the other processes have previously voted but do not have command numbers, sending a numbered ballot to the processes in the majority set containing as a proposed command the command for which one of the processes has most recently voted but does not have a command number, sending messages from the processes which receive the ballot to the leader if they vote to accept the command, recording the votes of the processes in stable storage, sending a message declaring the command as being issued upon receipt of voting messages from all of the processes in the majority set, and recording the issued command in the stable storage of the processes in the majority set.
Claim 27
Dependent Claim 165 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having commands in stable storage, the steps of: a. designating one of the processes being as a leader for sending commands to the other processes, b. exchanging messages between the leader and the other processes to ensure that each of the processes has all of the commands that the other processes have, c. sending a proposed command from the leader to the other processes, d. sending messages from the other processes to the leader to indicate acceptance of the proposed command, e. upon receipt of acceptance messages from a majority of the processes in the system, sending a message to the processes in the majority to declare the command as issued, f. recording the issued command in the stable storage of each process in the majority. g. repeating steps c-f for additional commands with the same leader and the same majority of processes participating in each repetition.
Claim 28
Dependent Claim 165 words
In a method of implementing a distributed system utilizing a state machine with a network of server processes having commands in stable storage, the steps of: a. designating one of the processes being as a leader for sending commands to the other processes, b. exchanging messages between the leader and the other processes to ensure that each of the processes has all of the commands that the other processes have, c. sending a proposed command from the leader to the other processes, d. sending messages from the other processes to the leader to indicate acceptance of the proposed command, e. upon receipt of acceptance messages from a majority of the processes in the system, sending a message to the processes in the majority to declare the command as issued, f. recording the issued command in the stable storage of each process in the majority. g. repeating steps c-f for additional commands with the same leader and the same majority of processes participating in each repetition.

References Cited (Backward Citations)

US4418396A Cited
US4532606A Cited
US4538241A Cited
US4694396A Cited
US4703481A Cited
US4789986A Cited
US4799140A Cited
US4914657A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1996-11-08 1997-05-10 1997-11-09 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2000-11-08 2001-05-10 2001-11-09 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2004-11-08 2005-05-10 2005-11-09 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag