Projekt Dragonfly vyvíja rýchlejšiu náhradu za Redis a Memcached

K dispozícii je prvé vydanie systému ukladania do medzipamäte Dragonfly, ktorý poskytuje podporu pre protokoly Memcached a Redis, ale umožňuje vykonávať dotazy s oveľa vyšším výkonom a menšou spotrebou pamäte. Systém manipuluje s údajmi vo formáte kľúč/hodnota a možno ho použiť ako odľahčené riešenie na urýchlenie práce stránok s vysokým zaťažením, ukladanie pomalých dopytov do DBMS a prechodných údajov do pamäte RAM. Kód Dragonfly je napísaný v C/C++ a je distribuovaný pod licenciou BSL (Business Source License).

Licenciu BSL navrhli spoluzakladatelia MySQL ako alternatívu k modelu Open Core. Podstatou BSL je, že kód pokročilej funkcionality je spočiatku k dispozícii na úpravu, ale po určitú dobu je možné ho bezplatne používať, iba ak sú splnené ďalšie podmienky, ktoré si vyžadujú zakúpenie komerčnej licencie na obchádzanie. Dodatočné licenčné podmienky projektu Dragonfly vyžadujú, aby bol kód prenesený do licencie Apache 2.0 až 1. júna 2027. Do tejto doby licencia umožňuje použitie kódu len na zabezpečenie prevádzky svojich služieb a produktov, ale zakazuje použitie na vytváranie platených cloudových služieb, ktoré fungujú ako doplnok k Dragonfly.

Podľa vývojárov a demonštrovaných testov Dragonfly tvrdí, že je najrýchlejším systémom na ukladanie pamäte. V porovnaní s Redis, Dragonfly dosiahol 25-násobný nárast výkonu a trojnásobné zníženie spotreby pamäte pre typické pracovné zaťaženie. Jeden server Dragonfly dokáže spracovať milióny požiadaviek za sekundu, napríklad v prostredí Amazon EC2 c6gn.16xlarge bolo možné dosiahnuť výkon 3.8 milióna požiadaviek za sekundu.

Projekt Dragonfly vyvíja rýchlejšiu náhradu za Redis a Memcached

V testoch na uloženie 5 GB dát potreboval Dragonfly o 30 % menej pamäte ako Redis. Pri vytváraní snímok pomocou príkazu „bgsave“ sa spotreba pamäte zvyšuje, ale v špičkách zostáva takmer trikrát nižšia ako v Redis a samotná operácia zaznamenávania snímok je oveľa rýchlejšia (v teste bola snímka v Dragonfly napísaná v 30. sekúnd, zatiaľ čo Redis - za 42 sekúnd).

Projekt Dragonfly vyvíja rýchlejšiu náhradu za Redis a Memcached

Vysoký výkon je dosiahnutý vďaka viacvláknovej architektúre bez zdieľania zdrojov (shared-nothing), čo znamená, že každému vláknu je priradený samostatný samostatný procesor s vlastnou časťou dát, pracujúci bez mutexov a spinových zámkov. Na zabezpečenie atomicity pri práci s viacerými kľúčmi sa používajú ľahké zámky VLL. Na efektívne ukladanie informácií do pamäte sa používa štruktúra dashtable, ktorá implementuje typ rozdelenej hašovacej tabuľky.

Medzi funkciami dostupnými v prvom vydaní je zaznamenaná podpora protokolu RESP2 a 130 príkazov Redis, čo približne zodpovedá funkčnosti vydania Redis 2.8. Dragonfly navyše podporuje všetky príkazy memcached okrem CAS (check-and-set), poskytuje podporu pre asynchrónne operácie na vytváranie snímok, poskytuje predvídateľnú spotrebu pamäte, poskytuje vstavaný interpret Lua 5.4 a podporuje komplexné dátové typy, ako sú hash, atď. sady a zoznamy (ZSET, HSET, LIST, SETS a STRING).

Samostatne je k dispozícii režim vyrovnávacej pamäte, ktorý po vyčerpaní voľnej pamäte automaticky nahradí staré údaje novými. K údajom je možné pripojiť životnosť, počas ktorej sa údaje považujú za relevantné. Stav úložiska je možné vyprázdniť na disk na pozadí pre neskoršie obnovenie po reštarte. Na správu systému je k dispozícii konzola HTTP (viaže sa na port TCP 6379) a rozhranie API na vrátenie metrík, kompatibilné s Prometheus. V budúcich verziách plánujeme rozšíriť podporu pre príkazy Redis a implementovať schopnosť replikovať úložisko, aby sa zabezpečila odolnosť voči chybám a vyvažovanie záťaže.

Zdroj: opennet.ru

Pridať komentár