Consider a system that has multiple processes working against a replicated, distributed data store. The general organization of a logical data store, physically distributed and replicated across multiple processes, is shown here:
There are a few characteristics to consider:
- Each of the processes might be multiple instances of the same service, or it could be different applications trying access the data (not recommended!).
- Clients can be mobile. For example, in the preceding diagram, sometimes Client_x speaks to one instance, but that can change.
Considering our knowledge of the distributed system quirks, what kind of guarantees should the application code in processes expect from the data store? Rather than a single answer, a range of consistency models are possible, and these are described here.