Garnet je nový typ vzdialeného cache úložiska vyvinutý spoločnosťou Microsoft Research, ktorý ponúka niekoľko jedinečných výhod:
- Garnet berie ako východiskový bod populárny RESP line protokol, ktorý umožňuje používať Garnet z nemodifikovaných Redis klientov dostupných vo väčšine programovacích jazykov dnes, ako je StackExchange.Redis v C#.
- Garnet ponúka lepšiu priepustnosť a škálovateľnosť s mnohými klientskými pripojeniami a malými dávkami v porovnaní s porovnateľným open-source cache úložiskom, čím šetrí náklady pre veľké aplikácie a služby.
- Garnet preukázal extrémne nízku latenciu klienta (typicky menej ako 300 mikrosekúnd pri 99,9 %) pri použití Commodity Cloud (Azure) VM s povoleným zrýchleným TCP, čo je kľúčové pre reálne situácie.
- Garnet je založený na najnovšej .NET technológii a je multiplatformový, rozšíriteľný a moderný. Je navrhnutý tak, aby sa ľahko rozvíjal a vyvíjal bez obetovania výkonu v bežných situáciách. Využívame bohatý knižničný ekosystém .NET na rozšírenie API a poskytovanie otvorených optimalizačných príležitostí. Vďaka starostlivému používaniu .NET dosahuje Garnet špičkový výkon na Linuxe aj Windows.
Open Source adresa:Prihlásenie na hypertextový odkaz je viditeľné. Dokumentácia:Prihlásenie na hypertextový odkaz je viditeľné.
Granát má nasledujúce kľúčové výhody:
- Priepustnosť servera (operácie za sekundu) sa zvyšuje o niekoľko rádov veľkosti pri malých dávkach a mnohých klientskych reláciách v porovnaní s porovnateľným open source cache úložiskom.
- Na bežných cloudových (Azure) strojoch s povoleným zrýchleným TCP na Windows a Linux je latencia na operáciu extrémne nízka (zvyčajne menej ako 300 mikrosekúnd pri 99,9 %).
- S rastúcim počtom klientov sa dosahuje lepšia škálovateľnosť s klientovým batchovaním alebo bez neho.
- Možnosť využívať všetky CPU/pamäťové zdroje serverového počítača prostredníctvom jednej zdieľanej pamäťovej serverovej inštancie (bez potreby zhlukovania v rámci uzla).
- Podpora pre dátové súbory väčšie ako pamäť, ktoré pretekajú do lokálnych a cloudových úložných zariadení.
- Funkcie databázy ako rýchly kontrolný bod a obnova a publikovanie/predplatné.
- Podpora multi-node sharded hash partitioningu (režim Redis "cluster"), migrácie stavov a replikácie.
- Dobre testované s komplexnou testovacou sadou (tisíce jednotkových testov proti Garnet a jeho úložisku Tsavorite).
- C# kódová základňa, ktorú je ľahké vyvíjať a rozširovať.
Garnet nepodporuje všetky príkazy Redis, konkrétne podporované príkazy na zobrazenie:Prihlásenie na hypertextový odkaz je viditeľné. Projekt Garnet zahŕňa nástroj Benchmark na spúšťanie RESP benchmarkov s využitím rôznych klientov, rôznych pracovných záťaží a rôznych politík na meranie priepustnosti, výkonu a latencie. Adresa:Prihlásenie na hypertextový odkaz je viditeľné. RESP protokol:Prihlásenie na hypertextový odkaz je viditeľné.
Tento článok využíva vstavané benchmarkovacie nástroje Redis na jednoduché testovanie a testovacie prostredie je nasledovné:
| vyrovnávacia pamäť | verzia | | Redis | Redis 3.0.504 (00000000/0) 64 bit | | Granát | Garnet 1.0.2 64 bit; Samostatný režim |
Redis benchmarky
Najprv spustite Redis cache pomocou príkazového riadku s nasledujúcim príkazom:
Testovací príkaz je nasledovný:
Výsledky sú nasledovné:
====== SET ====== 5000000 požiadaviek dokončených za 24,38 sekundy 100 paralelných klientov 3 bajty užitočného zaťaženia Udržať nažive: 1
0,03 % <= 1 milisekunda 0,25 % <= 2 milisekundy 2,65 % <= 3 milisekundy 16,49 % <= 4 milisekundy 59,95 % <= 5 milisekúnd 99,09 % <= 6 milisekúnd 99,76 % <= 7 milisekúnd 99,86 % <= 8 milisekúnd 99,93 % <= 9 milisekúnd 99,98 % <= 10 milisekúnd 99,99 % <= 11 milisekúnd 100,00 % <= 12 milisekúnd 20512,82 požiadaviek za sekundu
====== DOSTAŤ ====== 5000000 požiadaviek dokončených za 27,41 sekundy 100 paralelných klientov 3 bajty užitočného zaťaženia Udržať nažive: 1
0,03 % <= 1 milisekunda 0,19 % <= 2 milisekundy 6,44 % <= 3 milisekundy 25,82 % <= 4 milisekundy 45,65 % <= 5 milisekúnd 98,79 % <= 6 milisekúnd 99,98 % <= 7 milisekúnd 99,98 % <= 8 milisekúnd 99,98 % <= 9 milisekúnd 100,00 % <= 9 milisekúnd 18238,86 požiadaviek za sekundu
Granátové benchmarky
Vytvorte nový .NET 8 konzolový projekt a najskôr odkazujte na balík Microsoft.Garnet pomocou nasledujúceho príkazu:
Kód je nasledovný:
Príkaz na spustenie je nasledovný:
Použitím rovnakého benchmark príkazu je výsledok nasledovný:
====== SET ====== 5000000 požiadaviek dokončených za 11,51 sekundy 100 paralelných klientov 3 bajty užitočného zaťaženia Udržať nažive: 1
75,51 % <= 1 milisekunda 88,24 % <= 2 milisekundy 92,04 % <= 3 milisekundy 99,46 % <= 4 milisekundy 99,98 % <= 5 milisekúnd 99,99 % <= 6 milisekúnd 100,00 % <= 12 milisekúnd 100,00 % <= 12 milisekúnd 43448,04 požiadaviek za sekundu
====== DOSTAŤ ====== 5000000 požiadaviek dokončených za 31,50 sekundy 100 paralelných klientov 3 bajty užitočného zaťaženia Udržať nažive: 1
0,01 % <= 1 milisekunda 0,90 % <= 2 milisekundy 27,25 % <= 3 milisekundy 97,65 % <= 4 milisekundy 99,82 % <= 5 milisekúnd 99,94 % <= 6 milisekúnd 99,98 % <= 7 milisekúnd 99,98 % <= 9 milisekúnd 99,98 % <= 10 milisekúnd 99,99 % <= 11 milisekúnd 100,00 % <= 12 milisekúnd 100,00 % <= 12 milisekúnd 15872,01 požiadaviek za sekundu Kvôli testovacím nástrojom, verziám softvéru, testovacím parametrom a podobne, ktoré vedú k rôznym výsledkom, testy slúžia len na referenciu, a prostredníctvom jednoduchých testov v tomto článku je vidieť, že Garnet má výrazne nižšiu latenciu ako Redis.
(Koniec) |