Garnet er en ny type fjernlagring utviklet av Microsoft Research som tilbyr flere unike fordeler:
- Garnet tar den populære RESP-linjeprotokollen som utgangspunkt, som gjør det mulig å bruke Garnet fra uendrede Redis-klienter som er tilgjengelige i de fleste programmeringsspråk i dag, som StackExchange.Redis i C#.
- Garnet tilbyr bedre gjennomstrømning og skalerbarhet med mange klienttilkoblinger og små batcher sammenlignet med sammenlignbar åpen kildekode-cachelagring, noe som sparer kostnader for store applikasjoner og tjenester.
- Garnet viste ekstremt lav klientlatens (vanligvis mindre enn 300 mikrosekunder ved 99,9 %) ved bruk av Commodity Cloud (Azure) VM-er med akselerert TCP aktivert, noe som er kritisk for virkelige scenarioer.
- Garnet er basert på den nyeste .NET-teknologien og er plattformuavhengig, utvidbar og moderne. Den er designet for å være enkel å utvikle og utvikle uten å ofre ytelsen i vanlige situasjoner. Vi utnytter det rike bibliotekøkosystemet i .NET for å utvide API-et og tilby åpne optimaliseringsmuligheter. Takket være vår nøye bruk av .NET oppnår Garnet topp moderne ytelse både på Linux og Windows.
Åpen kildekode-adresse:Innloggingen med hyperkoblingen er synlig. Dokumentasjon:Innloggingen med hyperkoblingen er synlig.
Granat har følgende viktige fordeler:
- Servergjennomstrømning (operasjoner per sekund) økes med flere størrelsesordener for små batcher og mange klientøkter sammenlignet med sammenlignbar åpen kildekode-cachelagring.
- På vanlige cloud-maskiner (Azure) med akselerert TCP aktivert på Windows og Linux, er latensen per operasjon ekstremt lav (vanligvis mindre enn 300 mikrosekunder på 99,9 %).
- Etter hvert som antallet klienter øker, oppnås bedre skalerbarhet med eller uten klientbatching.
- Mulighet til å bruke alle CPU-/minneressurser på en servermaskin gjennom en enkelt delt minneserverinstans (ingen behov for intra-node-klynging).
- Støtte for datasett større enn minne som flyter over til lokale og skybaserte lagringsenheter.
- Databasefunksjoner som rask sjekkpunkt og gjenoppretting og publiser/abonner.
- Støtte for multi-node sharded hash-partisjonering (Redis "cluster"-modus), tilstandsmigrasjon og replikasjon.
- Godt testet med en omfattende testpakke (tusenvis av enhetstester mot Garnet og lagringsnivået Tsavorite).
- C#-kodebase som er enkel å utvikle og utvide.
Garnet støtter ikke alle Redis-kommandoer, spesielt støttede kommandoer for visning:Innloggingen med hyperkoblingen er synlig. Garnet-prosjektet inkluderer et Benchmark-verktøy for å kjøre RESP-benchmarks ved bruk av ulike klienter, ulike arbeidsbelastninger og ulike policyer for å måle gjennomstrømning, ytelse og latenstid. Adresse:Innloggingen med hyperkoblingen er synlig. RESP-protokoll:Innloggingen med hyperkoblingen er synlig.
Denne artikkelen bruker Redis sine innebygde benchmarkingverktøy for enkel testing, og testmiljøet er som følger:
| cache | versjon | | Redis | Redis 3.0.504 (00000000/0) 64-bit | | Granat | Garnet 1.0.2 64 bit; Frittstående modus |
Redis-benchmarks
Først starter du Redis-cachen ved å bruke kommandolinjen med følgende kommando:
Testkommandoen er som følger:
Resultatene er som følger:
====== SETT ====== 5000000 forespørsler fullført på 24,38 sekunder 100 parallelle klienter 3 bytes nyttelast Hold deg i live: 1
0,03 % <= 1 millisekund 0,25 % <= 2 millisekunder 2,65 % <= 3 millisekunder 16,49 % <= 4 millisekunder 59,95 % <= 5 millisekunder 99,09 % <= 6 millisekunder 99,76 % <= 7 millisekunder 99,86 % <= 8 millisekunder 99,93 % <= 9 millisekunder 99,98 % <= 10 millisekunder 99,99 % <= 11 millisekunder 100,00 % <= 12 millisekunder 20512,82 forespørsler per sekund
====== KOM ====== 5000000 forespørsler fullført på 27,41 sekunder 100 parallelle klienter 3 bytes nyttelast Hold deg i live: 1
0,03 % <= 1 millisekund 0,19 % <= 2 millisekunder 6,44 % <= 3 millisekunder 25,82 % <= 4 millisekunder 45,65 % <= 5 millisekunder 98,79 % <= 6 millisekunder 99,98 % <= 7 millisekunder 99,98 % <= 8 millisekunder 99,98 % <= 9 millisekunder 100,00 % <= 9 millisekunder 18238,86 forespørsler per sekund
Garnet-benchmarks
Opprett et nytt .NET 8-konsollprosjekt og referer først til Microsoft.Garnet-pakken med følgende kommando:
Koden er som følger:
Oppstartskommandoen er som følger:
Ved å bruke samme benchmark-kommando er resultatet som følger:
====== SETT ====== 5000000 forespørsler fullført på 11,51 sekunder 100 parallelle klienter 3 bytes nyttelast Hold deg i live: 1
75,51 % <= 1 millisekund 88,24 % <= 2 millisekunder 92,04 % < = 3 millisekunder 99,46 % <= 4 millisekunder 99,98 % <= 5 millisekunder 99,99 % <= 6 millisekunder 100,00 % <= 12 millisekunder 100,00 % <= 12 millisekunder 43448,04 forespørsler per sekund
====== KOM ====== 500000 forespørsler fullført på 31,50 sekunder 100 parallelle klienter 3 bytes nyttelast Hold deg i live: 1
0,01 % <= 1 millisekund 0,90 % <= 2 millisekunder 27,25 % <= 3 millisekunder 97,65 % <= 4 millisekunder 99,82 % <= 5 millisekunder 99,94 % <= 6 millisekunder 99,98 % <= 7 millisekunder 99,98 % <= 9 millisekunder 99,98 % <= 10 millisekunder 99,99 % <= 11 millisekunder 100,00 % <= 12 millisekunder 100,00 % <= 12 millisekunder 15872.01 forespørsler per sekund På grunn av testverktøy, programvareversjoner, testparametere osv. som alle gir ulike resultater, er testene kun til referanse, og gjennom de enkle testene i denne artikkelen kan man se at Garnet har betydelig lavere latenstid enn Redis.
(Slutt) |