Dragonfly-prosjektet utvikler en raskere erstatning for Redis og Memcached

Den første utgivelsen av Dragonfly-minnebufringssystemet er tilgjengelig, og gir støtte for Memcached- og Redis-protokollene, men lar spørringer utføres med mye høyere ytelse og mindre minneforbruk. Systemet manipulerer data i nøkkel-/verdi-format og kan brukes som en lettvektsløsning for å fremskynde arbeidet til høybelastningssider, bufre trege spørringer til DBMS og mellomliggende data i RAM. Dragonfly-koden er skrevet i C/C++ og distribueres under BSL (Business Source License).

BSL-lisensen ble foreslått av medgründerne av MySQL som et alternativ til Open Core-modellen. Essensen av BSL er at koden for avansert funksjonalitet i utgangspunktet er tilgjengelig for modifikasjon, men i noen tid kan brukes gratis bare hvis ytterligere betingelser er oppfylt, som krever kjøp av en kommersiell lisens for å omgå. Ytterligere lisensvilkår for Dragonfly-prosjektet krever at koden overføres til Apache 2.0-lisensen kun 1. juni 2027. Inntil dette tidspunktet tillater lisensen bruk av koden kun for å sikre driften av tjenestene og produktene, men forbyr bruk for å lage betalte skytjenester som fungerer som et tillegg til Dragonfly.

Ifølge utviklerne og demonstrerte tester hevder Dragonfly å være det raskeste minnelagringssystemet. Sammenlignet med Redis oppnådde Dragonfly en 25-dobling i ytelse og en tredobling i minneforbruk for typiske arbeidsbelastninger. Én Dragonfly-server kan behandle millioner av forespørsler per sekund, for eksempel i Amazon EC2 c6gn.16xlarge-miljøet var det mulig å oppnå en ytelse på 3.8 millioner forespørsler per sekund.

Dragonfly-prosjektet utvikler en raskere erstatning for Redis og Memcached

I tester for lagring av 5 GB data krevde Dragonfly 30 % mindre minne enn Redis. Når du lager øyeblikksbilder med "bgsave"-kommandoen, øker minneforbruket, men i toppøyeblikk forblir det nesten tre ganger mindre enn i Redis, og selve øyeblikksbildeopptaksoperasjonen er mye raskere (i testen ble et øyeblikksbilde i Dragonfly skrevet i 30 sekunder, mens Redis - på 42 sekunder).

Dragonfly-prosjektet utvikler en raskere erstatning for Redis og Memcached

Høy ytelse oppnås takket være en flertrådsarkitektur uten å dele ressurser (shared-nothing), noe som betyr at hver tråd er tildelt en separat separat prosessor med sin egen del av data, som fungerer uten mutexes og spin-låser. For å sikre atomitet når du arbeider med flere nøkler, brukes lette VLL-låser. For å effektivt lagre informasjon i minnet, brukes dashtable-strukturen, som implementerer en type partisjonert hashtabell.

Blant funksjonene som er tilgjengelige i den første utgivelsen, er støtte for RESP2-protokollen og 130 Redis-kommandoer notert, som omtrent tilsvarer funksjonaliteten til Redis 2.8-utgivelsen. I tillegg støtter Dragonfly alle memcached-kommandoer unntatt CAS (check-and-set), gir støtte for asynkrone operasjoner for å lage øyeblikksbilder, gir forutsigbart minneforbruk, har en innebygd Lua 5.4-tolk og støtter komplekse datatyper som hashes, sett og lister (ZSET, HSET, LIST, SETS og STRING).

En caching-modus er separat tilgjengelig, som automatisk erstatter gamle data med nye data etter at det ledige minnet er oppbrukt. Det er mulig å knytte en levetid til dataene der dataene anses som relevante. Lagringstilstand kan skylles til disk i bakgrunnen for senere gjenoppretting etter omstart. For å administrere systemet leveres en HTTP-konsoll (binder til TCP-port 6379) og en API for å returnere beregninger, kompatibel med Prometheus. I fremtidige versjoner planlegger vi å utvide støtten for Redis-kommandoer og implementere muligheten til å replikere lagring for å gi feiltoleranse og lastbalansering.

Kilde: opennet.ru

Legg til en kommentar