Liberazione di Dragonfly 1.0, un sistema di cache di dati in memoria

U sistema di cache è almacenamentu in memoria di Dragonfly hè statu liberatu, chì manipula e dati in u formatu chjave / valore è pò esse usatu cum'è una suluzione ligera per accelerà u travagliu di siti assai carichi, caching queries lente à u DBMS è dati intermedi in RAM. Dragonfly supporta i protokolli Memcached è Redis, chì vi permette di utilizà biblioteche di clientella esistenti è trasferisce i prughjetti cù Memcached è Redis à Dragonfly senza rielaborazione di u codice.

Comparatu à Redis, Dragonfly hà ottenutu un aumentu di 2 volte in u rendiment (6 milioni di richieste per seconda) per carichi di travagliu tipici in l'ambiente Amazon EC16 c25gn.3.8xlarge. Comparatu à Memcached in l'ambiente AWS c6gn.16xlarge, Dragonfly hà sappiutu fà 4.7 volte più richieste di scrittura per seconda (3.8 milioni versus 806 mila) è 1.77 volte più richieste di lettura per seconda (3.7 milioni versus 2.1 milioni).

Liberazione di Dragonfly 1.0, un sistema di cache di dati in memoria

In i testi per almacenà 5 GB di dati, Dragonfly necessitava 30% di memoria di menu cà Redis. Quandu si creanu snapshots cù u cumandimu "bgsave", u cunsumu di memoria aumenta, ma in i mumenti di punta ferma quasi trè volte menu cà in Redis, è l'operazione di registrazione di snapshot hè assai più veloce (in a prova, una snapshot in Dragonfly hè stata scritta in 30). seconde, mentri Redis - in 42 seconde).

Liberazione di Dragonfly 1.0, un sistema di cache di dati in memoria

L'altu rendiment hè ottenutu grazia à una architettura multi-threaded senza sparte risorse (shared-nothing), chì significa chì ogni filu hè assignatu un processore separatu separatu cù a so propria parte di dati, travagliendu senza mutexes è spin locks. Per assicurà l'atomicità quandu si travaglia cù parechje chjave, sò usati chjusi VLL ligeri. Per almacenà in modu efficiente l'infurmazioni in memoria, a struttura dashtable hè aduprata, chì implementa un tipu di tavula hash partizionata.

Alcune caratteristiche di Dragonfly:

  • Modu caching, chì rimpiazza automaticamente i vechji dati cù novi dati dopu chì a memoria libera hè esaurita.
  • Supportu per ubligatoriu à e dati una vita durante a quale i dati sò cunsiderati pertinenti.
  • Supportu per u flussu di u statu di almacenamiento à u discu in u sfondate per a ricuperazione più tardi dopu à riavvia.
  • A prisenza di una cunsola HTTP (liga à u portu TCP 6379) per a gestione di u sistema è una API per a metrica di ritornu, cumpatibile cù Prometheus.
  • Supportu per i cumandamenti 185 Redis, chì hè quasi equivalente à a funziunalità di a versione Redis 5.
  • Supporta tutti i cumandamenti Memcached eccettu CAS (check-and-set).
  • Supportu per operazioni asincrone per creà snapshots.
  • Cunsumu di memoria previsible.
  • Interprete Lua 5.4 integratu.
  • Supporta tippi di dati cumplessi cum'è hash, sets, lists (ZSET, HSET, LIST, SETS è STRING) è dati JSON.
  • Supporta a replicazione di almacenamiento per a tolleranza di difetti è u bilanciamentu di carica.

U codice Dragonfly hè scrittu in C/C++ è hè distribuitu sottu a BSL (Licenza di Fonte di l'Affari). A licenza BSL hè stata pruposta da i cofundatori di MySQL cum'è una alternativa à u mudellu Open Core. L'essenza di BSL hè chì u codice di funziunalità avanzata hè inizialmente dispunibule per a mudificazione, ma per qualchì tempu pò esse usatu gratuitamente solu s'ellu ci sò cundizzioni supplementari, chì esigenu l'acquistu di una licenza cummerciale per evità. Termini di licenza supplementari per u prughjettu Dragonfly necessitanu chì u codice sia trasferitu à a licenza Apache 2.0 u 15 di marzu di u 2028. Finu à questu tempu, a licenza permette l'usu di u codice solu per assicurà l'operazione di i so servizii è prudutti, ma pruibisce l'usu per a creazione di servizii di nuvola pagati chì facenu cum'è un add-on à Dragonfly.

A versione Dragonfly 1.0 hè nota per a so implementazione di supportu per a replicazione di dati da u servitore primariu à u secundariu. In ogni casu, Dragonfly pò esse cunfiguratu per esse usatu cum'è un almacenamentu secundariu chì riceve dati da un servitore primariu sia basatu in Dragonfly sia basatu in Redis. L'API di gestione di replicazione hè cumpatibile cù Redis è hè basatu annantu à l'usu di i cumandamenti ROLE è REPLICAOF (SLAVEOF).

Source: opennet.ru

Add a comment