Distributed systems have more nuanced consistency guarantees that tradeoff between performance and usability. Some examples include,
- Linearizability
- Eventual consistency
- Causal consistency
- Serializability
A history is a timeline of operations that are possibly concurrent
Each operation is an RPC invocation with arguments and a response
A history is linearizable if we can find a point in time for each operation (between invocation and reply) which fits our serial specification, meaning it’s a valid ordering
Generally, there is a tradeoff between strong consistency and max availability