Lanseringen av datacaching- och lagringssystemet Dragonfly har Àgt rum, som manipulerar data i nyckel/vÀrde-format och kan anvÀndas som en lÀttviktslösning för att öka hastigheten pÄ högbelastade webbplatser, cacha lÄngsamma databaskommandon och mellanliggande data i RAM. Dragonfly stöder protokollen Memcached och Redis, vilket gör att man kan anvÀnda redan existerande klientbibliotek och utan omarbetning av koden överföra projekt som anvÀnder Memcached och Redis till Dragonfly.
I tester har Dragonfly uppnÄtt en 25-faldig prestationsökning jÀmfört med Redis vid typiska belastningar i miljön Amazon EC2 c6gn.16xlarge (3,8 miljoner förfrÄgningar per sekund). JÀmfört med Memcached i AWS-miljön c6gn.16xlarge kunde Dragonfly utföra 4,7 gÄnger fler skrivförfrÄgningar per sekund (3,8 miljoner mot 806 tusen) och 1,77 gÄnger fler lÀsförfrÄgningar per sekund (3,7 miljoner mot 2,1 miljoner).

Vid tester av lagring av 5 GB data krÀvde Dragonfly 30% mindre minne jÀmfört med Redis. Under skapande av snapshots med kommandot "bgsave" ökar minnesanvÀndningen, men vid toppmoment förblev den nÀstan tre gÄnger mindre Àn i Redis, och sjÀlva snapshot-skrivoperationen utfördes betydligt snabbare (i testet skrevs snapshotet i Dragonfly pÄ 30 sekunder, medan Redis tog 42 sekunder).

Hög prestanda uppnÄs genom en flerkÀrnarkitektur utan resursdelning (shared-nothing), vilket innebÀr att varje trÄd kopplas till en separat, avskild behandlare med sin egen del av data, som arbetar utan mutexar och spin-lÄs. För att sÀkerstÀlla atomÀritet vid arbete med flera nycklar anvÀnds lÀtta lÄs VLL. För effektiv lagring av information i minnet tillÀmpas strukturen dashtable, som implementerar en variant av sektionerade hash-tabeller.
NÄgra av funktionerna i Dragonfly:
- CachinglÀge dÀr gamla data automatiskt ersÀtts av nya efter att det fria minnet har tagits slut.
- Stöd för att binda data till en livslÀngd, under vilken data betraktas som aktuella.
- Stöd för att ÄterstÀlla lagringssystemet till disk i bakgrunden för ÄterstÀllning efter omstart.
- HTTP-konsol (kopplad till TCP-port 6379) för systemhantering och API för att leverera metrics, kompatibel med Prometheus.
- Stöd för 185 Redis-kommandon, vilket ungefÀr motsvarar funktionaliteten i Redis version 5.
- Stöd för alla Memcached-kommandon, förutom CAS (check-and-set).
- Stöd för asynkrona operationer för skapande av snapshots.
- FörutsÀgbart minnesutnyttjande.
- Inbyggd Lua 5.4-tolk.
- Stöd för komplexa datatyper som hash, mÀngder, listor (ZSET, HSET, LIST, SETS och STRING) samt data i JSON-format.
- Stöd för lagringsreplikering för att sÀkerstÀlla felresilens och belastningsbalansering.
Koden för Dragonfly Àr skriven i C/C++ och distribueras under BSL (Business Source License). BSL-lisensen föreslogs av medgrundarna till MySQL som ett alternativ till Open Core-modellen. KÀrnan i BSL Àr att koden för utökad funktionalitet initialt Àr tillgÀnglig för Àndringar, men under en viss tid kan den gratis anvÀndas endast under vissa villkor, vars omgÄelse krÀver köp av en kommersiell licens. De ytterligare licensvillkoren för Dragonfly-projektet föreskriver att koden ska överföras till Apache 2.0-licens den 15 mars 2028. Fram till dess tillÄter licensen anvÀndningen av koden endast för att understödja sina egna tjÀnster och produkter, men förbjuder anvÀndning för att skapa betalande molntjÀnster som stÄr ovanför Dragonfly.
Version 1.0 av Dragonfly Àr anmÀrkningsvÀrd för genomförandet av stöd för datareplication frÄn primÀr servern till sekundÀr. Dragonfly kan stÀllas in för att anvÀndas som sekundÀr lagring som tar emot data frÄn den primÀra servern, bÄde baserat pÄ Dragonfly och Redis. API:et för hantering av replikering Àr kompatibelt med Redis och baseras pÄ kommandona ROLE och REPLICAOF (SLAVEOF).
KĂ€lla: opennet.ru
