RadarGitHub Radarai üretimi

GitHub Radar — Dragonfly

Redis ve Memcached uyumlu, paylaşımsız bellek mimarisi ve io_uring tabanlı fiber motoruyla dikey ölçeklenen modern bellek içi veritabanı.

Dragonfly, modern çok çekirdekli bulut sunucuları için Redis ve Memcached API’leriyle tam uyumlu, donanım kaynaklarını sonuna kadar zorlayan yeni nesil bir bellek içi (in-memory) veri deposudur 1. Geleneksel Redis mimarisinin tek iş parçacıklı (single-threaded) yapısı nedeniyle çok çekirdekli makinelerde kümeleme (clustering) ve karmaşık ağ yönlendirmeleri gerektirdiği senaryolarda Dragonfly; paylaşımsız (shared-nothing) mimarisiyle tek bir sunucu düğümünde milyonlarca işlemi kilitlenme olmadan yürütür. Bellek içi veri saklama ve önbellekleme ihtiyaçları için dikey ölçeklemeyi (vertical scaling) pratik ve maliyet etkin hale getiren özelleşmiş bir depolama motorudur 2.

Altyapı tarafında 31 bin yıldız ve son commit 1 gün önce düzeyinde yüksek bir topluluk ilgisine sahip olan repo, aktif olarak yönetilen 266 açık issue ve kararlı dağıtım takvimini yansıtan son sürüm v1.40.0 (Eylül 2026) metrikleriyle gelişimini sürdürmektedir.

Mimari Deep-Dive: Dragonfly

Dragonfly’ın mimari başarısı, 2000’li yılların tek çekirdek odaklı bellek içi veri tabanı tasarımlarını terk edip modern donanım gerçeklerini temel almasından doğar. Proje C++20 standardıyla yazılmıştır 1. Bu dil seçimi; donanım seviyesinde bellek hizalama (memory alignment), düşük seviyeli eşzamanlılık primitifleri ve Linux çekirdeğinin gelişmiş G/Ç yeteneklerini sıfır ek yükle kullanabilmek için yapılmıştır.

Geleneksel Redis, tek bir ana olay döngüsünde çalışarak kilitlenme sorunlarını çözer ancak modern sunuculardaki onlarca CPU çekirdeğini atıl bırakır. KeyDB gibi çok iş parçacıklı çatallanmalar ise paylaşılan bellek üzerinde yoğun spinlock ve mutex kullanımına girerek çekirdekler arası çekişmeye (contention) takılır. Dragonfly bu ikilemi paylaşımsız (shared-nothing) bir mimariyle aşar. Bellekteki anahtar uzayı parçalara (shards) bölünür ve her CPU çekirdeğine özel bağımsız bir iş parçacığı atanır. İş parçacıkları kendi bellek bölgesini yönetir; böylece okuma ve yazma işlemlerinde küresel kilitlere ihtiyaç kalmaz 3. İş parçacığı içi asenkron G/Ç yönetimi, Linux çekirdeğinin io_uring arabirimi üzerine kurulan ve projenin kendi geliştirdiği açık kaynaklı Helio kütüphanesiyle sağlanan hafif fiber (fiber) yapısıyla yürütülür.

Çoklu anahtar (multi-key) işlemlerinde atomikliği korumak için Very Lightweight Locking (VLL) algoritması benimsenmiştir. Bu model sayesinde birden fazla parçaya yayılan işlemler, geleneksel veritabanı kilit yöneticilerinin yarattığı gecikmelere yol açmadan sıralı ve atomik biçimde tamamlanır. Veri yapısı düzeyinde ise Redis’in bağlı liste tabanlı dict.c yapısı yerine Dash hashing makalesinden esinlenen Dashtable veri yapısı geliştirilmiştir 2. Önbellek satırlarına (cache-line) tam hizalı bu dinamik karma tablosu, bellek kullanımında Redis’e kıyasla %30 tasarruf sağlarken yeniden boyutlandırma (rehashing) maliyetini görünmez kılar.

En radikal mimari kopuş ise disk anlık görüntüsü (snapshot) alma yöntemindedir. Redis, BGSAVE komutunda işletim sisteminin fork() sistem çağrısına güvenir; bu durum yoğun yazma altında işletim sisteminin kopya üzerine yazma (copy-on-write) mekanizması nedeniyle belleğin aniden iki katına çıkmasına ve sayfa hatası (page fault) dalgalanmalarına yol açar. Dragonfly süreci çatallamaz (fork-less snapshot); bunun yerine bellek sayfalarının kirlenmesini doğrudan süreç içinde takip eden bir sürümleme mekanizması kullanarak belleği şişirmeden ve gecikmeyi fırlatmadan arka planda diske yazar.

