Megjelent a Dragonfly 1.0, az adatok RAM-ban történő gyorsítótárazására szolgáló rendszer

Megjelent a Dragonfly in-memory gyorsítótárazási és tárolási rendszer, amely kulcs/érték formátumban kezeli az adatokat, és könnyű megoldásként használható a magasan terhelt helyek munkájának felgyorsítására, a lassú lekérdezések gyorsítótárazására a DBMS-re és a közbenső adatokra a RAM-ban. A Dragonfly támogatja a Memcached és a Redis protokollokat, amelyek lehetővé teszik meglévő klienskönyvtárak használatát és projektek átvitelét a Memcached és Redis használatával a Dragonfly-ba a kód átdolgozása nélkül.

A Redishez képest a Dragonfly 2-szörös teljesítménynövekedést ért el (6 millió kérés másodpercenként) az Amazon EC16 c25gn.3.8xlarge környezetben jellemző munkaterhelések esetén. Az AWS c6gn.16xlarge környezetben lévő Memcachedhez képest a Dragonfly másodpercenként 4.7-szer több írási kérést (3.8 millió a 806 ezerhez képest) és 1.77-szer több olvasási kérést tudott végrehajtani másodpercenként (3.7 millió a 2.1 millióhoz képest).

Megjelent a Dragonfly 1.0, az adatok RAM-ban történő gyorsítótárazására szolgáló rendszer

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 megnő a memóriafogyasztás, de a csúcsidőszakokban majdnem háromszor kevesebb maradt, mint a Redisben, és maga a pillanatfelvételek rögzítési művelete is sokkal gyorsabb (a tesztben a Dragonflyben 30-ban készült pillanatkép). másodperc, míg Redis - 42 másodperc alatt).

Megjelent a Dragonfly 1.0, az adatok RAM-ban történő gyorsítótárazására szolgáló rendszer

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.

A Dragonfly néhány jellemzője:

  • Gyorsítótárazási mód, amely automatikusan lecseréli a régi adatokat új adatokra, miután a szabad memória kimerült.
  • Támogatás az adatokhoz való kötéshez egy olyan élettartamra, amely alatt az adatokat relevánsnak tekintik.
  • Támogatja a háttérben a tárolóállapot lemezre öblítését az újraindítás utáni későbbi helyreállítás érdekében.
  • A Prometheusszal kompatibilis HTTP-konzol (a 6379-es TCP-porthoz kötődik) jelenléte a rendszerfelügyelethez és egy API a metrikák visszaküldéséhez.
  • 185 Redis parancs támogatása, ami nagyjából megegyezik a Redis 5 kiadásának funkcióival.
  • Támogatja az összes Memcached parancsot, kivéve a CAS-t (check-and-set).
  • Aszinkron műveletek támogatása pillanatképek készítéséhez.
  • Kiszámítható memóriafogyasztás.
  • Beépített Lua 5.4 tolmács.
  • Támogatja az összetett adattípusokat, például kivonatokat, készleteket, listákat (ZSET, HSET, LIST, SETS és STRING) és JSON-adatokat.
  • Támogatja a tárolási replikációt a hibatűrés és a terheléselosztás érdekében.

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 előírják, hogy a kódot 2.0. március 15-én át kell vinni az Apache 2028 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 Dragonfly 1.0-s verziója az elsődleges kiszolgálóról a másodlagosra történő adatreplikáció támogatásának megvalósításáról nevezetes. A Dragonfly azonban beállítható másodlagos tárolóként való használatra, amely adatokat fogad az elsődleges kiszolgálótól, akár a Dragonfly, akár a Redis alapján. A replikációkezelési API kompatibilis a Redis-szel, és a ROLE és REPLICAOF (SLAVEOF) parancsok használatán alapul.

Forrás: opennet.ru

Hozzászólás