Dragonfly-projek ontwikkel vinniger vervanging vir Redis en Memcached

Die eerste weergawe van die Dragonfly-in-geheue-kasstelsel is beskikbaar, wat ondersteuning bied vir die Memcached- en Redis-protokolle, maar dit laat navrae toe om teen baie hoër werkverrigting en met minder geheueverbruik uitgevoer te word. Die stelsel manipuleer data in die sleutel/waarde-formaat en kan gebruik word as 'n liggewig oplossing om die werk van hoogs gelaaide werwe te bespoedig, stadige navrae na die DBMS en intermediêre data in RAM te kas. Die Dragonfly-kode is in C/C++ geskryf en onder die BSL (Business Source License) versprei.

Die BSL is deur die MySQL-medestigters voorgestel as 'n alternatief vir die Open Core-model. Die essensie van BSL is dat die kode van uitgebreide funksionaliteit aanvanklik beskikbaar is vir wysiging, maar dit kan vir 'n geruime tyd gratis gebruik word slegs onderworpe aan bykomende voorwaardes, wat die aankoop van 'n kommersiële lisensie vereis om te omseil. Bykomende lisensiebepalings van die Dragonfly-projek vereis dat die kode eers op 2.0 Junie 1 na die Apache 2027-lisensie omgeskakel word. Tot op daardie tydstip laat die lisensie die gebruik van die kode slegs toe om die werking van sy dienste en produkte te verseker, maar verbied die gebruik om betaalde wolkdienste te skep wat as 'n byvoeging tot Dragonfly dien.

Dragonfly beweer dat dit die wêreld se vinnigste in-geheue bergingstelsel is, volgens ontwikkelaars en maatstawwe. In vergelyking met Redis het Dragonfly 'n 25x prestasieverhoging en 'n 2x vermindering in geheueverbruik onder tipiese werkladings behaal. 'n Enkele Dragonfly-bediener kan miljoene versoeke per sekonde verwerk, byvoorbeeld, in 'n Amazon EC6 c16gn.3.8xlarge-omgewing is 'n prestasie van XNUMX miljoen versoeke per sekonde behaal.

Dragonfly-projek ontwikkel vinniger vervanging vir Redis en Memcached

In 5 GB-bergingtoetse het Dragonfly 30% minder geheue benodig as Redis. Tydens die skep van foto's deur die "bgsave"-opdrag, neem geheueverbruik toe, maar op piekmomente bly dit amper drie keer minder as in Redis, en die snapshot-skryfbewerking self is baie vinniger (in die toets is 'n momentopname in Dragonfly geskryf in 30 sekondes, en Redis - in 42 sekondes).

Dragonfly-projek ontwikkel vinniger vervanging vir Redis en Memcached

Hoë werkverrigting word behaal danksy 'n multi-threaded argitektuur sonder om hulpbronne te deel (shared-niks), wat impliseer dat 'n aparte afsonderlike hanteerder met sy eie gedeelte data aan elke draad geheg is, sonder mutexes en spin-locks. Liggewig VLL-slotte word gebruik om atomiteit te verseker wanneer daar met veelvuldige sleutels gewerk word. Vir doeltreffende berging van inligting in die geheue, word die dashtable-struktuur gebruik, wat 'n soort gepartisioneerde hash-tabelle implementeer.

Van die funksies wat in die eerste weergawe beskikbaar is, word kennis geneem van ondersteuning vir die RESP2-protokol en 130 Redis-opdragte, wat min of meer ooreenstem met die funksionaliteit van die Redis 2.8-vrystelling. Boonop ondersteun Dragonfly alle memcached-opdragte behalwe CAS (kontroleer-en-stel), bied ondersteuning vir asynchrone bewerkings vir die skep van kiekies, verskaf voorspelbare geheueverbruik, verskaf 'n ingeboude Lua 5.4-tolk en ondersteun komplekse datatipes soos hashes, stelle en lyste (ZSET, HSET, LIST, SETS en STRING).

Afsonderlik is 'n kasmodus beskikbaar, waarin ou data outomaties deur nuwes vervang word nadat die vrye geheue uitgeput is. Dit is moontlik om te bind aan die leeftyddata waartydens die data as relevant beskou word. Bergingstatus kan na skyf in die agtergrond gespoel word vir latere herstel na 'n herbegin. Om die stelsel te bestuur, word 'n HTTP-konsole voorsien (bind aan TCP-poort 6379) en 'n API vir die terugkeer van maatstawwe wat versoenbaar is met Prometheus. In toekomstige vrystellings beplan ons om ondersteuning vir Redis-opdragte uit te brei en die vermoë te implementeer om berging te herhaal vir failover en lasbalansering.

Bron: opennet.ru

Voeg 'n opmerking