Projekt Dragonfly vyvíjí rychlejší náhradu za Redis a Memcached

K dispozici je první verze systému ukládání do mezipaměti Dragonfly, která poskytuje podporu protokolů Memcached a Redis, ale umožňuje provádět dotazy s mnohem vyšším výkonem a menší spotřebou paměti. Systém manipuluje s daty ve formátu klíč/hodnota a lze jej použít jako odlehčené řešení pro urychlení práce na vysoce vytížených webech, ukládání pomalých dotazů do mezipaměti do DBMS a mezilehlá data v paměti RAM. Kód Dragonfly je napsán v C/C++ a je distribuován pod BSL (Business Source License).

Licence BSL byla navržena spoluzakladateli MySQL jako alternativa k modelu Open Core. Podstatou BSL je, že kód pokročilé funkčnosti je zpočátku k dispozici pro úpravy, ale po určitou dobu jej lze bezplatně používat pouze při splnění dalších podmínek, které k obcházení vyžadují zakoupení komerční licence. Další licenční podmínky projektu Dragonfly vyžadují, aby byl kód převeden do licence Apache 2.0 až 1. června 2027. Do této doby licence umožňuje použití kódu pouze pro zajištění provozu svých služeb a produktů, ale zakazuje použití pro tvorbu placených cloudových služeb, které fungují jako doplněk Dragonfly.

Podle vývojářů a demonstrovaných testů Dragonfly tvrdí, že je nejrychlejším systémem pro ukládání paměti. V porovnání s Redis dosáhl Dragonfly 25násobného zvýšení výkonu a trojnásobného snížení spotřeby paměti pro typické pracovní zatížení. Jeden server Dragonfly dokáže zpracovat miliony požadavků za sekundu, například v prostředí Amazon EC2 c6gn.16xlarge bylo možné dosáhnout výkonu 3.8 milionu požadavků za sekundu.

Projekt Dragonfly vyvíjí rychlejší náhradu za Redis a Memcached

V testech pro uložení 5 GB dat potřeboval Dragonfly o 30 % méně paměti než Redis. Při vytváření snímků pomocí příkazu „bgsave“ se spotřeba paměti zvyšuje, ale ve špičkách zůstává téměř třikrát menší než v Redis a samotná operace záznamu snímků je mnohem rychlejší (v testu byl snímek v Dragonfly napsán za 30 sekund, zatímco Redis - za 42 sekund).

Projekt Dragonfly vyvíjí rychlejší náhradu za Redis a Memcached

Vysokého výkonu je dosaženo díky vícevláknové architektuře bez sdílení zdrojů (shared-nothing), což znamená, že každému vláknu je přiřazen samostatný samostatný procesor s vlastní částí dat, pracující bez mutexů a spinových zámků. Pro zajištění atomicity při práci s více klíči se používají odlehčené zámky VLL. Pro efektivní ukládání informací do paměti se používá struktura dashtable, která implementuje typ dělené hashovací tabulky.

Mezi funkcemi dostupnými v prvním vydání je zaznamenána podpora protokolu RESP2 a 130 příkazů Redis, což přibližně odpovídá funkčnosti vydání Redis 2.8. Dragonfly navíc podporuje všechny příkazy memcached kromě CAS (check-and-set), poskytuje podporu pro asynchronní operace pro vytváření snímků, poskytuje předvídatelnou spotřebu paměti, poskytuje vestavěný interpret Lua 5.4 a podporuje komplexní datové typy, jako jsou hash, atd. sady a seznamy (ZSET, HSET, LIST, SETS a STRING).

Samostatně je k dispozici režim ukládání do mezipaměti, který po vyčerpání volné paměti automaticky nahradí stará data daty novými. K datům je možné připojit dobu životnosti, během níž jsou data považována za relevantní. Stav úložiště lze vyprázdnit na disk na pozadí pro pozdější obnovení po restartu. Pro správu systému je poskytována HTTP konzola (vazba na TCP port 6379) a API pro vracení metrik, kompatibilní s Prometheus. V budoucích verzích plánujeme rozšířit podporu pro příkazy Redis a implementovat schopnost replikovat úložiště, aby byla zajištěna odolnost proti chybám a vyrovnávání zátěže.

Zdroj: opennet.ru

Přidat komentář