Availability vs Consistency¶
Definition¶
Availability: How often a system can complete a request without throwing an error
Consistency: How "sync-ed up" the data is across all distributed nodes (every read op uses the most recent write op)
Consistency¶
Ensuring high consistency means suffering higher latency because all writes must be acknowledged by all replicas.
Strong Consistency: After a successful write, all subsequent reads reflect that update
Eventual Consistency: Allows for high availability in the system as information of the replicas diverge for a short time. Updates propagate through the system in the background.
Availability¶
Measured as the "uptime of a service", commonly as a percentage.
A highly available system ensures that the system remains online through software bugs, hardware failures or network partitions.
High Availability (HA): A paradigm that utilizes redundant components so when a component fails, its duplicate takes over.
Fault Tolerance: A step beyond HA. This implies a system will continue to run even if one or more components fail, often with zero downtime or degradation.