Garnet on Microsoft Researchi poolt välja töötatud uus kaugvahemälu salvestuse tüüp, mis pakub mitmeid unikaalseid eeliseid:
- Garnet võtab populaarse RESP-liini protokolli lähtepunktiks, mis võimaldab kasutada Garnetit muutmata Redis klientidest, mis on tänapäeval saadaval enamikus programmeerimiskeeltes, näiteks StackExchange.Redis C#-s.
- Garnet pakub paremat läbilaskevõimet ja skaleeritavust paljude kliendiühenduste ja väikeste partiidega võrreldes võrreldava avatud lähtekoodiga vahemälusalvestusega, säästes kulusid suurte rakenduste ja teenuste jaoks.
- Garnet demonstreeris äärmiselt madalat kliendilatentsust (tavaliselt alla 300 mikrosekundi 99,9% juures, kasutades Commodity Cloud (Azure) VM-e kiirendatud TCP-ga, mis on reaalse maailma olukordades kriitiline.
- Garnet põhineb uusimal .NET tehnoloogial ning on platvormideülene, laiendatav ja kaasaegne. See on loodud nii, et see oleks lihtne areneda ja areneda, ilma et see ohverdaks sooritust tavapärastes olukordades. Kasutame .NET rikkalikku teekide ökosüsteemi, et laiendada API-d ja pakkuda avatud optimeerimisvõimalusi. Tänu meie hoolikale .NET kasutamisele saavutab Garnet tipptasemel jõudluse nii Linuxil kui Windowsil.
Avatud lähtekoodiga aadress:Hüperlingi sisselogimine on nähtav. Dokumentatsioon:Hüperlingi sisselogimine on nähtav.
Garnetil on järgmised peamised eelised:
- Serveri läbilaskevõime (operatsioonid sekundis) suureneb mitme suurusjärku võrra väikeste partiide ja paljude kliendisessioonide puhul võrreldes võrreldava avatud lähtekoodiga vahemälusalvestusega.
- Tavaliste pilvede (Azure) masinatel, kus kiirendatud TCP on lubatud Windowsis ja Linuxis, on latentsus operatsiooni kohta äärmiselt madal (tavaliselt alla 300 mikrosekundi 99,9% juures).
- Kuna klientide arv kasvab, saavutatakse parem skaleeritavus nii klientide partiimise kui ka ilma.
- Võimalus kasutada kõiki serveriarvuti protsessori/mäluressursse ühe jagatud mäluserveri instantsi kaudu (pole vaja sõlmesiseseid klasterdamisi).
- Toetus mälust suurematele andmekogumitele, mis ülevoolavad kohapealsetesse ja pilvesalvestusseadmetesse.
- Andmebaasi funktsioonid nagu kiire kontrollpunkt ja taastamine ning avaldamine/tellimine.
- Toetus mitme sõlme killustatud räsi partitsioneerimisele (Redis "klastri" režiim), olekumigratsioonile ja replikatsioonile.
- Hästi testitud põhjaliku testikomplektiga (tuhanded üksustestid Garneti ja selle salvestustaseme Tsavorite'i vastu).
- C# koodibaas, mida on lihtne arendada ja laiendada.
Garnet ei toeta kõiki Redis käske, vaid spetsiaalselt käske, et vaadata:Hüperlingi sisselogimine on nähtav. Garneti projekt sisaldab Benchmark-tööriista RESP-testide käivitamiseks erinevate klientide, erinevate töökoormuste ja poliitikate abil, et mõõta läbilaskevõimet, jõudlust ja latentsust. Aadress:Hüperlingi sisselogimine on nähtav. RESP protokoll:Hüperlingi sisselogimine on nähtav.
See artikkel kasutab Redis'i sisseehitatud võrdlustööriistu lihtsaks testimiseks ning testikeskkond on järgmine:
| Vahemälu | versioon | | Redis | Redis 3.0.504 (00000000/0) 64-bitine | | Granaat | Garnet 1.0.2 64-bitine; Iseseisev režiim |
Redis võrdlusindeksid
Esiteks käivita Redis vahemälu käsurea abil järgmise käsuga:
Testikäsk on järgmine:
Tulemused on järgmised:
====== SEADISTA ====== 500000 päringut lõpetatud 24,38 sekundiga 100 paralleelklienti 3 baidi kasulik koormus hoida elus: 1
0,03% <= 1 millisekund 0,25% <= 2 millisekundit 2,65% <= 3 millisekundit 16,49% <= 4 millisekundit 59,95% <= 5 millisekundit 99,09% <= 6 millisekundit 99,76% <= 7 millisekundit 99,86% <= 8 millisekundit 99,93% <= 9 millisekundit 99,98% <= 10 millisekundit 99,99% <= 11 millisekundit 100,00% <= 12 millisekundit 20512.82 päringut sekundis
====== SAA ====== 500000 taotlust lõpetatud 27,41 sekundiga 100 paralleelklienti 3 baidi kasulik koormus hoida elus: 1
0,03% <= 1 millisekund 0,19% <= 2 millisekundit 6,44% <= 3 millisekundit 25,82% <= 4 millisekundit 45,65% <= 5 millisekundit 98,79% <= 6 millisekundit 99,98% <= 7 millisekundit 99,98% <= 8 millisekundit 99,98% <= 9 millisekundit 100,00% <= 9 millisekundit 18238.86 taotlust sekundis
Garneti võrdluspunktid
Loo uus .NET 8 konsooliprojekt ja viita esmalt Microsoft.Garnet paketile järgmise käsuga:
Kood on järgmine:
Käivituskäsk on järgmine:
Kasutades sama võrdluskäsu, on tulemus järgmine:
====== SEADISTA ====== 500000 taotlust lõpetatud 11,51 sekundiga 100 paralleelklienti 3 baidi kasulik koormus hoida elus: 1
75,51% <= 1 millisekund 88,24% <= 2 millisekundit 92,04% <= 3 millisekundit 99,46% <= 4 millisekundit 99,98% <= 5 millisekundit 99,99% <= 6 millisekundit 100,00% <= 12 millisekundit 100,00% <= 12 millisekundit 43448.04 päringut sekundis
====== SAA ====== 500000 taotlust lõpetatud 31,50 sekundiga 100 paralleelklienti 3 baidi kasulik koormus hoida elus: 1
0,01% <= 1 millisekund 0,90% <= 2 millisekundit 27,25% <= 3 millisekundit 97,65% <= 4 millisekundit 99,82% <= 5 millisekundit 99,94% <= 6 millisekundit 99,98% <= 7 millisekundit 99,98% <= 9 millisekundit 99,98% <= 10 millisekundit 99,99% <= 11 millisekundit 100,00% <= 12 millisekundit 100,00% <= 12 millisekundit 15872.01 taotlust sekundis Kuna testimistööriistad, tarkvaraversioonid, testparameetrid jms annavad kõik erinevaid tulemusi, testid on ainult viitamiseks; selle artikli lihtsate testide kaudu on näha, et Garnetil on oluliselt madalam latentsus kui Redis.
(Lõpp) |