Megjelent a Dragonfly rendszer, amely egy kulcs-érték alapon működő, gyorsítótárazó és memóriában tároló megoldás, amely segítségével felgyorsíthatók a nagy terhelésű weboldalak, gyorsítva a lassú adatbázis-lekérdezéseket és az átmeneti adatokat a memóriában. A Dragonfly támogatja a Memcached és Redis protokollokat, lehetővé téve a meglévő kliens könyvtárak használatát, és átkonfigurálás nélkül alkalmazható projektekre, amelyek Memcached-t és Redis-t használnak.
A Redishez képest a Dragonfly a tipikus terhelések mellett az Amazon EC2 c6gn.16xlarge környezetében 25-szörös teljesítménynövekedést mutatott (3,8 millió lekérdezés másodpercenként). A Memcached-hez viszonyítva az AWS-környezetben a c6gn.16xlarge esetén a Dragonfly 4,7-szer több írási lekérdezést tudott teljesíteni másodpercenként (3,8 millió szemben 806 ezerrel) és 1,77-szer több olvasási lekérdezést (3,7 millió szemben 2,1 millióval).

5 GB adat tárolási tesztjei során a Dragonfly 30%-kal kevesebb memóriát igényelt, mint a Redis. A „bgsave” parancs során a pillanatnyi memóriafogyasztás nő, de a csúcsidők alatt szinte háromszor alacsonyabb maradt, mint a Redisnél, ráadásul a pillanatkép írási művelete végrehajtása sokkal gyorsabb (a Dragonfly-nál a pillanatkép 30 másodperc alatt, míg a Redisnél 42 másodperc alatt lett elmentve).

A magas teljesítmény a megosztott erőforrások nélküli, több szálas architektúrának köszönhető, amelynek lényege, hogy minden szálhoz külön, elszigetelt kezelő tartozik a saját adathalmozójával, mutexek és spin-lockok nélkül működve. Az atomarítás érdekében több kulccsal való munkavégzésnél könnyű VLL zárolásokat alkalmazunk. Az információ hatékony tárolására a memóriában a dashtable struktúrát használják, amely a szekcionált hash-táblák változatát valósítja meg.
A Dragonfly néhány funkciója:
- Gyorsítótárazási mód, amely automatikusan felülírja a régi adatokat újakkal, amint a szabad memória kifogy.
- Támogatás az adatok élettartamának időhöz való kötésére, amely alatt az adatok aktuálisnak számítanak.
- A háttérben futó tárolóállapot-mentési támogatás, amely lehetővé teszi a peremállapotok visszaállítását újraindítás után.
- HTTP konzol jelenléte (a 6379 TCP portra kötődik), amely lehetővé teszi a rendszer irányítását és az API-t a metrikák megadásához, Prometheus-kompatibilis.
- 185 Redis parancs támogatása, amely körülbelül megfelel a Redis 5 kiadás funkcióinak.
- Minden Memcached parancs támogatása, kivéve a CAS (check-and-set) parancsot.
- Aszinkron műveletek támogatása a pillanatképek létrehozásához.
- Előre jelezhető memóriafogyasztás.
- Beágyazott Lua 5.4 értelmező.
- Összetett adatszerkezetek támogatása, például hash-ek, halmazok, listák (ZSET, HSET, LIST, SETS és STRING) és JSON formátumú adatok.
- A tárolók replikációs támogatása a megbízhatóság és terheléselosztás biztosítása érdekében.
A Dragonfly kód C/C++ nyelveken íródott, és BSL (Business Source License) alatt terjesztik. A BSL licencet a MySQL társalapítói javasolták az Open Core modell alternatívájaként. A BSL lényege, hogy a kibővített funkcionalitás kódja kezdetben változtatási célokra elérhető, de egy ideig ingyenesen csak további feltételek mellett alkalmazható, amelyek megkerüléséhez kereskedelmi licenc megszerzése szükséges. A Dragonfly projekt további licencfeltételei előírják, hogy a kód március 15-én 2028-ig Apache 2.0 licencre váltson. Ezen időpont előtt a licenc megengedi a kód használatát a saját szolgáltatások és termékek működtetése érdekében, de megtiltja, hogy fizetős felhőszolgáltatások létrehozására használják, amelyek a Dragonfly-ra építenek.
A Dragonfly 1.0 verzió kiemelkedő a primer adatok replikációjának támogatásával a másodlagosra. a szerver A Dragonfly-t másodlagos tárolóként is konfigurálni lehet, amely a primer szerverből fogadja az adatokat, akár Dragonfly, akár Redis alapú. A replikáció kezelésére szolgáló API kompatibilis a Redis-szel, és a ROLE és REPLICAOF (SLAVEOF) parancsok használatán alapul.
Forrás: opennet.ru
