Udgivelsen af Dragonfly 1.0, et system til caching af data i RAM

Der er blevet udgivet et caching- og datalagringssystem i hukommelsen kaldet Dragonfly, som manipulerer data i nøgle/værdi-format og kan bruges som en letvægtsløsning til at accelerere højbelastede websteder ved at cache langsomme forespørgsler til databaser og midlertidige data i hukommelsen. Dragonfly understøtter protokoller som Memcached og Redis, hvilket gør det muligt at anvende allerede eksisterende klientbiblioteker og uden omfattende koderevisioner overføre projekter, der bruger Memcached og Redis, til Dragonfly.

Sammenlignet med Redis opnåede Dragonfly ved typiske belastninger i Amazon EC2 c6gn.16xlarge en 25-dobling af ydeevnen (3,8 millioner forespørgsler pr. sekund). Sammenlignet med Memcached i AWS-miljøet c6gn.16xlarge formåede Dragonfly at udføre 4,7 gange flere skrivforespørgsler pr. sekund (3,8 millioner mod 806.000) og 1,77 gange flere læseforespørgsler pr. sekund (3,7 millioner mod 2,1 millioner).

Udgivelsen af Dragonfly 1.0, et system til caching af data i RAM

I tests for opbevaring af 5 GB data krævede Dragonfly 30% mindre hukommelse end Redis. Under oprettelsen af snapshots ved hjælp af kommandoen „bgsave“ steg hukommelsesforbruget, men i de mest belastede øjeblikke forblev det næsten tre gange lavere end i Redis, og selve snapshot-skrivningen udføres betydeligt hurtigere (i testen blev snapshot i Dragonfly skrevet på 30 sekunder, mens Redis brugte 42 sekunder).

Udgivelsen af Dragonfly 1.0, et system til caching af data i RAM

Høj ydeevne opnås gennem en multitrådede arkitektur uden ressourceopdeling (shared-nothing), hvilket indebærer, at hver tråd knyttes til en separat, isoleret behandler med sin egen datasæt, der arbejder uden mutexer og spin-låse. For at sikre atomaritet ved arbejde med flere nøgler anvendes letvægtslåsninger VLL. Til effektiv lagring af information i hukommelsen anvendes strukturen dashtable, der implementerer en type sektionerede hash-tabeller.

Nogle funktioner i Dragonfly:

  • Cachingtilstand, der automatisk sikrer udskiftning af gamle data med nye, når der ikke længere er ledig hukommelse.
  • Understøttelse af tidsbegrænsning for data, hvor data anses for at være aktuelle.
  • Understøttelse af at gemme tilstanden af lageret til disk i baggrunden for efterfølgende genopretning efter genstart.
  • Tilgængeligheden af en HTTP-konsol (forbundet til TCP-port 6379) til styring af systemet og et API til udlevering af metrikker, kompatibelt med Prometheus.
  • Understøttelse af 185 Redis-kommandoer, hvilket omtrent svarer til funktionaliteten af Redis version 5.
  • Understøttelse af alle Memcached-kommandoer bortset fra CAS (check-and-set).
  • Understøttelse af asynkrone operationer til oprettelse af snapshots.
  • Forudsigeligt hukommelsesforbrug.
  • Indbygget Lua 5.4-fortolker.
  • Understøttelse af komplekse datatyper, såsom hashes, sæt, lister (ZSET, HSET, LIST, SETS og STRING) samt data i JSON-format.
  • Understøttelse af replikeringslagring for at sikre nødredning og belastningsbalancering.

Dragonfly-koden er skrevet i C/C++ og distribueres under BSL (Business Source License). BSL-licensen blev foreslået af medstifterne af MySQL som et alternativ til Open Core-modellen. Essensen af BSL er, at koden til den udvidede funktionalitet oprindeligt er tilgængelig til ændringer, men kan gratis anvendes i en periode, så længe der overholdes yderligere betingelser, som kræver køb af en kommerciel licens for at omgå dem. De ekstra licensbetingelser for Dragonfly-projektet foreskriver, at koden skal overgå til Apache 2.0-licens den 15. marts 2028. Indtil da tillader licensen brug af koden kun til at understøtte sine egne tjenester og produkter, men forbyder anvendelse til at skabe betalte cloud-tjenester, der fungerer som en overbygning på Dragonfly.

Dragonfly version 1.0 er bemærkelsesværdig for implementeringen af understøttelse af datarækkere fra primære server til sekundære. Dragonfly kan konfigureres til at fungere som et sekundært lager, der modtager data fra den primære server, både baseret på Dragonfly og Redis. API'et til styring af replikering er kompatibelt med Redis og er baseret på brugen af kommandoerne ROLE og REPLICAOF (SLAVEOF).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster