Garnet je nova vrsta oddaljenega shranjevanja predpomnilnika, ki ga je razvil Microsoft Research in ponuja več edinstvenih prednosti:
- Garnet kot izhodišče uporablja priljubljeni RESP linijski protokol, ki omogoča uporabo Garneta iz nespremenjenih Redis odjemalcev, ki so danes na voljo v večini programskih jezikov, kot je StackExchange.Redis v C#.
- Garnet ponuja boljšo prepustnost in razširljivost z mnogimi povezavami odjemalcev in majhnimi serijami v primerjavi s primerljivim odprtokodnim predpomnilnikom, kar prihrani stroške za velike aplikacije in storitve.
- Garnet je pokazal izjemno nizko zakasnitev odjemalcev (običajno manj kot 300 mikrosekund pri 99,9 %) pri uporabi VM-jev Commodity Cloud (Azure) z omogočenim pospešenim TCP, kar je ključno za resnične situacije.
- Garnet temelji na najnovejši .NET tehnologiji, je večplatformski, razširljiv in sodoben. Zasnovan je tako, da je enostaven za razvoj in razvoj, ne da bi pri tem žrtvoval zmogljivost v običajnih situacijah. Izkoristimo bogat knjižnični ekosistem .NET za razširitev API-ja in zagotavljanje odprtih možnosti optimizacije. Zaradi skrbne uporabe .NET Garnet dosega najsodobnejšo zmogljivost tako na Linuxu kot na Windows.
Odprtokodni naslov:Prijava do hiperpovezave je vidna. Dokumentacija:Prijava do hiperpovezave je vidna.
Granat ima naslednje ključne prednosti:
- Prepustnost strežnika (operacij na sekundo) se poveča za več velikostnih redov za majhne serije in številne odjemalske seje v primerjavi s primerljivim odprtokodnim predpomnilnikom.
- Na običajnih oblačnih (Azure) računalnikih z omogočenim pospešenim TCP na Windows in Linux je zakasnitev na operacijo izjemno nizka (običajno manj kot 300 mikrosekund pri 99,9 %).
- Z naraščajočim številom odjemalcev se doseže boljša razširljivost z ali brez skupinskega razširjanja odjemalcev.
- Možnost uporabe vseh CPU/pomnilniških virov strežniškega računalnika preko ene same instance strežnika z deljenim pomnilnikom (ni potrebe po znotraj-vozliščnem gručenju).
- Podpora za podatkovne zbirke, večje od pomnilnika, ki se presežejo na lokalne in oblačne naprave za shranjevanje.
- Funkcije baze podatkov, kot so hitra kontrolna točka in obnova ter objava/naročnina.
- Podpora za večvozliščno razdeljevanje hash razdelkov (Redis "cluster" način), migracijo stanj in replikacijo.
- Dobro testirano s celovitim testnim naborom (tisoči enotnih testov proti Garnetu in njegovemu shranjevalnemu sloju Tsavorite).
- C# kode, ki jo je enostavno razvijati in razširiti.
Garnet ne podpira vseh ukazov Redis, posebej podprtih ukazov za ogled:Prijava do hiperpovezave je vidna. Projekt Garnet vključuje orodje Benchmark za izvajanje RESP testov z uporabo različnih odjemalcev, različnih delovnih obremenitev in različnih politik za merjenje prepustnosti, zmogljivosti in zakasnitve. Naslov:Prijava do hiperpovezave je vidna. RESP protokol:Prijava do hiperpovezave je vidna.
Ta članek uporablja vgrajena orodja za primerjalno testiranje Redisa za preprosto testiranje, testno okolje pa je naslednje:
| predpomnilnik | različica | | Redis | Redis 3.0.504 (00000000/0) 64 bit | | Granat | Garnet 1.0.2 64 bit; Samostojni način |
Redis benchmarki
Najprej zaženite Redis predpomnilnik z ukazno vrstico z naslednjim ukazom:
Testni ukaz je naslednji:
Rezultati so naslednji:
====== SET ====== 5000000 zahtevkov zaključenih v 24,38 sekundah 100 vzporednih odjemalcev 3-bajtna vsebina Ohrani življenje: 1
0,03 % <= 1 milisekunda 0,25 % <= 2 milisekundi 2,65 % <= 3 milisekunde 16,49% <= 4 milisekunde 59,95% <= 5 milisekund 99,09% <= 6 milisekund 99,76 % <= 7 milisekund 99,86 % <= 8 milisekund 99,93 % <= 9 milisekund 99,98% <= 10 milisekund 99,99% <= 11 milisekund 100,00 % <= 12 milisekund 20512,82 zahtevkov na sekundo
====== SE ====== 500000 zahtevkov zaključenih v 27,41 sekundah 100 vzporednih odjemalcev 3-bajtna vsebina Ohrani življenje: 1
0,03 % <= 1 milisekunda 0,19 % <= 2 milisekundi 6,44 % <= 3 milisekunde 25,82 % <= 4 milisekunde 45,65% <= 5 milisekund 98,79 % <= 6 milisekund 99,98% <= 7 milisekund 99,98 % <= 8 milisekund 99,98 % <= 9 milisekund 100,00 % <= 9 milisekund 18238,86 zahtevkov na sekundo
Granatni testi
Ustvarite nov .NET 8 konzolni projekt in najprej uporabite naslednji ukaz na paket Microsoft.Garnet:
Koda je naslednja:
Zagonski ukaz je naslednji:
Z uporabo istega ukaza benchmark je rezultat naslednji:
====== SET ====== 5000000 zahtevkov zaključenih v 11,51 sekundah 100 vzporednih odjemalcev 3-bajtna vsebina Ohrani življenje: 1
75,51 % <= 1 milisekunda 88,24 % <= 2 milisekundi 92,04% <= 3 milisekunde 99,46 % <= 4 milisekunde 99,98 % <= 5 milisekund 99,99% <= 6 milisekund 100,00 % <= 12 milisekund 100,00 % <= 12 milisekund 43448,04 zahtevkov na sekundo
====== SE ====== 5000000 zahtevkov zaključenih v 31,50 sekundah 100 vzporednih odjemalcev 3-bajtna vsebina Ohrani življenje: 1
0,01 % <= 1 milisekunda 0,90 % <= 2 milisekundi 27,25% <= 3 milisekunde 97,65% <= 4 milisekunde 99,82 % <= 5 milisekund 99,94% <= 6 milisekund 99,98% <= 7 milisekund 99,98 % <= 9 milisekund 99,98% <= 10 milisekund 99,99% <= 11 milisekund 100,00 % <= 12 milisekund 100,00 % <= 12 milisekund 15872,01 zahtevkov na sekundo Zaradi orodij za testiranje, različic programske opreme, testnih parametrov itd., ki vodijo do različnih rezultatov, so testi zgolj za referenco; skozi preproste teste v tem članku je razvidno, da ima Garnet bistveno nižjo zakasnitev kot Redis.
(Konec) |