Granāts ir jauns attālās kešatmiņas krātuves veids, ko izstrādājusi Microsoft Research, kas piedāvā vairākas unikālas priekšrocības:
- Granāts izmanto populāro RESP līnijas protokolu kā sākumpunktu, kas ļauj izmantot Garnet no nemodificētiem Redis klientiem, kas mūsdienās ir pieejami lielākajā daļā programmēšanas valodu, piemēram, StackExchange.Redis C#.
- Granāts piedāvā labāku caurlaidspēju un mērogojamību ar daudziem klientu savienojumiem un mazām partijām, salīdzinot ar salīdzināmu atvērtā koda kešatmiņas krātuvi, ietaupot izmaksas lielām lietojumprogrammām un pakalpojumiem.
- Granāts demonstrēja ārkārtīgi zemu klienta latentumu (parasti mazāk nekā 300 mikrosekundes pie 99,9%), izmantojot Commodity Cloud (Azure) VM ar iespējotu paātrinātu TCP, kas ir kritiski svarīgs reālajiem scenārijiem.
- Granāts ir balstīts uz jaunāko .NET tehnoloģiju un ir starpplatformu, paplašināms un moderns. Tas ir izstrādāts tā, lai to būtu viegli attīstīt un attīstīt, nezaudējot veiktspēju parastās situācijās. Mēs izmantojam bagātīgo .NET bibliotēku ekosistēmu, lai paplašinātu API un nodrošinātu atvērtas optimizācijas iespējas. Pateicoties mūsu rūpīgai .NET izmantošanai, Garnet sasniedz vismodernāko veiktspēju gan Linux, gan Windows.
Atvērtā koda adrese:Hipersaites pieteikšanās ir redzama. Dokumentācija:Hipersaites pieteikšanās ir redzama.
Granātam ir šādas galvenās priekšrocības:
- Servera caurlaidspēja (operācijas sekundē) tiek palielināta par vairākām pakāpēm mazām partijām un daudzām klientu sesijām salīdzinājumā ar salīdzināmu atvērtā koda kešatmiņas krātuvi.
- Preču mākoņa (Azure) mašīnās ar paātrinātu TCP, kas iespējots operētājsistēmā Windows un Linux, vienas operācijas latentums ir ārkārtīgi zems (parasti mazāks par 300 mikrosekundēm pie 99,9%).
- Palielinoties klientu skaitam, labāka mērogojamība tiek panākta ar vai bez klientu paketes.
- Spēja izmantot visus servera datora CPU/atmiņas resursus, izmantojot vienu koplietojamās atmiņas servera instanci (nav nepieciešama iekšējā mezglu klasterizācija).
- Atbalsts datu kopām, kas ir lielākas par atmiņu, kas pārpilda lokālās un mākoņkrātuves ierīces.
- Datu bāzes funkcijas, piemēram, ātrais kontrolpunkts un atgūšana un publicēšana / abonēšana.
- Atbalsts vairāku mezglu sadalītai jaucējkoda sadalīšanai (Redis "klastera" režīms), stāvokļa migrācijai un replicēšanai.
- Labi pārbaudīts ar visaptverošu testa komplektu (tūkstošiem vienību testu pret granātu un tā uzglabāšanas līmeni Tsavorite).
- C# kodu bāze, kuru ir viegli attīstīt un paplašināt.
Granāts neatbalsta visas Redis komandas, īpaši atbalstītās komandas, lai skatītu:Hipersaites pieteikšanās ir redzama. Granāta projekts ietver etalona rīku RESP etalonu palaišanai, izmantojot dažādus klientus, dažādas darba slodzes un dažādas politikas, lai izmērītu caurlaidspēju, veiktspēju un latentumu. Adrese:Hipersaites pieteikšanās ir redzama. RESP protokols:Hipersaites pieteikšanās ir redzama.
Šajā rakstā vienkāršai testēšanai tiek izmantoti Redis iebūvētie salīdzinošās novērtēšanas rīki, un testa vide ir šāda:
| Kešatmiņas | versija | | Redis | Redis 3.0.504 (00000000/0) 64 bitu | | Garnet | Granāts 1.0.2 64 biti; Savrups režīms |
Redis etaloni
Vispirms palaidiet Redis kešatmiņu, izmantojot komandrindu ar šādu komandu:
Testa komanda ir šāda:
Rezultāti ir šādi:
====== KOMPLEKTS ====== 500000 pieprasījumi izpildīti 24.38 sekundēs 100 paralēlie klienti 3 baitu lietderīgā slodze saglabāt dzīvu: 1
0,03% <= 1 milisekundes 0,25% <= 2 milisekundes 2,65% <= 3 milisekundes 16,49% <= 4 milisekundes 59,95% <= 5 milisekundes 99,09% <= 6 milisekundes 99,76% <= 7 milisekundes 99,86% <= 8 milisekundes 99,93% <= 9 milisekundes 99,98% <= 10 milisekundes 99,99% <= 11 milisekundes 100,00% <= 12 milisekundes 20512,82 pieprasījumi sekundē
====== IEGŪT ====== 500000 pieprasījumi izpildīti 27,41 sekundē 100 paralēlie klienti 3 baitu lietderīgā slodze saglabāt dzīvu: 1
0,03% <= 1 milisekundes 0,19% <= 2 milisekundes 6,44% <= 3 milisekundes 25,82% <= 4 milisekundes 45,65% <= 5 milisekundes 98,79% <= 6 milisekundes 99,98% <= 7 milisekundes 99,98% <= 8 milisekundes 99,98% <= 9 milisekundes 100,00% <= 9 milisekundes 18238,86 pieprasījumi sekundē
Granāta etaloni
Izveidojiet jaunu .NET 8 konsoles projektu un vispirms atsaucieties uz Microsoft.Garnet pakotni, izmantojot šādu komandu:
Kods ir šāds:
Startēšanas komanda ir šāda:
Izmantojot to pašu etalona komandu, rezultāts ir šāds:
====== KOMPLEKTS ====== 500000 pieprasījumi izpildīti 11.51 sekundē 100 paralēlie klienti 3 baitu lietderīgā slodze saglabāt dzīvu: 1
75,51% <= 1 milisekundes 88,24% <= 2 milisekundes 92,04% <= 3 milisekundes 99,46% <= 4 milisekundes 99,98% <= 5 milisekundes 99,99% <= 6 milisekundes 100,00% <= 12 milisekundes 100,00% <= 12 milisekundes 43448,04 pieprasījumi sekundē
====== IEGŪT ====== 500000 pieprasījumi izpildīti 31,50 sekundēs 100 paralēlie klienti 3 baitu lietderīgā slodze saglabāt dzīvu: 1
0,01% <= 1 milisekundes 0,90% <= 2 milisekundes 27,25% <= 3 milisekundes 97,65% <= 4 milisekundes 99,82% <= 5 milisekundes 99,94% <= 6 milisekundes 99,98% <= 7 milisekundes 99,98% <= 9 milisekundes 99,98% <= 10 milisekundes 99,99% <= 11 milisekundes 100,00% <= 12 milisekundes 100,00% <= 12 milisekundes 15872.01 pieprasījumi sekundē Pateicoties testēšanas rīkiem, programmatūras versijām, testa parametriem utt., Visi rada atšķirīgus rezultātus, testi ir tikai atsaucei, izmantojot vienkāršos testus šajā rakstā, var redzēt, ka Granātam ir ievērojami mazāks latentums nekā Redis.
(Beigas) |