Lansarea Dragonfly 1.0, un sistem pentru stocarea în cache a datelor în RAM

A fost lansat sistemul de stocare și stocare în memorie Dragonfly, care manipulează datele în format cheie/valoare și poate fi folosit ca o soluție ușoară pentru accelerarea activității site-urilor foarte încărcate, stocarea în cache a interogărilor lente către DBMS și a datelor intermediare în RAM. Dragonfly acceptă protocoalele Memcached și Redis, care vă permite să utilizați bibliotecile client existente și să transferați proiecte folosind Memcached și Redis în Dragonfly fără a reelabora codul.

Comparativ cu Redis, Dragonfly a obținut o creștere de 2 de ori a performanței (6 milioane de solicitări pe secundă) pentru sarcinile de lucru tipice în mediul Amazon EC16 c25gn.3.8xlarge. Comparativ cu Memcached din mediul AWS c6gn.16xlarge, Dragonfly a reușit să efectueze de 4.7 ori mai multe solicitări de scriere pe secundă (3.8 milioane față de 806 mii) și de 1.77 ori mai multe solicitări de citire pe secundă (3.7 milioane față de 2.1 milioane).

Lansarea Dragonfly 1.0, un sistem pentru stocarea în cache a datelor în RAM

În testele pentru stocarea a 5 GB de date, Dragonfly a necesitat cu 30% mai puțină memorie decât Redis. Când se creează instantanee cu comanda „bgsave”, consumul de memorie crește, dar în momentele de vârf a rămas de aproape trei ori mai puțin decât în ​​Redis, iar operația de înregistrare a instantaneelor ​​în sine este mult mai rapidă (în test, un instantaneu în Dragonfly a fost scris în 30 secunde, în timp ce Redis - în 42 de secunde).

Lansarea Dragonfly 1.0, un sistem pentru stocarea în cache a datelor în RAM

Performanța ridicată este obținută datorită unei arhitecturi multi-threaded, fără a partaja resurse (shared-nothing), ceea ce înseamnă că fiecărui thread i se atribuie un procesor separat separat, cu propria sa porțiune de date, care funcționează fără mutexuri și blocări de spin. Pentru a asigura atomicitatea atunci când lucrați cu mai multe chei, sunt utilizate încuietori VLL ușoare. Pentru a stoca eficient informațiile în memorie, se utilizează structura dashtable, care implementează un tip de tabel hash partiționat.

Câteva caracteristici ale Dragonfly:

  • Modul de stocare în cache, care înlocuiește automat datele vechi cu date noi după ce memoria liberă este epuizată.
  • Suport pentru legarea la date pe o perioadă de viață în care datele sunt considerate relevante.
  • Suport pentru spălarea stării de stocare pe disc în fundal pentru recuperarea ulterioară după repornire.
  • Prezența unei console HTTP (se leagă la portul TCP 6379) pentru managementul sistemului și a unui API pentru returnarea valorilor, compatibil cu Prometheus.
  • Suport pentru 185 de comenzi Redis, care este aproximativ echivalent cu funcționalitatea versiunii Redis 5.
  • Suportă toate comenzile Memcached, cu excepția CAS (verificare și setare).
  • Suport pentru operații asincrone pentru crearea de instantanee.
  • Consum previzibil de memorie.
  • Interpret Lua 5.4 încorporat.
  • Acceptă tipuri de date complexe, cum ar fi hash-uri, seturi, liste (ZSET, HSET, LIST, SETS și STRING) și date JSON.
  • Acceptă replicarea stocării pentru toleranța la erori și echilibrarea sarcinii.

Codul Dragonfly este scris în C/C++ și este distribuit sub BSL (Business Source License). Licența BSL a fost propusă de co-fondatorii MySQL ca alternativă la modelul Open Core. Esența BSL este că codul de funcționalitate avansată este inițial disponibil pentru modificare, dar de ceva timp poate fi folosit gratuit doar dacă sunt îndeplinite condiții suplimentare, care necesită achiziționarea unei licențe comerciale pentru a o eluda. Termenii suplimentari de licență pentru proiectul Dragonfly necesită ca codul să fie transferat la licența Apache 2.0 pe 15 martie 2028. Până în acest moment, licența permite utilizarea codului doar pentru a asigura funcționarea serviciilor și produselor sale, dar interzice utilizarea pentru crearea de servicii cloud plătite care acționează ca un add-on pentru Dragonfly.

Versiunea Dragonfly 1.0 se remarcă prin implementarea suportului pentru replicarea datelor de la serverul principal pe cel secundar. Cu toate acestea, Dragonfly poate fi configurat pentru a fi utilizat ca stocare secundară care primește date de la un server primar, fie bazat pe Dragonfly, fie bazat pe Redis. API-ul de gestionare a replicării este compatibil cu Redis și se bazează pe utilizarea comenzilor ROLE și REPLICAOF (SLAVEOF).

Sursa: opennet.ru

Adauga un comentariu