Projekts Dragonfly izstrādā Redis un Memcached ātrāku aizstājēju

Ir pieejams pirmais Dragonfly in-memory caching sistēmas laidiens, kas nodrošina Memcached un Redis protokolu atbalstu, bet ļauj izpildīt vaicājumus ar daudz lielāku veiktspēju un mazāku atmiņas patēriņu. Sistēma manipulē ar datiem atslēgas/vērtības formātā, un to var izmantot kā vieglu risinājumu, lai paātrinātu augstas slodzes vietņu darbu, kešatmiņā saglabājot lēnus vaicājumus DBVS un starpposma datus RAM. Dragonfly kods ir rakstīts C/C++ valodā un tiek izplatīts saskaņā ar BSL (biznesa avota licenci).

BSL licenci ierosināja MySQL līdzdibinātāji kā alternatīvu Open Core modelim. BSL būtība ir tāda, ka uzlabotās funkcionalitātes kods sākotnēji ir pieejams modificēšanai, taču kādu laiku bez maksas var izmantot tikai tad, ja tiek izpildīti papildu nosacījumi, kuru apiešanai nepieciešams iegādāties komerclicenci. Dragonfly projekta papildu licences nosacījumi paredz, ka kods ir jāpārnes uz Apache 2.0 licenci tikai 1. gada 2027. jūnijā. Līdz šim licence atļauj kodu izmantot tikai savu pakalpojumu un produktu darbības nodrošināšanai, bet aizliedz izmantot maksas mākoņpakalpojumu izveidei, kas darbojas kā Dragonfly papildinājums.

Saskaņā ar izstrādātāju un demonstrētajiem testiem, Dragonfly apgalvo, ka tā ir ātrākā atmiņas uzglabāšanas sistēma. Salīdzinot ar Redis, Dragonfly sasniedza 25 reizes lielāku veiktspēju un trīs reizes samazināja atmiņas patēriņu tipiskām darba slodzēm. Viens Dragonfly serveris spēj apstrādāt miljoniem pieprasījumu sekundē, piemēram, Amazon EC2 c6gn.16xlarge vidē bija iespējams sasniegt 3.8 miljonu pieprasījumu veiktspēju sekundē.

Projekts Dragonfly izstrādā Redis un Memcached ātrāku aizstājēju

Testos 5 GB datu glabāšanai Dragonfly prasīja par 30% mazāk atmiņas nekā Redis. Veidojot momentuzņēmumus ar komandu “bgsave”, atmiņas patēriņš palielinās, bet pīķa brīžos tas paliek gandrīz trīs reizes mazāks nekā Redis, un pati momentuzņēmuma ierakstīšanas darbība ir daudz ātrāka (testā momentuzņēmums Dragonfly tika uzrakstīts 30. sekundēs, savukārt Redis - 42 sekundēs).

Projekts Dragonfly izstrādā Redis un Memcached ātrāku aizstājēju

Augsta veiktspēja tiek sasniegta, pateicoties vairāku pavedienu arhitektūrai bez resursu koplietošanas (koplietots-neko), kas nozīmē, ka katram pavedienam ir piešķirts atsevišķs atsevišķs procesors ar savu datu daļu, kas darbojas bez mutex un spin bloķēšanas. Lai nodrošinātu atomitāti, strādājot ar vairākām atslēgām, tiek izmantotas vieglas VLL slēdzenes. Lai efektīvi uzglabātu informāciju atmiņā, tiek izmantota dashtable struktūra, kas ievieš sadalītas jaucēj tabulas veidu.

Starp pirmajā laidienā pieejamajiem līdzekļiem tiek atzīmēts RESP2 protokola un 130 Redis komandu atbalsts, kas aptuveni atbilst Redis 2.8 laidiena funkcionalitātei. Turklāt Dragonfly atbalsta visas atmiņā saglabātās komandas, izņemot CAS (pārbaudīt un iestatīt), nodrošina atbalstu asinhronām operācijām momentuzņēmumu izveidei, nodrošina paredzamu atmiņas patēriņu, nodrošina iebūvētu Lua 5.4 tulku un atbalsta sarežģītus datu tipus, piemēram, jaucējus, kopas un sarakstus (ZSET, HSET, LIST, SETS un STRING).

Atsevišķi ir pieejams kešatmiņas režīms, kas automātiski aizstāj vecos datus ar jauniem datiem, kad brīvā atmiņa ir iztērēta. Datiem ir iespējams piesaistīt visu mūžu, kura laikā dati tiek uzskatīti par būtiskiem. Krātuves stāvokli var izskalot diskā fonā, lai vēlāk atkoptu pēc restartēšanas. Sistēmas pārvaldībai tiek nodrošināta HTTP konsole (sasaistās ar TCP portu 6379) un API metrikas atgriešanai, kas ir saderīga ar Prometheus. Nākamajās versijās mēs plānojam paplašināt atbalstu Redis komandām un ieviest krātuves replikācijas iespējas, lai nodrošinātu kļūdu toleranci un slodzes līdzsvarošanu.

Avots: opennet.ru

Pievieno komentāru