Prvý vydanie systému vyrovnávacej pamäte Dragonfly je teraz dostupné, ponúkajúce podporu pre protokoly Memcached a Redis a umožňujúce vykonávať požiadavky s výrazne vyššou výkonnosťou a nižšou spotrebou pamäte. Systém manipuluje s dátami vo formáte kľúč/hodnota a môže byť použitý ako ľahké riešenie na zrýchlenie práce vysoce zaťažených webových stránok, vyrovnávajúci pomalé požiadavky na databázový systém (DBMS) a medzičasové dáta v pamäti. Kód Dragonfly je napísaný v jazykoch C/C++ a je šírený pod licenciou BSL (Business Source License).
Licencia BSL bola navrhnutá spoluzakladateľmi MySQL ako alternatíva k modelu Open Core. Podstatou BSL je, že kód rozšírenej funkčnosti je pôvodne dostupný na úpravy, ale počas určitého časového obdobia môže byť bezplatne používaný iba za predpokladu dodatočných podmienok, na obídenie ktorých je potrebné zakúpenie komerčnej licencie. Dodatočné licenčné podmienky projektu Dragonfly predpisujú prechod k licencii Apache 2.0 až 1. júna 2027. Do tohto času licencia povoľuje používanie kódu iba na zabezpečenie prevádzky vlastných služieb a produktov, ale zakazuje jeho aplikáciu na vytváranie platených cloudových služieb, ktoré sú nadstavbami nad Dragonfly.
Podľa vyhlásení vývojárov a demonštrovaných testov Dragonfly má ambície stať sa najrýchlejším systémom ukladania v pamäti. V porovnaní s Redis dosiahlo Dragonfly pri typických nárokoch 25-násobné zvýšenie výkonu a trojnásobné zníženie spotreby pamäte. server Dragonfly dokáže spracovať milióny požiadaviek za sekundu, napríklad vo prostredí Amazon EC2 c6gn.16xlarge sa podarilo dosiahnuť výkon 3,8 milióna požiadaviek za sekundu.

V testoch na uloženie 5 GB dát Dragonfly vyžiadal o 30% menej pamäte než Redis. Počas vytvárania snapshotov pomocou príkazu „bgsave“ vzrastá spotreba pamäte, ale v historických momentoch zostáva takmer trikrát nižšia ako v prípade Redis, pričom samotná operácia zápisu snapshotu sa vykonáva výrazne rýchlejšie (v teste bol snapshot v Dragonfly zapísaný za 30 sekúnd, zatiaľ čo Redis za 42 sekúnd).

Vysoký výkon je dosahovaný vďaka viacvláknovej architektúre bez zdieľania zdrojov (shared-nothing), čo znamená, že k každému vláknu je priradený samostatný izolovaný spracovateľ so svojou vlastnou sadou dát, pracujúci bez mutexov a spin-zámkov. Na zabezpečenie atomicity pri práci s viacerými kľúčmi sú používané ľahké zámky VLL. Na efektívne uchovávanie informácií v pamäti sa používa štruktúra dashtable, ktorá implementuje variáciu segmentovaných hash-tablíc.
Z možností dostupných v prvom vydaní môžeme vyzdvihnúť podporu protokolu RESP2 a 130 príkazov Redis, čo približne zodpovedá funkčnosti vydania Redis 2.8. Okrem toho Dragonfly podporuje všetky príkazy memcached s výnimkou CAS (check-and-set), poskytuje podporu asynchrónnych operácií na vytváranie snapshotov, zabezpečuje predvídateľnú spotrebu pamäte, poskytuje vstavaný interpret Lua 5.4 a podporuje zložité typy dát ako hash, množiny a zoznamy (ZSET, HSET, LIST, SETS a STRING).
Samostatne je dostupný režim vyrovnávacej pamäte, pri ktorom je automaticky zabezpečené nahradenie starých údajov novými po vyčerpaní voľnej pamäte. Je možné priradiť dátam časový limit, počas ktorého sú považované za aktuálne. Stav úložiska môže byť na pozadí vymazaný na disk pre následné obnovenie po reštartovaní. Na riadenie systému je k dispozícii HTTP konzola (priradená k TCP portu 6379) a API pre poskytovanie metrik, kompatibilné s Prometheus. V nasledujúcich verziách sa plánuje rozšíriť podporu príkazov Redis a implementovať možnosť replikácie úložiska na zabezpečenie odolnosti voči chybám a vyváženia zaťaženia.
Zdroj: opennet.ru
