Decision guide

Strong vs Eventual Consistency

Which consistency guarantee does each part of your system need?

Side by side

CriterionStrong (linearizable)Session guaranteesEventual
Read latencyHigher (coordination)LowLowest
Availability in partitionsReduced (minority unavailable)HighHighest
AnomaliesNoneOthers may see stale dataStale reads, temporary divergence
ImplementationConsensus / single leaderSticky routing, version tokensAsync replication, caches
ExamplesSpanner, etcd, primary DB readsReplicas + read-your-writes routingDynamoDB default reads, DNS, CDNs

When to choose each

Strong (linearizable)

Reads always see the latest committed write.

Choose when

  • Money, inventory reservations, uniqueness
  • Locks and leader election

Avoid when

  • Global low-latency reads for everything

Session guarantees

Read-your-writes, monotonic reads per user/session.

Choose when

  • User-facing apps with replicas/caches
  • Profiles, settings, feeds

Avoid when

  • Cross-user invariants

Eventual

Replicas converge over time.

Choose when

  • Caches, search indexes, analytics, counters
  • Multi-region availability

Avoid when

  • Invariants that must never be violated

Verdict

Use strong consistency only where invariants demand it, session guarantees for user-facing reads, and eventual consistency everywhere else — and document which guarantee each API provides.

Learn more

Sources