« Tüm yayınlar

Netflix, Cassandra Partiton Gecikmesini ID Bazlı Bölerek Milisaniyeye İndirdi

Netflix AI ekibi, geniş Cassandra partition'larını okuma anında ID bazında asenkron bölerek kuyruk gecikmesini saniyelerden milisaniyelere düşürdü. Uygulama değişikliği gerekmiyor.

Netflix AI ekibi, TimeSeries Abstraction sistemi kapsamında Cassandra 4.x üzerinde büyüyen partition'ların yol açtığı yüksek okuma gecikmesi sorununu çözdü. Zamanla genişleyen partition'lar saniyelik kuyruk gecikmelerine, timeout'lara, GC duraklamalarına ve yüksek CPU kullanımına neden oluyordu. Çözüm iki katmanlı: tablo seviyesinde zaman dilimi yeniden bölümleme ile partition yoğunluğu ayarlanırken, asıl kazanım partition seviyesinde dinamik ID bazlı bölme ile geliyor.

Mekanizma; okuma sırasında büyük partition'ları tespit edip Kafka'ya olay gönderen bir algılama aşaması, tam partition'ı okuyup checksum doğrulaması yapan planlama/bölme aşaması ve tamamlanan bölünmüş anahtarları bellek içi Bloom filtrelerinde tutan sunum aşamasından oluşuyor. Orijinal partition yedek olarak korunuyor, geçiş ise shadow-mode karşılaştırmasıyla kademeli yapılıyor — hiçbir uygulama kodu değişikliği gerekmiyor.

Sonuçlar çarpıcı: ortalama okuma gecikmesi saniyelerden iki haneli milisaniyelere, kuyruk gecikmesi ise birkaç saniyeden yaklaşık 200 ms'ye indi. Timeout'lar azaldı, CPU kullanımı düştü ve 500MB üzerindeki dev partition'lar bile timeout almadan sorgulanabilir hale geldi. Bu yaklaşım, büyük ölçekli zaman serisi verisiyle çalışan mühendisler için Cassandra'da şema değişikliği gerektirmeden performans artışı sağlayan somut bir örnek sunuyor.