Projekt Dragonfly razvija hitrejšo zamenjavo za Redis in Memcached

Na voljo je prva izdaja sistema za predpomnjenje v pomnilniku Dragonfly, ki zagotavlja podporo za protokola Memcached in Redis, vendar omogoča izvajanje poizvedb z veliko večjo zmogljivostjo in manjšo porabo pomnilnika. Sistem manipulira s podatki v obliki ključ/vrednost in se lahko uporablja kot lahka rešitev za pospešitev dela visoko obremenjenih mest, predpomnjenje počasnih poizvedb v DBMS in vmesnih podatkov v RAM. Koda Dragonfly je napisana v C/C++ in se distribuira pod licenco BSL (Business Source License).

Licenco BSL so predlagali soustanovitelji MySQL kot alternativo modelu Open Core. Bistvo BSL je v tem, da je koda napredne funkcionalnosti na začetku na voljo za spreminjanje, nekaj časa pa jo je mogoče uporabljati brezplačno le ob izpolnjevanju dodatnih pogojev, ki za obhod zahtevajo nakup komercialne licence. Dodatni licenčni pogoji projekta Dragonfly zahtevajo, da se koda prenese v licenco Apache 2.0 šele 1. junija 2027. Do tega trenutka licenca dovoljuje uporabo kode samo za zagotavljanje delovanja svojih storitev in izdelkov, vendar prepoveduje uporabo za ustvarjanje plačljivih storitev v oblaku, ki delujejo kot dodatek k Dragonfly.

Glede na razvijalce in prikazane teste Dragonfly trdi, da je najhitrejši sistem za shranjevanje pomnilnika. V primerjavi z Redisom je Dragonfly dosegel 25-kratno povečanje zmogljivosti in trikratno zmanjšanje porabe pomnilnika za tipične delovne obremenitve. En strežnik Dragonfly lahko obdela več milijonov zahtevkov na sekundo, na primer v okolju Amazon EC2 c6gn.16xlarge je bilo mogoče doseči zmogljivost 3.8 milijona zahtevkov na sekundo.

Projekt Dragonfly razvija hitrejšo zamenjavo za Redis in Memcached

V testih za shranjevanje 5 GB podatkov je Dragonfly potreboval 30 % manj pomnilnika kot Redis. Pri izdelavi posnetkov z ukazom “bgsave” se poraba pomnilnika poveča, a ob konicah ostane skoraj trikrat manjša kot v Redisu, sama operacija snemanja posnetkov pa je veliko hitrejša (na testu je bil posnetek v Dragonflyju napisan v 30. sekundah, medtem ko Redis - v 42 sekundah).

Projekt Dragonfly razvija hitrejšo zamenjavo za Redis in Memcached

Visoka zmogljivost je dosežena zahvaljujoč večnitni arhitekturi brez deljenja virov (shared-nothing), kar pomeni, da je vsaki niti dodeljen ločen ločen procesor s svojim delom podatkov, ki deluje brez muteksov in spin locks. Za zagotovitev atomičnosti pri delu z več ključi se uporabljajo lahke ključavnice VLL. Za učinkovito shranjevanje informacij v pomnilnik se uporablja struktura dashtable, ki izvaja vrsto particionirane zgoščene tabele.

Med funkcijami, ki so na voljo v prvi izdaji, je navedena podpora za protokol RESP2 in 130 ukazov Redis, kar približno ustreza funkcionalnosti izdaje Redis 2.8. Poleg tega Dragonfly podpira vse memcached ukaze razen CAS (check-and-set), zagotavlja podporo za asinhrone operacije za ustvarjanje posnetkov, zagotavlja predvidljivo porabo pomnilnika, zagotavlja vgrajen tolmač Lua 5.4 in podpira kompleksne vrste podatkov, kot so zgoščene vrednosti, nizov in seznamov (ZSET, HSET, LIST, SETS in STRING).

Ločeno je na voljo način predpomnjenja, ki samodejno zamenja stare podatke z novimi, ko je prosti pomnilnik izčrpan. Podatkom je mogoče pripisati življenjsko dobo, v kateri se podatki štejejo za pomembne. Stanje shranjevanja je mogoče splakniti na disk v ozadju za kasnejšo obnovitev po ponovnem zagonu. Za upravljanje sistema sta na voljo konzola HTTP (povezuje se na vrata TCP 6379) in API za vračanje metrik, združljiv s Prometheusom. V prihodnjih različicah načrtujemo razširitev podpore za ukaze Redis in implementacijo zmožnosti podvajanja pomnilnika, da zagotovimo toleranco napak in uravnoteženje obremenitve.

Vir: opennet.ru

Dodaj komentar