Dragonfly 1.0, datu kešatmiņas sistēmas atmiņā, izlaišana

Ir izlaista Dragonfly in-memory kešatmiņas un uzglabāšanas sistēma, kas manipulē ar datiem atslēgas/vērtības formātā un var tikt izmantota kā viegls risinājums ļoti noslogotu vietņu darba paātrināšanai, lēnu vaicājumu saglabāšanai DBVS un starpposma datiem RAM. Dragonfly atbalsta Memcached un Redis protokolus, kas ļauj izmantot esošās klientu bibliotēkas un pārsūtīt projektus, izmantojot Memcached un Redis uz Dragonfly, nepārstrādājot kodu.

Salīdzinot ar Redis, Dragonfly sasniedza 2 kārtīgu veiktspējas pieaugumu (6 miljoni pieprasījumu sekundē) tipiskām darba slodzēm Amazon EC16 c25gn.3.8xlarge vidē. Salīdzinot ar Memcached AWS c6gn.16xlarge vidē, Dragonfly spēja izpildīt 4.7 reizes vairāk rakstīšanas pieprasījumu sekundē (3.8 miljoni pret 806 tūkstošiem) un 1.77 reizes vairāk lasīšanas pieprasījumu sekundē (3.7 miljoni pret 2.1 miljonu).

Dragonfly 1.0, datu kešatmiņas sistēmas atmiņā, izlaišana

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 palika 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).

Dragonfly 1.0, datu kešatmiņas sistēmas atmiņā, izlaišana

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.

Dažas Dragonfly funkcijas:

  • Kešatmiņas režīms, kas automātiski aizstāj vecos datus ar jauniem datiem, kad brīvā atmiņa ir iztērēta.
  • Atbalsts saistīšanai ar datiem visu mūžu, kurā dati tiek uzskatīti par būtiskiem.
  • Atbalsts krātuves stāvokļa izskalošanai diskā fonā vēlākai atkopšanai pēc restartēšanas.
  • HTTP konsole (saistas ar TCP portu 6379) sistēmas pārvaldībai un API metrikas atgriešanai, kas ir saderīga ar Prometheus.
  • Atbalsts 185 Redis komandām, kas ir aptuveni līdzvērtīgs Redis 5 laidiena funkcionalitātei.
  • Atbalsta visas Memcached komandas, izņemot CAS (pārbaudīt un iestatīt).
  • Atbalsts asinhronām operācijām momentuzņēmumu izveidei.
  • Paredzams atmiņas patēriņš.
  • Iebūvēts Lua 5.4 tulks.
  • Atbalsta sarežģītus datu tipus, piemēram, jaucējus, kopas, sarakstus (ZSET, HSET, LIST, SETS un STRING) un JSON datus.
  • Atbalsta krātuves replikāciju, lai nodrošinātu kļūdu toleranci un slodzes līdzsvarošanu.

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. Papildu licences nosacījumi projektam Dragonfly nosaka, ka kods ir jāpārnes uz Apache 2.0 licenci 15. gada 2028. martā. 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.

Versija Dragonfly 1.0 ir ievērojama ar to, ka ir ieviests atbalsts datu replikācijai no primārā servera uz sekundāro serveri. Tomēr Dragonfly var konfigurēt, lai to izmantotu kā sekundāro krātuvi, kas saņem datus no primārā servera, pamatojoties uz Dragonfly vai Redis. Replikācijas pārvaldības API ir saderīga ar Redis un ir balstīta uz ROLE un REPLICAOF (SLAVEOF) komandu izmantošanu.

Avots: opennet.ru

Pievieno komentāru