Kod ve Topluluk Sağlığı

Dragonfly, arkasında kurumsal girişim sermayesi desteği bulunan ve kurucuları Roman Gershman ile Oded Poncz liderliğinde yönetilen profesyonel bir çekirdek ekip tarafından geliştirilmektedir 1. Proje, amatör bir açık kaynak denemesi olmanın çok ötesinde, ticari bulut çözümleri de sunan kurumsal bir şirket çatısı altında kararlı bir yol haritasıyla ilerlemektedir.

Kod kalitesi ve mimari disiplin dikkat çekicidir. Çekirdek depoda açılan PR’lar sıkı derleme hatlarından, Adres Temizleyici (AddressSanitizer) testlerinden, çok çekirdekli yük ve bellek sızıntısı denetimlerinden geçer. Dışarıdan gelen topluluk katkılarında geriye dönük protokol uyumluluğu ve sıfır kilitlenme mimarisinin korunması şart koşulur. Maintainer ekibi açık issue listesini yakından takip etmekte, topluluktan gelen hata bildirimlerine ortalama birkaç gün içinde dönüş yaparak regresyonları hızla yamalamaktadır. Sürüm notları son derece ayrıntılıdır; bellek katmanlaması (tiering), disk serileştirme sınırları ve arabellek optimizasyonları düzenli semver yayınlarıyla şeffaf biçimde toplulukla paylaşılır 4. health_score bu bölümden türer: issue kapanma hızı, sürüm düzeni, bakımcı ekibi. Ajanın tahminidir; künyede öyle yazılır. Ekibin teknik yanıt kabiliyeti, sürümleme disiplini ve kurumsal desteği göz önüne alındığında projenin mimari sağlık puanı health_score: 8.5 olarak değerlendirilmiştir.

Production Riski: Gerçekten Kullanılır mı?

Dragonfly’ı canlı üretim ortamına almayı planlayan mühendislerin karşı karşıya olduğu en somut gerçek lisanslama modelidir. Proje açık kaynaklı bir MIT veya Apache 2.0 lisansı yerine Business Source License 1.1 (BSL 1.1) ile korunmaktadır 5. Bu lisans, kodu şirket içi altyapılarda ücretsiz çalıştırmanıza izin verirken, üçüncü taraflara ticari bir yönetilen Dragonfly bulut hizmeti sunulmasını engeller ve dört yıl sonra Apache 2.0 lisansına dönüşür. Kurumsal mimarların hukuk departmanlarıyla bu kısıtı önceden netleştirmesi gerekir.

Aracın üretimde hayat kurtaracağı senaryo, devasa Redis kümeleri (Cluster) kurarak sunucu filosu yönetmek zorunda kalan, CPU çekirdeklerini verimsiz kullanan ve sunucu maliyetleri şişen yüksek ölçekli internet uygulamalarıdır. Tek bir 64 çekirdekli sunucuda 4 milyondan fazla QPS değerine erişebilmek, operasyonel karmaşıklığı radikal biçimde azaltır.

Bununla birlikte, Dragonfly’ın dikey ölçekleme gücü tekil arıza noktası (SPOF) riskini beraberinde getirebilir. 1 TB belleğe sahip tek bir devasa düğüm çöktüğünde yaratacağı kesinti maliyeti, küçük Redis düğümlerinden oluşan bir kümeye kıyasla çok daha yıkıcıdır; bu nedenle yüksek erişilebilirlik (HA) ve replikasyon katmanı kusursuz kurgulanmalıdır. Ayrıca Redis ekosisteminin yirmi yılı aşkın süredir test edilmiş nadir uç durum komutları veya özel modülleriyle %100 birebir davranış uyumu arayan projelerde geçiş öncesi kapsamlı entegrasyon testleri zorunludur.

Kaynaklar

  1. Dragonfly GitHub Ana Deposu
  2. Dragonfly Resmi Dokümantasyonu ve Mimarisi
  3. Dragonfly Dahili Tasarım ve Paylaşımsız Mimari Dokümanları
  4. Dragonfly GitHub Sürüm Notları ve Değişiklik Günlüğü
  5. Dragonfly BSL 1.1 Lisans Metni