Vydání Dragonfly 1.0, systému ukládání dat do mezipaměti

Byl vydán mezipaměťový a úložný systém Dragonfly, který manipuluje s daty ve formátu klíč/hodnota a lze jej použít jako odlehčené řešení pro urychlení práce vysoce zatížených webů, ukládání pomalých dotazů do DBMS a mezilehlá data v paměti RAM. Dragonfly podporuje protokoly Memcached a Redis, což vám umožňuje používat stávající klientské knihovny a přenášet projekty pomocí Memcached a Redis do Dragonfly bez přepracování kódu.

Ve srovnání s Redis dosáhl Dragonfly 2násobného zvýšení výkonu (6 milionu požadavků za sekundu) pro typické pracovní zatížení v prostředí Amazon EC16 c25gn.3.8xlarge. Ve srovnání s Memcached v prostředí AWS c6gn.16xlarge byl Dragonfly schopen provést 4.7krát více požadavků na zápis za sekundu (3.8 milionu oproti 806 tisícům) a 1.77krát více požadavků na čtení za sekundu (3.7 milionu oproti 2.1 milionu).

Vydání Dragonfly 1.0, systému ukládání dat do mezipaměti

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ůstala téměř třikrát menší než v Redis a samotná operace záznamu snímku je mnohem rychlejší (v testu byl snímek v Dragonfly napsán za 30 sekund, zatímco Redis - za 42 sekund).

Vydání Dragonfly 1.0, systému ukládání dat do mezipaměti

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.

Některé funkce Dragonfly:

  • Režim ukládání do mezipaměti, který po vyčerpání volné paměti automaticky nahradí stará data daty novými.
  • Podpora vazby na data po dobu životnosti, během níž jsou data považována za relevantní.
  • Podpora pro vyprázdnění stavu úložiště na disk na pozadí pro pozdější obnovu po restartu.
  • Přítomnost konzoly HTTP (spojení s portem TCP 6379) pro správu systému a rozhraní API pro vracení metrik, kompatibilní s Prometheus.
  • Podpora 185 příkazů Redis, což je zhruba ekvivalentní funkčnosti vydání Redis 5.
  • Podporuje všechny příkazy Memcached kromě CAS (check-and-set).
  • Podpora asynchronních operací pro vytváření snímků.
  • Předvídatelná spotřeba paměti.
  • Vestavěný překladač Lua 5.4.
  • Podporuje komplexní datové typy, jako jsou hash, sady, seznamy (ZSET, HSET, LIST, SETS a STRING) a data JSON.
  • Podporuje replikaci úložiště pro odolnost proti chybám a vyrovnávání zátěže.

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 pro projekt Dragonfly vyžadují, aby byl kód převeden do licence Apache 2.0 15. března 2028. 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.

Verze Dragonfly 1.0 je pozoruhodná svou implementací podpory replikace dat z primárního serveru na sekundární. Dragonfly však lze nakonfigurovat tak, aby byl použit jako sekundární úložiště, které přijímá data z primárního serveru buď na základě Dragonfly, nebo na základě Redis. Rozhraní API pro správu replikace je kompatibilní s Redis a je založeno na použití příkazů ROLE a REPLICAOF (SLAVEOF).

Zdroj: opennet.ru

Přidat komentář