Izdanje Dragonfly 1.0, sustava za predmemoriju podataka u RAM-u

Objavljen je Dragonfly sustav za predmemoriju i pohranu u memoriji, koji manipulira podacima u formatu ključ/vrijednost i može se koristiti kao lagano rješenje za ubrzavanje rada visoko opterećenih stranica, pohranjivanje sporih upita u DBMS i međupodatke u RAM-u. Dragonfly podržava protokole Memcached i Redis, što vam omogućuje korištenje postojećih biblioteka klijenata i prijenos projekata pomoću Memcached i Redis na Dragonfly bez prerade koda.

U usporedbi s Redisom, Dragonfly je postigao 2 ​​puta veći učinak (6 milijuna zahtjeva u sekundi) za tipična radna opterećenja u okruženju Amazon EC16 c25gn.3.8xlarge. U usporedbi s Memcachedom u okruženju AWS c6gn.16xlarge, Dragonfly je mogao izvesti 4.7 puta više zahtjeva za pisanje u sekundi (3.8 milijuna naspram 806 tisuća) i 1.77 puta više zahtjeva za čitanje u sekundi (3.7 milijuna naspram 2.1 milijuna).

Izdanje Dragonfly 1.0, sustava za predmemoriju podataka u RAM-u

U testovima za pohranjivanje 5 GB podataka, Dragonfly je zahtijevao 30% manje memorije od Redisa. Prilikom kreiranja snimki s naredbom “bgsave” povećava se potrošnja memorije, no u vršnim trenucima ostaje gotovo tri puta manja nego u Redisu, a sama operacija snimanja snimki puno je brža (u testu je snimka u Dragonflyu napisana u 30. sekundi, dok Redis - za 42 sekunde).

Izdanje Dragonfly 1.0, sustava za predmemoriju podataka u RAM-u

Visoke performanse postižu se zahvaljujući višenitnoj arhitekturi bez dijeljenja resursa (shared-nothing), što znači da je svakoj niti dodijeljen zasebni zasebni procesor s vlastitim dijelom podataka, radeći bez mutexa i spin lockova. Kako bi se osigurala atomičnost pri radu s više ključeva, koriste se lagane VLL brave. Za učinkovito pohranjivanje informacija u memoriju koristi se struktura dashtable koja implementira vrstu particionirane hash tablice.

Neke značajke Dragonflya:

  • Način predmemoriranja, koji automatski zamjenjuje stare podatke novim podacima nakon što se potroši slobodna memorija.
  • Podrška za vezanje podataka tijekom cijelog životnog vijeka tijekom kojeg se podaci smatraju relevantnim.
  • Podrška za ispiranje stanja pohrane na disk u pozadini za kasniji oporavak nakon ponovnog pokretanja.
  • Prisutnost HTTP konzole (veže se na TCP port 6379) za upravljanje sustavom i API-ja za vraćanje metrike, kompatibilan s Prometheusom.
  • Podrška za 185 Redis naredbi, što je otprilike ekvivalentno funkcionalnosti Redis 5 izdanja.
  • Podržava sve Memcached naredbe osim CAS (check-and-set).
  • Podrška za asinkrone operacije za stvaranje snimki.
  • Predvidljiva potrošnja memorije.
  • Ugrađen Lua 5.4 tumač.
  • Podržava složene tipove podataka kao što su hashevi, skupovi, popisi (ZSET, HSET, LIST, SETS i STRING) i JSON podaci.
  • Podržava replikaciju pohrane za toleranciju grešaka i balansiranje opterećenja.

Dragonfly kod je napisan u C/C++ i distribuira se pod BSL (Business Source License). BSL licencu predložili su suosnivači MySQL-a kao alternativu modelu Open Core. Bit BSL-a je da je kod napredne funkcionalnosti inicijalno dostupan za modifikaciju, ali se neko vrijeme može koristiti besplatno samo ako su ispunjeni dodatni uvjeti, koji zahtijevaju kupnju komercijalne licence za zaobilaženje. Dodatni licencni uvjeti za projekt Dragonfly zahtijevaju prijenos koda na licencu Apache 2.0 15. ožujka 2028. Do ovog trenutka licenca dopušta korištenje koda samo za osiguravanje rada njegovih usluga i proizvoda, ali zabranjuje korištenje za stvaranje plaćenih usluga u oblaku koje djeluju kao dodaci Dragonflyju.

Verzija Dragonfly 1.0 poznata je po implementaciji podrške za replikaciju podataka s primarnog poslužitelja na sekundarni. Međutim, Dragonfly se može konfigurirati da se koristi kao sekundarna pohrana koja prima podatke s primarnog poslužitelja bilo temeljenog na Dragonflyju ili temeljenom na Redisu. API za upravljanje replikacijom kompatibilan je s Redisom i temelji se na korištenju naredbi ROLE i REPLICAOF (SLAVEOF).

Izvor: opennet.ru

Dodajte komentar