« All posts

Netflix Cuts Cassandra Partition Latency to Milliseconds via Per-ID Splitting

Netflix's AI team splits wide Cassandra partitions per ID asynchronously during reads, cutting tail latency from seconds to milliseconds with zero app changes.

Netflix's AI team tackled severe read-latency issues caused by ever-growing wide partitions in Cassandra 4.x, part of its TimeSeries Abstraction system. As partitions accumulated events, tail latency crept into seconds, triggering timeouts, GC pauses, and CPU pressure. The fix combines table-level time-slice repartitioning for density tuning with a more impactful partition-level dynamic splitting mechanism, keyed per TimeSeries ID.

The pipeline detects oversized partitions during reads (emitting events to Kafka), then plans and splits them by reading the full partition once, validating pre/post checksums, and preserving the original as a fallback. Completed splits are served through in-memory Bloom filters for near-instant lookups, merged via a PartitionReader — all rolled out gradually using a shadow-mode comparison, with zero changes required in application code.

The results are substantial: average read latency dropped from seconds to low double-digit milliseconds, tail latency fell to roughly 200ms, timeouts and CPU load decreased, and partitions exceeding 500MB remained fully queryable instead of timing out. For engineers running large-scale time-series workloads, this offers a concrete blueprint for improving Cassandra performance without schema migrations.