Garnet je nový typ vzdáleného cache úložiště vyvinutý společností Microsoft Research, který nabízí několik jedinečných výhod:
- Garnet bere jako výchozí bod populární protokol RESP line, který umožňuje používat Garnet z nemodifikovaných klientů Redis dostupných ve většině programovacích jazyků dnes, například StackExchange.Redis v C#.
- Garnet nabízí lepší propustnost a škálovatelnost díky mnoha klientským připojením a menším dávkám ve srovnání s srovnatelným open-source cache úložištěm, což šetří náklady u velkých aplikací a služeb.
- Garnet prokázal extrémně nízkou latenci klienta (obvykle méně než 300 mikrosekund při 99,9 %) při použití Commodity Cloud (Azure) VM s povoleným zrychleným TCP, což je klíčové pro reálné scénáře.
- Garnet je založen na nejnovější .NET technologii, je multiplatformní, rozšiřitelný a moderní. Je navržen tak, aby byl snadno rozvíjetelný a vyvíjetelný bez obětování výkonu v běžných situacích. Využíváme bohatý knihovní ekosystém .NET k rozšíření API a poskytování otevřených optimalizačních příležitostí. Díky pečlivému používání .NET dosahuje Garnet špičkového výkonu jak na Linuxu, tak na Windows.
Open source adresa:Přihlášení k hypertextovému odkazu je viditelné. Dokumentace:Přihlášení k hypertextovému odkazu je viditelné.
Granát má následující klíčové výhody:
- Propustnost serveru (operace za sekundu) je zvýšena o několik řádů u malých dávek a mnoha klientských relací ve srovnání s podobným open source cache úložištěm.
- Na běžných cloudových (Azure) strojích s povoleným zrychleným TCP na Windows a Linuxu je latence na operaci extrémně nízká (obvykle méně než 300 mikrosekund při 99,9 %).
- S rostoucím počtem klientů je dosaženo lepší škálovatelnosti s klientským batchováním i bez něj.
- Možnost využívat všechny CPU/paměťové zdroje serverového počítače prostřednictvím jedné sdílené instance serveru (není potřeba shlukování uvnitř uzlů).
- Podpora pro datové sady větší než paměť, které přetékají do místních a cloudových úložných zařízení.
- Funkce databáze jako rychlý checkpoint a obnova a publikování/odběr.
- Podpora víceuzlově shardovaného hash partitioningu (režim Redis "cluster"), migrace stavů a replikace.
- Dobře testováno s komplexní testovací sadou (tisíce jednotkových testů proti Garnetu a jeho úložišti Tsavorite).
- C# kód, který se snadno rozvíjí a rozšiřuje.
Garnet nepodporuje všechny příkazy Redis, konkrétně podporované příkazy pro zobrazení:Přihlášení k hypertextovému odkazu je viditelné. Projekt Garnet zahrnuje nástroj Benchmark pro spouštění RESP benchmarků s využitím různých klientů, různých pracovních zátěží a různých politik pro měření propustnosti, výkonu a latence. Adresa:Přihlášení k hypertextovému odkazu je viditelné. RESP protokol:Přihlášení k hypertextovému odkazu je viditelné.
Tento článek využívá vestavěné benchmarkovací nástroje Rejis pro jednoduché testování a testovací prostředí je následující:
| mezipaměť | verze | | Redis | Redis 3.0.504 (00000000/0) 64 bit | | Granát | Garnet 1.0.2 64bit; Samostatný režim |
Redis benchmarky
Nejprve spusťte cache Redis pomocí příkazového řádku s následujícím příkazem:
Testovací příkaz je následující:
Výsledky jsou následující:
====== SET ====== 5000000 požadavků dokončeno za 24,38 sekundy 100 paralelních klientů 3 bajty užitečného zatížení Udržet naživu: 1
0,03 % <= 1 milisekunda 0,25 % <= 2 milisekundy 2,65 % <= 3 milisekundy 16,49 % <= 4 milisekundy 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 požadavků za sekundu
====== DOSTAT ====== 5000000 požadavků dokončeno za 27,41 sekundy 100 paralelních klientů 3 bajty užitečného zatížení Udržet naživu: 1
0,03 % <= 1 milisekunda 0,19 % <= 2 milisekundy 6,44 % <= 3 milisekundy 25,82 % <= 4 milisekundy 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 požadavků za sekundu
Benchmarky granátů
Vytvořte nový .NET 8 konzolový projekt a nejprve odkazujte na balíček Microsoft.Garnet pomocí následujícího příkazu:
Kód je následující:
Příkaz ke spuštění je následující:
Použitím stejného příkazu benchmarku je výsledek následující:
====== SET ====== 5000000 požadavků dokončeno za 11,51 sekundy 100 paralelních klientů 3 bajty užitečného zatížení Udržet naživu: 1
75,51 % <= 1 milisekunda 88,24 % <= 2 milisekundy 92,04 % <= 3 milisekundy 99,46 % <= 4 milisekundy 99,98 % <= 5 milisekund 99,99 % <= 6 milisekund 100,00 % <= 12 milisekund 100,00 % <= 12 milisekund 43448,04 požadavků za sekundu
====== DOSTAT ====== 5000000 požadavků dokončeno za 31,50 sekundy 100 paralelních klientů 3 bajty užitečného zatížení Udržet naživu: 1
0,01 % <= 1 milisekunda 0,90 % <= 2 milisekundy 27,25 % <= 3 milisekundy 97,65 % <= 4 milisekundy 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 požadavků za sekundu Kvůli testovacím nástrojům, verzím softwaru, testovacím parametrům atd. vše vede k různým výsledkům, testy jsou pouze pro referenci, a díky jednoduchým testům v tomto článku je patrné, že Garnet má výrazně nižší latenci než Redis.
(Konec) |