A Dragonfly projekt a Redis és a Memcached gyorsabb helyettesítését fejleszti

Elérhető a Dragonfly memórián belüli gyorsítótárazó rendszer első kiadása, amely támogatja a Memcached és Redis protokollokat, de lehetővé teszi a lekérdezések sokkal nagyobb teljesítménnyel és kisebb memóriafelhasználással történő végrehajtását. A rendszer kulcs/érték formátumban kezeli az adatokat, és könnyű megoldásként használható a nagy terhelésű helyek munkájának felgyorsítására, a lassú lekérdezések gyorsítótárazására a DBMS-be és a közbenső adatokra a RAM-ban. A Dragonfly kód C/C++ nyelven íródott, és BSL (Business Source License) alatt kerül terjesztésre.

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 fejlett funkcionalitás kódja kezdetben módosítható, de egy ideig csak további feltételek teljesülése esetén használható ingyenesen, amelyek megkerüléséhez kereskedelmi licenc vásárlása szükséges. A Dragonfly projekt további licencfeltételei megkövetelik, hogy a kódot csak 2.0. június 1-jén vigyék át az Apache 2027 licencbe. Addig a licenc csak a szolgáltatásai és termékei működésének biztosítására engedélyezi a kód használatát, de tiltja a Dragonfly kiegészítőjeként működő fizetős felhőszolgáltatások létrehozását.

A fejlesztők és a bemutatott tesztek szerint a Dragonfly a leggyorsabb memóriatároló rendszer. A Redishez képest a Dragonfly 25-szörös teljesítménynövekedést és háromszoros memóriafogyasztás-csökkenést ért el a tipikus munkaterhelések mellett. Egy Dragonfly szerver több millió kérést képes feldolgozni másodpercenként, az Amazon EC2 c6gn.16xlarge környezetben például 3.8 millió kérés/másodperc teljesítményt lehetett elérni.

A Dragonfly projekt a Redis és a Memcached gyorsabb helyettesítését fejleszti

Az 5 GB adat tárolására szolgáló tesztekben a Dragonfly 30%-kal kevesebb memóriát igényelt, mint a Redis. Pillanatképek készítésekor a „bgsave” paranccsal a memóriafelhasználás nő, de csúcsidőszakokban csaknem háromszor kevesebb marad, mint Redisben, és maga a pillanatfelvételek rögzítési művelete is sokkal gyorsabb (a tesztben a Dragonfly-ben egy pillanatkép 30-ban készült másodperc, míg Redis - 42 másodperc alatt).

A Dragonfly projekt a Redis és a Memcached gyorsabb helyettesítését fejleszti

A nagy teljesítmény az erőforrások megosztása nélküli többszálú architektúrának köszönhető (shared-nothing), ami azt jelenti, hogy minden szálhoz külön processzor van hozzárendelve saját adatrésszel, amely mutexek és spin-lockok nélkül működik. A több kulccsal végzett munka során az atomitás biztosítása érdekében könnyű VLL zárakat használnak. Az információk hatékony memóriában való tárolása érdekében a dashtable struktúrát használják, amely egyfajta particionált hash táblát valósít meg.

Az első kiadásban elérhető szolgáltatások közül a RESP2 protokoll és a 130 Redis-parancs támogatása szerepel, ami megközelítőleg megfelel a Redis 2.8-as kiadásának. Ezenkívül a Dragonfly támogatja az összes memcached parancsot, kivéve a CAS-t (check-and-set), támogatja az aszinkron műveleteket pillanatképek készítéséhez, kiszámítható memóriafelhasználást biztosít, beépített Lua 5.4 értelmezőt, és támogatja az összetett adattípusokat, például a hash-eket, halmazok és listák (ZSET, HSET, LIST, SETS és STRING).

Külön elérhető a gyorsítótárazási mód, amely a szabad memória kimerülése után automatikusan új adatokkal helyettesíti a régi adatokat. Lehetőség van az adatokhoz egy életen át csatolni, amely során az adatokat relevánsnak tekintik. A tárolási állapot a háttérben a lemezre üríthető az újraindítás utáni későbbi helyreállítás érdekében. A rendszer kezeléséhez egy HTTP-konzol (a 6379-es TCP-porthoz kötődik) és egy API a metrikák visszaküldéséhez, amely kompatibilis a Prometheusszal. A jövőbeli verziókban a Redis-parancsok támogatásának bővítését és a tároló replikálásának lehetőségét tervezzük a hibatűrés és a terheléselosztás biztosítása érdekében.

Forrás: opennet.ru

Hozzászólás