The State Machine Approach
The preceding intuitive discussion implies a simple technique for implementing a fault-tolerant service in terms of a State Machine:
- Place copies of the State Machine on multiple, independent servers.
- Receive client requests, interpreted as Inputs to the State Machine.
- Choose an ordering for the Inputs.
- Execute Inputs in the chosen order on each server.
- Respond to clients with the Output from the State Machine.
- Monitor replicas for differences in State or Output.
The remainder of this article develops the details of this technique.
- Step 1 and 2 are outside the scope of this article.
- Step 3 is the critical operation, see Ordering Inputs.
- Step 4 is covered by the State Machine Definition.
- Step 5, see Ordering Outputs.
- Step 6, see Auditing and Failure Detection.
The appendix contains discussion on typical extensions used in real-world systems such as Logging, Checkpoints, Reconfiguration, and State Transfer.
Read more about this topic: State Machine Replication
Famous quotes containing the words state, machine and/or approach:
“From this elevation, just on the skirts of the clouds, we could overlook the country, west and south, for a hundred miles. There it was, the State of Maine, which we had seen on the map, but not much like that,immeasurable forest for the sun to shine on, the eastern stuff we hear of in Massachusetts. No clearing, no house. It did not look as if a solitary traveler had cut so much as a walking-stick there.”
—Henry David Thoreau (18171862)
“Man is a shrewd inventor, and is ever taking the hint of a new machine from his own structure, adapting some secret of his own anatomy in iron, wood, and leather, to some required function in the work of the world.”
—Ralph Waldo Emerson (18031882)
“We have learned the simple truth, as Emerson said, that the only way to have a friend is to be one. We can gain no lasting peace if we approach it with suspicion or mistrust or with fear.”
—Franklin D. Roosevelt (18821945)