Vydanie Dragonfly 1.0, systému na ukladanie údajov do pamäte

Bol vydaný systém ukladania a ukladania do pamäte Dragonfly, ktorý 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 vysoko zaťažených stránok, ukladanie pomalých dopytov do DBMS a prechodné údaje v RAM. Dragonfly podporuje protokoly Memcached a Redis, čo vám umožňuje používať existujúce klientske knižnice a prenášať projekty pomocou Memcached a Redis do Dragonfly bez prepracovania kódu.

V porovnaní s Redis dosiahol Dragonfly 2-násobný nárast výkonu (6 milióna požiadaviek za sekundu) pre typické pracovné zaťaženie v prostredí Amazon EC16 c25gn.3.8xlarge. V porovnaní s Memcached v prostredí AWS c6gn.16xlarge bol Dragonfly schopný vykonať 4.7-krát viac požiadaviek na zápis za sekundu (3.8 milióna oproti 806 tisícom) a 1.77-krát viac požiadaviek na čítanie za sekundu (3.7 milióna oproti 2.1 milióna).

Vydanie Dragonfly 1.0, systému na ukladanie údajov do pamäte

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 zostala 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).

Vydanie Dragonfly 1.0, systému na ukladanie údajov do pamäte

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.

Niektoré funkcie Dragonfly:

  • Režim vyrovnávacej pamäte, ktorý po vyčerpaní voľnej pamäte automaticky nahradí staré údaje novými.
  • Podpora väzby na údaje počas životnosti, počas ktorej sa údaje považujú za relevantné.
  • Podpora pre vyprázdnenie stavu úložiska na disk na pozadí pre neskoršie obnovenie po reštarte.
  • Prítomnosť HTTP konzoly (viaže sa na TCP port 6379) pre správu systému a API pre návratové metriky, kompatibilné s Prometheus.
  • Podpora pre 185 príkazov Redis, čo je zhruba ekvivalentné funkciám vydania Redis 5.
  • Podporuje všetky príkazy Memcached okrem CAS (check-and-set).
  • Podpora asynchrónnych operácií na vytváranie snímok.
  • Predvídateľná spotreba pamäte.
  • Vstavaný tlmočník Lua 5.4.
  • Podporuje komplexné typy údajov, ako sú hash, sady, zoznamy (ZSET, HSET, LIST, SETS a STRING) a údaje JSON.
  • Podporuje replikáciu úložiska pre odolnosť voči chybám a vyrovnávanie záťaže.

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 pre projekt Dragonfly vyžadujú, aby bol kód prenesený do licencie Apache 2.0 15. marca 2028. 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.

Verzia Dragonfly 1.0 je pozoruhodná svojou implementáciou podpory replikácie údajov z primárneho servera na sekundárny. Dragonfly však možno nakonfigurovať tak, aby sa používal ako sekundárne úložisko, ktoré prijíma údaje z primárneho servera buď založeného na Dragonfly alebo založené na Redis. API na riadenie replikácie je kompatibilné s Redis a je založené na použití príkazov ROLE a REPLICAOF (SLAVEOF).

Zdroj: opennet.ru

Pridať komentár