Dragonfly projesi Redis ve Memcached'in yerine daha hızlı bir alternatif geliştiriyor

Dragonfly bellek içi önbelleğe alma sisteminin ilk sürümü mevcuttur; Memcached ve Redis protokolleri için destek sağlar, ancak sorguların çok daha yüksek performansla ve daha az bellek tüketimiyle yürütülmesine olanak tanır. Sistem, verileri anahtar/değer biçiminde işler ve yüksek yüklü sitelerin çalışmasını hızlandırmak, yavaş sorguları DBMS'de ve ara verileri RAM'de önbelleğe almak için hafif bir çözüm olarak kullanılabilir. Dragonfly kodu C/C++ dilinde yazılmıştır ve BSL (İşletme Kaynağı Lisansı) kapsamında dağıtılmaktadır.

BSL lisansı MySQL'in kurucu ortakları tarafından Açık Çekirdek modeline alternatif olarak önerildi. BSL'nin özü, gelişmiş işlevsellik kodunun başlangıçta değişiklik için mevcut olmasıdır, ancak bir süre için yalnızca, atlatmak için ticari bir lisans satın almayı gerektiren ek koşulların karşılanması durumunda ücretsiz olarak kullanılabilir. Dragonfly projesinin ek lisans koşulları, kodun yalnızca 2.0 Haziran 1 tarihinde Apache 2027 lisansına aktarılmasını gerektirmektedir. Bu zamana kadar lisans, kodun yalnızca hizmet ve ürünlerinin çalışmasını sağlamak amacıyla kullanılmasına izin veriyor ancak Dragonfly'a eklenti görevi gören ücretli bulut hizmetlerinin oluşturulması için kullanılması yasaklanıyor.

Geliştiricilere ve gösterilen testlere göre Dragonfly, en hızlı bellek depolama sistemi olduğunu iddia ediyor. Redis ile karşılaştırıldığında Dragonfly, tipik iş yükleri için performansta 25 kat artış ve bellek tüketiminde üç kat azalma elde etti. Bir Dragonfly sunucusu saniyede milyonlarca isteği işleyebilir; örneğin Amazon EC2 c6gn.16xlarge ortamında saniyede 3.8 milyon istek performansına ulaşmak mümkündü.

Dragonfly projesi Redis ve Memcached'in yerine daha hızlı bir alternatif geliştiriyor

5 GB veri depolamaya yönelik testlerde Dragonfly, Redis'e göre %30 daha az belleğe ihtiyaç duydu. "Bgsave" komutuyla anlık görüntüler oluştururken bellek tüketimi artar, ancak yoğun anlarda Redis'e göre neredeyse üç kat daha az kalır ve anlık görüntü kaydetme işleminin kendisi çok daha hızlıdır (testte Dragonfly'da bir anlık görüntü 30'da yazılmıştır) saniye, Redis ise - 42 saniyede).

Dragonfly projesi Redis ve Memcached'in yerine daha hızlı bir alternatif geliştiriyor

Kaynakları paylaşmadan (hiçbir şey paylaşılmaz) çok iş parçacıklı mimari sayesinde yüksek performans elde edilir; bu, her bir iş parçacığına, muteksler ve döndürme kilitleri olmadan çalışan, kendi veri bölümüyle ayrı bir işlemci atandığı anlamına gelir. Birden fazla anahtarla çalışırken atomikliği sağlamak için hafif VLL kilitleri kullanılır. Bilgileri bellekte verimli bir şekilde depolamak için, bir tür bölümlenmiş karma tablo uygulayan kısa çizgi tablosu yapısı kullanılır.

İlk sürümde mevcut olan özellikler arasında, RESP2 protokolü desteği ve 130 Redis komutu belirtilmiştir; bu, yaklaşık olarak Redis 2.8 sürümünün işlevselliğine karşılık gelir. Ayrıca Dragonfly, CAS (kontrol et ve ayarla) dışındaki tüm memcached komutlarını destekler, anlık görüntüler oluşturmak için eşzamansız işlemlere destek sağlar, öngörülebilir bellek tüketimi sağlar, yerleşik bir Lua 5.4 yorumlayıcısı sağlar ve karmalar gibi karmaşık veri türlerini destekler. kümeler ve listeler (ZSET, HSET, LIST, SETS ve STRING).

Boş hafıza tükendikten sonra eski verileri otomatik olarak yeni verilerle değiştiren bir önbellekleme modu ayrı olarak mevcuttur. Verilerin ilgili kabul edildiği süre boyunca verilere bir ömür eklemek mümkündür. Depolama durumu, yeniden başlatma sonrasında daha sonra kurtarılmak üzere arka planda diske aktarılabilir. Sistemi yönetmek için bir HTTP konsolu (TCP bağlantı noktası 6379'a bağlanır) ve ölçümleri döndürmek için Prometheus ile uyumlu bir API sağlanır. Gelecek sürümlerde Redis komutlarına yönelik desteği genişletmeyi ve hata toleransı ve yük dengeleme sağlamak için depolamayı çoğaltma özelliğini uygulamayı planlıyoruz.

Kaynak: opennet.ru

Yorum ekle