Dragonfly projekat razvija bržu zamjenu za Redis i Memcached

Dostupno je prvo izdanje Dragonfly sistema za keširanje u memoriji, koje pruža podršku za Memcached i Redis protokole, ali omogućava izvršavanje upita sa mnogo većim performansama i manjom potrošnjom memorije. Sistem manipuliše podacima u formatu ključ/vrijednost i može se koristiti kao lagano rješenje za ubrzavanje rada visoko opterećenih lokacija, keširanje sporih upita do DBMS-a i međupodataka u RAM-u. Dragonfly kod je napisan u C/C++ i distribuira se pod BSL (Business Source License).

BSL licencu su predložili suosnivači MySQL-a kao alternativu Open Core modelu. Suština BSL-a je da je kod napredne funkcionalnosti u početku dostupan za izmjenu, ali se neko vrijeme može besplatno koristiti samo ako su ispunjeni dodatni uvjeti koji zahtijevaju kupovinu komercijalne licence za zaobilaženje. Dodatni uslovi licence projekta Dragonfly zahtijevaju da se kod prenese na licencu Apache 2.0 tek 1. juna 2027. Do ovog trenutka, licenca dozvoljava korištenje koda samo za osiguranje rada svojih usluga i proizvoda, ali zabranjuje korištenje za kreiranje plaćenih usluga u oblaku koji djeluju kao dodatak Dragonfly-u.

Prema programerima i demonstriranim testovima, Dragonfly tvrdi da je najbrži sistem za skladištenje memorije. U poređenju sa Redis-om, Dragonfly je postigao 25 ​​puta povećanje performansi i trostruko smanjenje potrošnje memorije za tipična radna opterećenja. Jedan Dragonfly server može da obradi milione zahteva u sekundi, na primer, u okruženju Amazon EC2 c6gn.16xlarge bilo je moguće postići performanse od 3.8 miliona zahteva u sekundi.

Dragonfly projekat razvija bržu zamjenu za Redis i Memcached

U testovima za pohranjivanje 5 GB podataka, Dragonfly je zahtijevao 30% manje memorije nego Redis. Prilikom kreiranja snimaka naredbom “bgsave” potrošnja memorije se povećava, ali u trenucima najvećeg opterećenja ostaje skoro tri puta manja nego u Redisu, a sama operacija snimanja snimka je mnogo brža (u testu je snimak u Dragonfly-u napisan u 30 sekundi, dok Redis - za 42 sekunde).

Dragonfly projekat razvija bržu zamjenu za Redis i Memcached

Visoke performanse se postižu zahvaljujući višenitnoj arhitekturi bez dijeljenja resursa (shared-nothing), što znači da je svakoj niti dodijeljen poseban odvojeni procesor sa vlastitim dijelom podataka, koji radi bez muteksa i spin zaključavanja. Kako bi se osigurala atomicnost pri radu s više ključeva, koriste se lagane VLL brave. Za efikasno pohranjivanje informacija u memoriju, koristi se struktura dashtable, koja implementira tip particionirane hash tablice.

Među funkcijama dostupnim u prvom izdanju, istaknuta je podrška za RESP2 protokol i 130 Redis komandi, što približno odgovara funkcionalnosti Redis 2.8 izdanja. Pored toga, Dragonfly podržava sve memcached komande osim CAS-a (check-and-set), pruža podršku za asinkrone operacije za kreiranje snimaka, pruža predvidljivu potrošnju memorije, pruža ugrađeni Lua 5.4 interpreter i podržava složene tipove podataka kao što su hashovi, skupove i liste (ZSET, HSET, LIST, SETS i STRING).

Posebno je dostupan način keširanja, koji automatski zamjenjuje stare podatke novim podacima nakon što se slobodna memorija iscrpi. Podacima je moguće priložiti životni vijek tokom kojeg se podaci smatraju relevantnim. Stanje pohrane može se isprazniti na disk u pozadini za kasniji oporavak nakon ponovnog pokretanja. Za upravljanje sistemom, obezbeđena je HTTP konzola (vezuje se na TCP port 6379) i API za vraćanje metrike, kompatibilan sa Prometheusom. U budućim verzijama, planiramo da proširimo podršku za Redis komande i implementiramo mogućnost repliciranja skladišta kako bismo pružili toleranciju grešaka i balansiranje opterećenja.

izvor: opennet.ru

Dodajte komentar