26 puan yazan xguru 2023-07-04 | 3 yorum | WhatsApp'ta paylaş
  • Discord büyüdükçe mesaj depolama veritabanını sürekli değiştirdi
  • Başlangıçta tek bir MongoDB kullanıyordu. 2015 Kasım’ında mesaj sayısı 100 milyona çıkınca MongoDB’nin sınırları ortaya çıktı
  • 2017’de 12 düğümlü bir Cassandra kümesine geçerek onlarca milyar mesajı depoladı
  • 2022’de mesaj sayısı trilyonlara fırlayınca altyapı 177 düğüme kadar büyüdü; gecikme süreleri öngörülemez hale geldi ve bakım maliyeti aşırı yükseldi
  • Cassandra tarafında Discord’un yaşadığı temel sorun Hot Partition idi. Veritabanının belirli bir kısmı aşırı yükleniyor ve bu da tüm uygulamanın performansını düşürüyordu
    • Cassandra’nın iç veri yapısı LSM tree kullandığı için okuma maliyeti yazmadan daha yüksekti; tek bir sunucuda birçok kullanıcının eşzamanlı okuması hotspot oluşturuyor ve performans düşüşüne yol açıyordu
    • SSTable sıkıştırması gibi bakım işleri genel performansı etkileyerek sorunu daha da ağırlaştırıyordu
  • Bu nedenle çeşitli bileşenleri birleştirerek mimariyi yeniden tasarlamaya giriştiler
    • Monolitik API, Rust ile uygulanmış bir veri servisi ve ScyllaDB tabanlı bir depolama sistemi (C++ ile geliştirilmiş, Cassandra uyumlu bir veritabanı) kullandılar
  • ScyllaDB’ye geçişle birlikte önemli iyileşmeler sağlandı
    • p99 read latency, Cassandra’daki 40~125ms’e kıyasla 15ms’ye düştü
    • p99 write latency, Cassandra’daki 5~70ms’e kıyasla 5ms’ye düştü
  • Discord mühendisleri veri servisini Rust ile yazdı
    • Rust’ın fearless concurrency özelliğini kullanarak hot partition üzerindeki eşzamanlı trafiği kontrol ettiler
    • Rust’ın kütüphaneleri ve eşzamanlılık özellikleri, Discord’un gereksinimlerine çok uygundu
    • Veri servisi, API monoliti ile veritabanı kümesi arasında aracı servis rolü üstleniyor

3 yorum

 
pmc7777 2023-07-05

Tam da Discord’un teknoloji yığını hakkında bilgi edinirken buna denk geldim, teşekkürler!

 
secret3056 2023-07-04

Discord milyarlarca mesajı nasıl depoluyor

Go'nun GC'si oldukça büyük bir ek yük oluşturduğundan, ayarlama yöntemleri de sürekli ekleniyor ve memory arena gibi yapılar devreye alınıyor.