U prughjettu Dragonfly sviluppa una sustituzione più veloce per Redis è Memcached

A prima versione di u sistema di cache in memoria di Dragonfly hè dispunibule, chì furnisce supportu per i protokolli Memcached è Redis, ma permette à e dumande esse eseguite cù un rendimentu assai più altu è menu cunsumu di memoria. U sistema manipula e dati in u formatu chjave / valore è pò esse usatu cum'è una suluzione ligera per accelerà u travagliu di i siti d'alta carica, cachendu dumande lenti à u DBMS è dati intermedi in RAM. 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 di u prughjettu Dragonfly necessitanu chì u codice sia trasferitu à a licenza Apache 2.0 solu l'1 di ghjugnu 2027. 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.

Sicondu i sviluppatori è i testi dimustrati, Dragonfly dice chì hè u sistema di almacenamiento di memoria più veloce. Paragunatu à Redis, Dragonfly hà ottenutu un aumentu di 25 volte in u rendiment è una riduzione di trè volte in u cunsumu di memoria per carichi di travagliu tipici. Un servitore Dragonfly pò processà milioni di dumande per seconda, per esempiu, in l'ambiente Amazon EC2 c6gn.16xlarge, era pussibule di ottene un rendimentu di 3.8 milioni di richieste per seconda.

U prughjettu Dragonfly sviluppa una sustituzione più veloce per Redis è Memcached

In i testi per almacenà 5 GB di dati, Dragonfly necessitava 30% di memoria di menu cà Redis. Quandu creanu snapshots cù u cumandimu "bgsave", u cunsumu di memoria aumenta, ma in i mumenti di punta ferma quasi trè volte menu di 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).

U prughjettu Dragonfly sviluppa una sustituzione più veloce per Redis è Memcached

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.

Trà e funziunalità dispunibuli in a prima versione, u supportu per u protocolu RESP2 è i cumandamenti 130 Redis hè nutatu, chì currisponde approssimativamente à a funziunalità di a versione Redis 2.8. Inoltre, Dragonfly supporta tutti i cumandamenti memcached eccettu CAS (check-and-set), furnisce supportu per operazioni asincrone per creà snapshots, furnisce un cunsumu di memoria prevedibile, furnisce un interprete Lua 5.4 integratu, è supporta tippi di dati cumplessi cum'è hash, insemi, è liste (ZSET, HSET, LIST, SETS è STRING).

Un modu di caching hè dispunibule separatamente, chì rimpiazza automaticamente i vechji dati cù novi dati dopu chì a memoria libera hè esaurita. Hè pussibule attaccà una vita à i dati durante a quale i dati sò cunsiderati pertinenti. U statu di almacenamiento pò esse lavatu à u discu in u sfondate per a ricuperazione più tardi dopu à riavvia. Per gestisce u sistema, una cunsola HTTP hè furnita (liga à u portu TCP 6379) è una API per riturnà metriche, cumpatibili cù Prometheus. In e versioni future, pensamu di espansione u supportu per i cumandamenti Redis è implementà a capacità di riplicà l'almacenamiento per furnisce a tolleranza à i difetti è l'equilibriu di carica.

Source: opennet.ru

Add a comment