Yaddaşdaxili məlumatların keşləmə sistemi olan Dragonfly 1.0-ın buraxılışı

Məlumatları açar/dəyər formatında manipulyasiya edən və yüksək yüklənmiş saytların işini sürətləndirmək, DBMS-də yavaş sorğuların və RAM-da aralıq verilənlərin keşləşdirilməsi üçün yüngül həll yolu kimi istifadə oluna bilən Dragonfly yaddaşdaxili keşləmə və saxlama sistemi buraxıldı. Dragonfly mövcud müştəri kitabxanalarından istifadə etməyə və kodu yenidən işləmədən Memcached və Redis-dən istifadə edərək layihələri Dragonfly-ə köçürməyə imkan verən Memcached və Redis protokollarını dəstəkləyir.

Redis ilə müqayisədə Dragonfly Amazon EC2 c6gn.16xlarge mühitində tipik iş yükləri üçün performansda 25 dəfə artım (saniyədə 3.8 milyon sorğu) əldə etdi. AWS c6gn.16xlarge mühitində Memcached ilə müqayisədə Dragonfly saniyədə 4.7 dəfə (3.8 minə qarşı 806 milyon) və saniyədə 1.77 dəfə daha çox oxuma sorğusu (3.7 milyona qarşı 2.1 milyon) yerinə yetirə bildi.

Yaddaşdaxili məlumatların keşləmə sistemi olan Dragonfly 1.0-ın buraxılışı

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

Yaddaşdaxili məlumatların keşləmə sistemi olan Dragonfly 1.0-ın buraxılışı

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.

Dragonfly-in bəzi xüsusiyyətləri:

  • Boş yaddaş tükəndikdən sonra köhnə məlumatları avtomatik olaraq yeni məlumatlarla əvəz edən keşləmə rejimi.
  • Verilənlərin müvafiq hesab edildiyi ömür boyu məlumatların bağlanmasına dəstək.
  • Yenidən başladıqdan sonra sonra bərpa etmək üçün yaddaş vəziyyətini diskə arxa planda silmək üçün dəstək.
  • Sistemin idarə edilməsi üçün HTTP konsolunun (TCP 6379 portuna bağlanır) və Prometheus ilə uyğun gələn metriklərin qaytarılması üçün API-nin olması.
  • 185 Redis əmri üçün dəstək, təxminən Redis 5 buraxılışının funksionallığına bərabərdir.
  • CAS (yoxla və təyin et) istisna olmaqla, bütün Memcached əmrlərini dəstəkləyir.
  • Ani görüntülər yaratmaq üçün asinxron əməliyyatlara dəstək.
  • Proqnozlaşdırıla bilən yaddaş istehlakı.
  • Quraşdırılmış Lua 5.4 tərcüməçisi.
  • Heshlər, dəstlər, siyahılar (ZSET, HSET, LIST, SETS və STRING) və JSON məlumatları kimi mürəkkəb məlumat növlərini dəstəkləyir.
  • Arızaya dözümlülük və yük balansı üçün yaddaşın təkrarlanmasını dəstəkləyir.

Dragonfly kodu C/C++ dilində yazılmışdır və BSL (Business Source License) altında paylanır. BSL lisenziyası MySQL-in həmtəsisçiləri tərəfindən Open Core modelinə alternativ olaraq təklif edilmişdir. BSL-nin mahiyyəti ondan ibarətdir ki, qabaqcıl 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 yerinə yetirildikdə pulsuz istifadə edilə bilər. Dragonfly layihəsi üçün əlavə lisenziya şərtləri kodun 2.0 mart 15-ci ildə Apache 2028 lisenziyasına köçürülməsini tələb edir. Bu 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ərinin yaradılması üçün istifadəni qadağan edir.

Dragonfly 1.0 versiyası məlumatların əsas serverdən ikincil serverə təkrarlanması dəstəyinin həyata keçirilməsi ilə diqqət çəkir. Bununla belə, Dragonfly ya Dragonfly əsasında və ya Redis əsasında əsas serverdən məlumat alan ikincil yaddaş kimi istifadə olunmaq üçün konfiqurasiya edilə bilər. Replikasiya idarəetmə API-si Redis ilə uyğun gəlir və ROLE və REPLICAOF (SLAVEOF) əmrlərinin istifadəsinə əsaslanır.

Mənbə: opennet.ru

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