Izdaja Dragonfly 1.0, sistem za predpomnjenje podatkov v pomnilniku

Izdan je bil sistem predpomnjenja in shranjevanja v pomnilniku Dragonfly, ki manipulira s podatki v obliki ključ/vrednost in se lahko uporablja kot lahka rešitev za pospešitev dela zelo obremenjenih spletnih mest, predpomnjenje počasnih poizvedb v DBMS in vmesnih podatkov v RAM. Dragonfly podpira protokola Memcached in Redis, kar vam omogoča uporabo obstoječih odjemalskih knjižnic in prenos projektov z uporabo Memcached in Redis v Dragonfly brez predelave kode.

V primerjavi z Redisom je Dragonfly dosegel 2-kratno povečanje zmogljivosti (6 milijona zahtev na sekundo) za tipične delovne obremenitve v okolju Amazon EC16 c25gn.3.8xlarge. V primerjavi z Memcached v okolju AWS c6gn.16xlarge je Dragonfly lahko izvedel 4.7-krat več zahtev za pisanje na sekundo (3.8 milijona v primerjavi z 806 tisoč) in 1.77-krat več zahtev za branje na sekundo (3.7 milijona v primerjavi z 2.1 milijona).

Izdaja Dragonfly 1.0, sistem za predpomnjenje podatkov v pomnilniku

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

Izdaja Dragonfly 1.0, sistem za predpomnjenje podatkov v pomnilniku

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.

Nekatere funkcije Dragonfly:

  • Način predpomnjenja, ki samodejno zamenja stare podatke z novimi, ko je izčrpan prosti pomnilnik.
  • Podpora za vezavo na podatke za celotno življenjsko dobo, v kateri se podatki štejejo za pomembne.
  • Podpora za izpiranje stanja shranjevanja na disk v ozadju za kasnejšo obnovitev po ponovnem zagonu.
  • Prisotnost konzole HTTP (veže se na vrata TCP 6379) za upravljanje sistema in API-ja za vračanje metrik, združljivega s Prometheusom.
  • Podpora za 185 ukazov Redis, kar je približno enakovredno funkcionalnosti izdaje Redis 5.
  • Podpira vse ukaze Memcached razen CAS (preveri in nastavi).
  • Podpora za asinhrone operacije za ustvarjanje posnetkov.
  • Predvidljiva poraba pomnilnika.
  • Vgrajen tolmač Lua 5.4.
  • Podpira zapletene vrste podatkov, kot so zgoščene vrednosti, nizi, seznami (ZSET, HSET, LIST, SETS in STRING) in podatki JSON.
  • Podpira replikacijo shranjevanja za toleranco napak in uravnoteženje obremenitve.

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 za projekt Dragonfly zahtevajo, da se koda prenese v licenco Apache 2.0 15. marca 2028. 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.

Različica Dragonfly 1.0 je znana po implementaciji podpore za replikacijo podatkov s primarnega strežnika na sekundarnega. Vendar pa je Dragonfly mogoče konfigurirati tako, da se uporablja kot sekundarni pomnilnik, ki prejema podatke iz primarnega strežnika bodisi na podlagi Dragonfly bodisi na podlagi Redisa. API za upravljanje replikacije je združljiv z Redisom in temelji na uporabi ukazov ROLE in REPLICAOF (SLAVEOF).

Vir: opennet.ru

Dodaj komentar