Cassandra's multi-DC story is one of its best features: built-in async replication between datacenters with per-DC tunable consistency. Done right, you get global resilience and local-latency reads. Done wrong, you lose data on a DC failover.

Advertisement

NetworkTopologyStrategy

Set replication per DC: {'dc1': 3, 'dc2': 3, 'dc3': 2}. Don't use SimpleStrategy across DCs — it ignores topology and crosses the WAN for every replica.

LOCAL_QUORUM is the workhorse

Reads with CL=LOCAL_QUORUM stay within the user's DC: low latency, no cross-DC dependency for read availability. Writes with CL=LOCAL_QUORUM commit when the local DC has quorum and replicate async to others. Right answer for most workloads.

Advertisement

EACH_QUORUM for stronger guarantees

CL=EACH_QUORUM requires quorum in every DC — strongest consistency, slowest writes, no availability if any DC is down. Use only for global-critical state (money movement, auth changes).

Driver-side DC awareness

Configure the driver with the local DC name (DCAwareRoundRobinPolicy). Driver routes coordinators to the local DC; only falls over to remote DCs if local has no live nodes. Failing to set this sends queries cross-WAN under load.

Cross-DC traffic shaping

Async replication uses normal write path. Saturating the WAN backs up writes. Tools: stream_throughput_outbound_megabits_per_sec, internode_compression, separate inter-DC network. Watch hint backlog as the canary.

NTS + LOCAL_QUORUM + DC-aware driver = the default-right setup. EACH_QUORUM only where you need it; budget the latency hit.