Dragonfly layihəsi Redis və Memcached üçün daha sürətli əvəzetmə hazırlayır

Memcached və Redis protokollarına dəstək verən, lakin sorğuların daha yüksək performansla və daha az yaddaş istehlakı ilə icrasına imkan verən Dragonfly yaddaşdaxili keşləmə sisteminin ilk buraxılışı mövcuddur. Sistem məlumatları açar/dəyər formatında manipulyasiya edir və yüksək yüklənmiş saytların işini sürətləndirmək, DBMS-də yavaş sorğuları və RAM-da aralıq məlumatları keşləşdirmək üçün yüngül həll yolu kimi istifadə edilə bilər. Dragonfly kodu C/C++ dilində yazılmış və BSL (Business Source License) altında paylanmışdır.

BSL MySQL həmtəsisçiləri tərəfindən Open Core modelinə alternativ olaraq təklif edilmişdir. BSL-in mahiyyəti ondan ibarətdir ki, genişləndirilmiş funksionallıq kodu ilkin olaraq modifikasiya üçün mövcuddur, lakin bir müddət yalnız yan keçmək üçün kommersiya lisenziyasının alınmasını tələb edən əlavə şərtlərə uyğun olaraq pulsuz istifadə edilə bilər. Dragonfly layihəsinin əlavə lisenziya şərtləri kodun yalnız 2.0 iyun 1-ci ildə Apache 2027 lisenziyasına çevrilməsini tələb edir. Həmin vaxta qədər lisenziya kodun yalnız onun xidmət və məhsullarının işləməsini təmin etmək üçün istifadəsinə icazə verir, lakin Dragonfly-a əlavə kimi çıxış edən pullu bulud xidmətləri yaratmaq üçün istifadəni qadağan edir.

Tərtibatçılar və etalonlara görə Dragonfly dünyanın ən sürətli yaddaşdaxili saxlama sistemi olduğunu iddia edir. Redis ilə müqayisədə Dragonfly tipik iş yükləri altında 25x performans artımı və yaddaş istehlakında 2x azalma əldə etdi. Tək Dragonfly serveri saniyədə milyonlarla sorğunu emal edə bilər, məsələn, Amazon EC6 c16gn.3.8xlarge mühitində saniyədə XNUMX milyon sorğu performansına nail olunub.

Dragonfly layihəsi Redis və Memcached üçün daha sürətli əvəzetmə hazırlayır

5 GB yaddaş testlərində Dragonfly Redis-dən 30% az yaddaş tələb edirdi. "Bgsave" əmri ilə snapshotların yaradılması zamanı yaddaş istehlakı artır, lakin pik anlarda Redis-dən demək olar ki, üç dəfə az qalır və snapshot yazma əməliyyatının özü daha sürətlidir (testdə Dragonfly-də bir şəkil yazılmışdır. 30 saniyədə, Redis isə 42 saniyədə).

Dragonfly layihəsi Redis və Memcached üçün daha sürətli əvəzetmə hazırlayır

Resursları paylaşmadan (paylaşılan-heç bir şey) çox yivli arxitektura sayəsində yüksək performans əldə edilir, bu da hər bir ipə öz məlumat hissəsi olan ayrıca ayrıca işləyicinin qoşulmasını, mutexes və spin-kilidlər olmadan işləməsini nəzərdə tutur. Yüngül VLL kilidləri çox açarlarla işləyərkən atomikliyi təmin etmək üçün istifadə olunur. Yaddaşda məlumatın səmərəli saxlanması üçün bir növ bölünmüş hash cədvəllərini həyata keçirən dashtable strukturundan istifadə olunur.

Birinci buraxılışda mövcud olan funksiyalardan RESP2 protokolu və 130 Redis əmri üçün dəstək qeyd olunub ki, bu da təxminən Redis 2.8 buraxılışının funksionallığına uyğundur. Bundan əlavə, Dragonfly, CAS (yoxla və təyin et) istisna olmaqla, bütün yaddaşda saxlanılan əmrləri dəstəkləyir, anlıq görüntülər yaratmaq üçün asinxron əməliyyatlara dəstək verir, proqnozlaşdırıla bilən yaddaş istehlakını təmin edir, daxili Lua 5.4 tərcüməçisini təmin edir və heşlər kimi mürəkkəb məlumat növlərini dəstəkləyir, dəstlər və siyahılar (ZSET, HSET, LIST, SETS və STRING).

Ayrı-ayrılıqda, boş yaddaş tükəndikdən sonra köhnə məlumatların avtomatik olaraq yeniləri ilə əvəz olunduğu bir keş rejimi mövcuddur. Verilənlərin müvafiq hesab edildiyi ömür boyu məlumatlara bağlamaq mümkündür. Saxlama vəziyyəti yenidən başladıqdan sonra sonra bərpa etmək üçün fonda diskə köçürülə bilər. Sistemi idarə etmək üçün HTTP konsolu (TCP port 6379-a bağlanır) və Prometheus ilə uyğun olan ölçüləri qaytarmaq üçün API təmin edilir. Gələcək buraxılışlarda biz Redis əmrləri üçün dəstəyi genişləndirməyi və əvəzetmə və yük balansı üçün yaddaşı təkrarlamaq imkanını həyata keçirməyi planlaşdırırıq.

Mənbə: opennet.ru

Добавить комментарий