
Dragonfly er et datalager i minnet bygget for moderne applikasjonsarbeidsmengder.
For noen dager siden ble det annonsert utgivelse av Dragonfly i minnet caching og datalagringssystem, som manipulerer data i nøkkel/verdi-format og kan brukes som en lettvektsløsning for å øke hastigheten på nettsteder med høy belastning ved å bufre trege spørringer til DBMS og mellomliggende data i RAM.
Dragonfly støtter Memcached og Redis protokoller, slik at du kan bruke eksisterende klientbiblioteker og portprosjekter ved å bruke Memcached og Redis til Dragonfly uten å måtte omarbeide koden din.
Det er verdt å nevne at Dragonfly nylig mottatt en oppdatering, når sin versjon 1.0 og i hvilken skiller seg ut for implementering av støtte for datareplikering fra primær til sekundær server.
Samtidig Dragonfly kan konfigureres til å brukes som sekundær lagring som aksepterer data fra hovedserveren basert på Dragonfly og Redis. Replikeringsadministrasjons-APIet er kompatibelt med Redis og er basert på bruk av kommandoene ROLE og REPLICAOF (SLAVEOF).
Om Dragonfly
Høy ytelse oppnås takket være en flertrådsarkitektur uten å dele ressurser (shared-nothing), som betyr at en egen kontroller er knyttet til hver tråd med sin egen databit, som fungerer uten mutexes eller spin-locks.
Lette VLL-låser brukes for å garantere atomitet når du arbeider med flere nøkler, siden for å lagre informasjonen effektivt i minnet, brukes dashtabellstrukturen, som implementerer en slags partisjonerte hash-tabeller.
Sammenlignet med Redis, har Dragonfly en 25x ytelsesøkning (3,8 millioner forespørsler per sekund) under typiske arbeidsbelastninger i et Amazon EC2 c6gn.16xlarge-miljø. Sammenlignet med Memcached i et AWS c6gn.16xlarge-miljø, var Dragonfly i stand til å fullføre 4,7 ganger flere skriveforespørsler per sekund (3,8 millioner mot 806k) og 1,77 ganger flere leseforespørsler per sekund (3,7 millioner mot 2,1 millioner).
I 5 GB lagringstester, Dragonfly krevde 30 % mindre minne enn Redis. Under opprettelse av øyeblikksbilder ved å bruke "bgsave"-kommandoen, øker minneforbruket, men på topptider ble det holdt nesten tre ganger mindre enn i Redis, og selve skriveoperasjonen for øyeblikksbilde er mye raskere (i tilfelle Redis). test, a snapshot ble skrevet på Dragonfly på 30 sekunder, og Redis – på 42 sekunder).
Noen Dragonfly-funksjoner er:
- En hurtigbuffermodus som automatisk erstatter gamle data med nye data når ledig minne er oppbrukt.
- Støtte for databindingslivssykluser der data anses som oppdaterte.
- Støtte for å skylle lagringstilstand til disk i bakgrunnen for senere gjenoppretting etter omstart.
- Tilstedeværelsen av en HTTP-konsoll (binder på TCP-port 6379) for systemadministrasjon og en API for å returnere beregninger, kompatibel med Prometheus.
- Støtte for 185 Redis-kommandoer, omtrent tilsvarende funksjonaliteten til Redis 5-utgivelsen.
- Støtte for alle Memcached-kommandoer unntatt CAS (verifiser og konfigurer).
- Støtte for asynkrone operasjoner for å lage øyeblikksbilder.
- Forutsigbart minneforbruk.
- Integrert Lua-tolk 5.4.
- Støtte for komplekse datatyper som hashes, sett, lister (ZSET, HSET, LIST, SETS og STRING) og JSON-data.
- Lagringsreplikeringsstøtte for failover og lastbalansering.
For de som er interessert i Dragonfly-koden, bør du vite at dette er skrevet i C/C++ og er distribuert under lisensen BSL Essensen av BSL er at den utvidede funksjonalitetskoden i utgangspunktet er tilgjengelig for modifikasjon, men i noen tid kan den brukes gratis kun underlagt tilleggsbetingelser, som krever kjøp av en kommersiell lisens for å omgå.
Dragonfly-prosjektets tilleggslisensvilkår krever at koden migreres til Apache License 2.0 15. mars 2028. Inntil da tillater lisensen bruk av koden kun for å sikre driften av tjenestene og produktene, men forbyr bruk for å lage betalte skytjenester som fungerer som en plug-in til Dragonfly.
Endelig hvis du er interessert i å vite litt mer om det, kan du sjekke detaljene i følgende lenke.