A Garnet egy újfajta távoli gyorsítótár-tárolás, amelyet a Microsoft Research fejlesztett ki, és több egyedi előnyt kínál:
- A Garnet a népszerű RESP vonalprotokollt veszi kiindulópontként, ami lehetővé teszi, hogy a Garnet a legtöbb programozási nyelvben elérhető, ma már a legtöbb programozási nyelvben elérhető módosítatlan Redis kliensekből is használható, például a StackExchange.Redis C#-ban.
- A Garnet jobb áteresztőképességet és skálázhatóságot kínál sok kliens kapcsolattal és kis adagokkal szemben a hasonló nyílt forráskódú gyorsítótárhoz képest, ami költségeket takarít meg nagy alkalmazások és szolgáltatások esetén.
- A Garnet rendkívül alacsony ügyfélkésleltetést mutatott (általában kevesebb mint 300 mikromásodperc 99,9%-on, amikor Commodity Cloud (Azure) VM-eket használtak gyorsított TCP bekapcsolva, ami kritikus a valós helyzetekben.
- A Garnet a legújabb .NET technológián alapul, és platformos rendszerű, bővíthető és modern. Úgy tervezték, hogy könnyen fejleszthető és fejlődjön anélkül, hogy a teljesítményt feláldoznánk a hétköznapi helyzetekben. A .NET gazdag könyvtárökoszisztémáját kihasználjuk az API bővítésére és nyílt optimalizálási lehetőségek biztosítására. A .NET gondos alkalmazásának köszönhetően a Garnet csúcstechnológiás teljesítményt ér el mind Linuxon, mind Windowson.
Nyílt forráskódú cím:A hiperlink bejelentkezés látható. Dokumentáció:A hiperlink bejelentkezés látható.
A Garnet a következő kulcsfontosságú előnyökkel rendelkezik:
- A szerver áteresztőképessége (művelet másodpercenként) több nagyságrenddel nő kis adagok és sok kliens munkamenet esetén a hasonló nyílt forráskódú gyorsítótár tároláshoz képest.
- A commodity cloud (Azure) gépeken, ahol Windows és Linux esetén gyorsított TCP engedélyezett a késleltetés műveletenként rendkívül alacsony (általában kevesebb, mint 300 mikromásodperc, 99,9%).
- Ahogy a kliensek száma nő, jobb skálázhatóságot ér el akár kliens-batching-kel, akár nélkül.
- Lehetőség arra, hogy egy szerver számítógép összes CPU/memória erőforrását egyetlen megosztott memória-szerver példányon keresztül használja (nincs szükség csomóponton belüli klaszterezésre).
- Támogatás a memória nagyobb, mint egy olyan adathalmazhoz, amelyek túlcsordulnak az on-premises és felhőalapú tárolóeszközökre.
- Adatbázis funkciók, mint a gyors ellenőrzőpont, a helyreállítás és a közzététel/előfizetés.
- Támogatás többcsomópontos sharded hash partícióhoz (Redis "klaszter" mód), állapotmigrációhoz és replikációhoz.
- Jól tesztelték egy átfogó tesztkészlettel (több ezer egységteszt a Garnet és annak tárolási szintje, a Tsavorite ellen).
- C# kódbázis, amit könnyű fejleszteni és bővíteni.
A Garnet nem támogatja az összes Redis parancsot, különösen azokat a parancsokat, amelyek a következők megtekintéséhez támogattak:A hiperlink bejelentkezés látható. A Garnet projekt tartalmaz egy Benchmark eszközt a RESP benchmarkok futtatásához különböző kliensekkel, különböző munkaterhelésekkel és különböző szabályzatokkal az áteresztőképesség, teljesítmény és késleltetés mérésére. Cím:A hiperlink bejelentkezés látható. RESP protokoll:A hiperlink bejelentkezés látható.
Ez a cikk a Redis beépített benchmarking eszközeit használja egyszerű teszteléshez, és a tesztkörnyezet a következő:
| gyorsítótár | verzió | | Redis | Redis 3.0.504 (00000000/0) 64 bit | | Gránát | Garnet 1.0.2 64 bit; Független mód |
Redis benchmarkok
Először indítsd el a Redis gyorsítótárt a parancssorral a következő parancsval:
A tesztparancs a következő:
Az eredmények a következők:
====== BEÁLLÍTANI ====== 500000 kérés 24,38 másodperc alatt teljesítve 100 párhuzamos kliens 3 bájtos hasznos teher Életben marad: 1
0,03% <= 1 milliszekundum 0,25% <= 2 milliszekundum 2,65% <= 3 milliszekundum 16,49% <= 4 milliszekundum 59,95% <= 5 milliszekundum 99,09% <= 6 milliszekundum 99,76% <= 7 milliszekundum 99,86% <= 8 milliszekundum 99,93% <= 9 milliszekundum 99,98% <= 10 milliszekundum 99,99% <= 11 milliszekundum 100,00% <= 12 milliszekundum 20512.82 kérés másodpercenként
====== MENJ ====== 500000 kérés teljesítve 27,41 másodperc alatt 100 párhuzamos kliens 3 bájtos hasznos teher Életben marad: 1
0,03% <= 1 milliszekundum 0,19% <= 2 milliszekundum 6,44% <= 3 milliszekundum 25,82% <= 4 milliszekundum 45,65% <= 5 milliszekundum 98,79% <= 6 milliszekundum 99,98% <= 7 milliszekundum 99,98% <= 8 milliszekundum 99,98% <= 9 milliszekundum 100,00% <= 9 milliszekundum 18238.86 kérés másodpercenként
Garnet benchmarkok
Hozz létre egy új .NET 8 konzolprojektet, és először hivatkozz a Microsoft.Garnet csomagra a következő parancscal:
A kódex a következő:
A startup parancs a következő:
Ugyanazzal a benchmark parancsgal az eredmény a következő:
====== BEÁLLÍTANI ====== 500000 kérés teljesítve 11,51 másodperc alatt 100 párhuzamos kliens 3 bájtos hasznos teher Életben marad: 1
75,51% <= 1 milliszekundum 88,24% <= 2 milliszekundum 92,04% <= 3 milliszekundum 99,46% <= 4 milliszekundum 99,98% <= 5 milliszekundum 99,99% <= 6 milliszekundum 100,00% <= 12 milliszekundum 100,00% <= 12 milliszekundum 43448.04 kérés másodpercenként
====== MENJ ====== 500000 kérés 31,50 másodperc alatt teljesítve 100 párhuzamos kliens 3 bájtos hasznos teher Életben marad: 1
0,01% <= 1 milliszekundum 0,90% <= 2 milliszekundum 27,25% <= 3 milliszekundum 97,65% <= 4 milliszekundum 99,82% <= 5 milliszekundum 99,94% <= 6 milliszekundum 99,98% <= 7 milliszekundum 99,98% <= 9 milliszekundum 99,98% <= 10 milliszekundum 99,99% <= 11 milliszekundum 100,00% <= 12 milliszekundum 100,00% <= 12 milliszekundum 15872.01 kérés másodpercenként A tesztelési eszközök, szoftververziók, tesztparaméterek stb. miatt mind eltérő eredményeket vezetnek, a tesztek csak referenciaként szolgálnak, a cikkben szereplő egyszerű tesztek alapján látható, hogy a Garnet késleltetése jelentősen alacsonyabb, mint a Redis.
(Vége) |