Resilience is the ability of a system to continue providing acceptable service despite component or dependency failures. Fault-tolerant systems survive specified failures without service downtime or disruption, whereas highly available systems may still allow some downtime. section 4.6
Replication provides resilience by maintaining redundant copies across nodes and, sometimes, data centers. It also creates a consistency, availability, and latency trade-off: stricter consistency requires more coordination and can increase latency. section 4.0
State machine replication makes resilience operational:
- A client sends a request to a replicated cluster, which persists its effect after acknowledgment even if components later fail. section 4.6
- Subsequent requests sent to other nodes observe the update, providing a linearizability guarantee. section 4.6
- For non-Byzantine failures, a cluster tolerates f failures with 2f + 1 replicas, leaving a quorum of f + 1 nodes. section 4.6
- Non-Byzantine failures include crashes, power outages, network disconnections, and disk failures; Byzantine failures may send conflicting information or corrupt data. section 4.6
Replica counts
A three-node cluster can tolerate one non-Byzantine failure; a five-node cluster can tolerate two, because the surviving nodes can still form the required quorum. section 4.6












