Garnet er en ny type fjerncachelagring udviklet af Microsoft Research, som tilbyder flere unikke fordele:
- Garnet tager udgangspunktet fra den populære RESP-linjeprotokol, hvilket gør det muligt at bruge Garnet fra uændrede Redis-klienter, der findes i de fleste programmeringssprog i dag, såsom StackExchange.Redis i C#.
- Garnet tilbyder bedre gennemstrømning og skalerbarhed med mange klientforbindelser og små batches sammenlignet med tilsvarende open source cache-lagring, hvilket sparer omkostninger for store applikationer og tjenester.
- Garnet viste ekstremt lav klientlatens (typisk under 300 mikrosekunder ved 99,9 %) ved brug af Commodity Cloud (Azure) VM'er med accelereret TCP aktiveret, hvilket er afgørende i virkelige scenarier.
- Garnet er baseret på den nyeste .NET-teknologi og er platformurørende, udvidelig og moderne. Den er designet til at være let at udvikle og udvikle uden at gå på kompromis med ydeevnen i almindelige situationer. Vi udnytter det rige biblioteksøkosystem i .NET til at udvide API'et og tilbyde åbne optimeringsmuligheder. Takket være vores omhyggelige brug af .NET opnår Garnet topmoderne ydeevne på både Linux og Windows.
Open source-adresse:Hyperlink-login er synlig. Dokumentation:Hyperlink-login er synlig.
Garnet har følgende nøglefordele:
- Servergennemstrømning (operationer per sekund) øges med flere størrelsesordener for små batches og mange klientsessioner i forhold til sammenlignelig open source cachelagring.
- På almindelige cloud-maskiner (Azure) med accelereret TCP aktiveret på Windows og Linux er latenstiden pr. operation ekstremt lav (typisk under 300 mikrosekunder ved 99,9%).
- Efterhånden som antallet af klienter stiger, opnås bedre skalerbarhed med eller uden klientbatching.
- Mulighed for at bruge alle CPU/hukommelsesressourcer på en servercomputer gennem en enkelt delt hukommelsesserverinstans (ingen behov for intra-node clustering).
- Understøttelse af datasæt større end hukommelse, der flyder over til on-premises og cloud-lagringsenheder.
- Databasefunktioner som hurtig checkpoint og gendannelse samt publicer/abonner.
- Understøttelse af multi-node sharded hash-partitionering (Redis "cluster" mode), tilstandsmigration og replikering.
- Godt testet med en omfattende testpakke (tusindvis af enhedstests mod Garnet og dets lagerlag Tsavorite).
- C#-kodebase, der er nem at udvikle og udvide.
Garnet understøtter ikke alle Redis-kommandoer, specifikt understøttede kommandoer til visning:Hyperlink-login er synlig. Garnet-projektet inkluderer et Benchmark-værktøj til at køre RESP-benchmarks med forskellige klienter, forskellige arbejdsbelastninger og forskellige politikker til at måle gennemstrømning, ydeevne og latenstid. Adresse:Hyperlink-login er synlig. RESP-protokol:Hyperlink-login er synlig.
Denne artikel bruger Redis' indbyggede benchmarkingværktøjer til simpel testning, og testmiljøet er som følger:
| cache | version | | Redis | Redis 3.0.504 (000000000/0) 64 bit | | Granat | Garnet 1.0.2 64 bit; Standalone-tilstand |
Redis-benchmarks
Start først Redis-cachen ved hjælp af kommandolinjen med følgende kommando:
Testkommandoen er som følger:
Resultaterne er som følger:
====== SÆT ====== 500000 forespørgsler blev færdiggjort på 24,38 sekunder 100 parallelle klienter 3 bytes nyttelast Hold dig 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ørgsler per sekund
====== KOM ====== 500000 anmodninger gennemført på 27,41 sekunder 100 parallelle klienter 3 bytes nyttelast Hold dig 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ørgsler per sekund
Garnet-benchmarks
Opret et nyt .NET 8-konsolprojekt og referer først til Microsoft.Garnet-pakken med følgende kommando:
Koden er som følger:
Opstartskommandoen er som følger:
Ved brug af den samme benchmark-kommando er resultatet som følger:
====== SÆT ====== 500000 forespørgsler blev gennemført på 11,51 sekunder 100 parallelle klienter 3 bytes nyttelast Hold dig 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ørgsler per sekund
====== KOM ====== 500000 forespørgsler gennemført på 31,50 sekunder 100 parallelle klienter 3 bytes nyttelast Hold dig 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ørgsler per sekund På grund af testværktøjer, softwareversioner, testparametre osv. fører alle til forskellige resultater, er testene kun til reference, og gennem de simple tests i denne artikel kan man se, at Garnet har betydeligt lavere latenstid end Redis.
(Slut) |