Dragonfly-projektet udvikler hurtigere erstatning for Redis og Memcached

Den første udgivelse af Dragonfly in-memory caching-systemet er tilgængelig, som understøtter Memcached- og Redis-protokollerne, men gør det muligt at udføre forespørgsler med meget højere ydeevne og mindre hukommelsesforbrug. Systemet manipulerer data i nøgle/værdi-format og kan bruges som en letvægtsløsning til at fremskynde arbejdet på højbelastede websteder, cache langsomme forespørgsler til DBMS og mellemliggende data i RAM. 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 for avanceret funktionalitet i første omgang er tilgængelig for ændring, men i nogen tid kun kan bruges gratis, hvis yderligere betingelser er opfyldt, som kræver køb af en kommerciel licens for at omgå. Yderligere licensvilkår for Dragonfly-projektet kræver, at koden kun overføres til Apache 2.0-licensen den 1. juni 2027. Indtil dette tidspunkt tillader licensen kun brug af koden for at sikre driften af ​​dens tjenester og produkter, men forbyder brug til oprettelse af betalte cloud-tjenester, der fungerer som en tilføjelse til Dragonfly.

Ifølge udviklerne og demonstrerede test hævder Dragonfly at være det hurtigste hukommelseslagringssystem. Sammenlignet med Redis opnåede Dragonfly en 25-dobling af ydeevnen og en tredobling i hukommelsesforbruget for typiske arbejdsbelastninger. Én Dragonfly-server kan behandle millioner af anmodninger i sekundet, for eksempel var det i Amazon EC2 c6gn.16xlarge-miljøet muligt at opnå en ydeevne på 3.8 millioner anmodninger i sekundet.

Dragonfly-projektet udvikler hurtigere erstatning for Redis og Memcached

I test til lagring af 5 GB data krævede Dragonfly 30 % mindre hukommelse end Redis. Når du opretter snapshots med kommandoen "bgsave", øges hukommelsesforbruget, men i spidsbelastningsperioder forbliver det næsten tre gange mindre end i Redis, og selve snapshot-optagelsen er meget hurtigere (i testen blev et snapshot i Dragonfly skrevet i 30 sekunder, mens Redis - på 42 sekunder).

Dragonfly-projektet udvikler hurtigere erstatning for Redis og Memcached

Høj ydeevne opnås takket være en multi-threaded arkitektur uden at dele ressourcer (shared-nothing), hvilket betyder, at hver tråd er tildelt en separat separat processor med sin egen del af data, der fungerer uden mutexes og spin locks. For at sikre atomicitet, når du arbejder med flere nøgler, bruges lette VLL-låse. For effektivt at gemme information i hukommelsen bruges dashtable-strukturen, som implementerer en type partitioneret hash-tabel.

Blandt de funktioner, der er tilgængelige i den første udgivelse, bemærkes understøttelse af RESP2-protokollen og 130 Redis-kommandoer, hvilket omtrent svarer til funktionaliteten i Redis 2.8-udgivelsen. Derudover understøtter Dragonfly alle memcached-kommandoer undtagen CAS (check-and-set), understøtter asynkrone operationer til oprettelse af snapshots, giver forudsigeligt hukommelsesforbrug, har en indbygget Lua 5.4-fortolker og understøtter komplekse datatyper såsom hashes, sæt og lister (ZSET, HSET, LIST, SETS og STRING).

En caching-tilstand er separat tilgængelig, som automatisk erstatter gamle data med nye data, når den ledige hukommelse er opbrugt. Det er muligt at knytte en levetid til dataene, hvor dataene anses for relevante. Lagerstatus kan skylles til disk i baggrunden til senere gendannelse efter genstart. For at styre systemet leveres en HTTP-konsol (binder til TCP-port 6379) og en API til returnering af metrics, kompatibel med Prometheus. I fremtidige versioner planlægger vi at udvide understøttelsen af ​​Redis-kommandoer og implementere muligheden for at replikere lagring for at give fejltolerance og belastningsbalancering.

Kilde: opennet.ru

Tilføj en kommentar