Garnet on Microsoft Researchin kehittämä uusi etävälimuistin tallennustyyppi, joka tarjoaa useita ainutlaatuisia etuja:
- Garnet ottaa suositun RESP-linjaprotokollan lähtökohtana, mikä mahdollistaa Garnetin käytön muokkaamattomista Redis-asiakkaista, joita on saatavilla useimmissa nykykielissä, kuten StackExchange.Redis C#:ssa.
- Garnet tarjoaa paremman läpimenon ja skaalautuvuuden monien asiakasyhteyksien ja pienten erien kanssa verrattuna vastaavaan avoimen lähdekoodin välimuistitallennukseen, mikä säästää kustannuksia suurille sovelluksille ja palveluille.
- Garnet osoitti erittäin alhaisen asiakaslatenssin (tyypillisesti alle 300 mikrosekuntia 99,9 %) käyttäen Commodity Cloud (Azure) -virtuaalikoneita, joissa kiihdytetty TCP oli käytössä, mikä on kriittistä todellisissa tilanteissa.
- Garnet perustuu uusimpaan .NET-teknologiaan ja on monialustainen, laajennettavissa ja moderni. Se on suunniteltu helpoksi kehittää ja kehittyä ilman, että suorituskyky kärsii tavallisissa tilanteissa. Hyödynnämme .NET:n rikasta kirjastoekosysteemiä laajentaaksemme API:a ja tarjotaksemme avoimia optimointimahdollisuuksia. Huolellisen .NET-käytön ansiosta Garnet saavuttaa huipputason suorituskyvyn sekä Linuxilla että Windowsilla.
Avoimen lähdekoodin osoite:Hyperlinkin kirjautuminen on näkyvissä. Dokumentaatio:Hyperlinkin kirjautuminen on näkyvissä.
Garnetilla on seuraavat keskeiset edut:
- Palvelinten läpimenokyky (operaatiot sekunnissa) kasvaa useilla kertaluokilla pienissä erissä ja monissa asiakassessioissa verrattuna vastaavaan avoimen lähdekoodin välimuistitallennukseen.
- Tavallisen pilven (Azure) koneilla, joissa kiihdytetty TCP on käytössä Windowsissa ja Linuxissa, viive per operaatio on erittäin pieni (tyypillisesti alle 300 mikrosekuntia 99,9 %:ssa).
- Kun asiakasmäärä kasvaa, saavutetaan parempi skaalautuvuus joko asiakaseräyksellä tai ilman.
- Mahdollisuus käyttää kaikkia palvelintietokoneen suoritin- ja muistiresursseja yhden jaetun muistipalvelininstanssin kautta (ei tarvetta solmun sisäisille klustereille).
- Tuki muistia suuremmille tietoaineistoille, jotka ylikuormittuvat paikallisiin ja pilvitallennuslaitteisiin.
- Tietokannan ominaisuudet, kuten nopea tarkistuspiste ja palautus sekä julkaise/tilaa.
- Tuki monisolmuiselle shardioidulle hash-osioinnille (Redis "cluster"-tila), tilamigraatiolle ja replikaatiolle.
- Hyvin testattu kattavalla testipaketilla (tuhansia yksikkötestejä Garnetia ja sen tallennustasoa Tsavoritea vastaan).
- C#-koodipohja, jota on helppo kehittää ja laajentaa.
Garnet ei tue kaikkia Redis-komentoja, erityisesti niitä komentoja, joilla voi nähdä:Hyperlinkin kirjautuminen on näkyvissä. Garnet-projekti sisältää Benchmark-työkalun RESP-vertailujen suorittamiseen eri asiakaskunnissa, erilaisilla työkuormilla ja eri politiikoilla läpimenon, suorituskyvyn ja viiveen mittaamiseen. Osoite:Hyperlinkin kirjautuminen on näkyvissä. RESP-protokolla:Hyperlinkin kirjautuminen on näkyvissä.
Tässä artikkelissa käytetään Redisin sisäänrakennettuja vertailutyökaluja yksinkertaiseen testaukseen, ja testiympäristö on seuraava:
| välimuisti | versio | | Redis | Redis 3.0.504 (00000000/0) 64-bittinen | | Granaatti | Garnet 1.0.2 64-bittinen; Itsenäinen tila |
Redis-vertailuarvot
Ensiksi käynnistä Redis-välimuisti komentorivillä seuraavalla komennolla:
Testikomento on seuraava:
Tulokset ovat seuraavat:
====== ASETTAA ====== 500000 pyyntöä suoritettu 24,38 sekunnissa 100 rinnakkaisasiakasta 3 tavun hyötykuorma pysy hengissä: 1
0,03 % <= 1 millisekunti 0,25 % <= 2 millisekuntia 2,65 % <= 3 millisekuntia 16,49% <= 4 millisekuntia 59,95 % <= 5 millisekuntia 99,09 % <= 6 millisekuntia 99,76 % <= 7 millisekuntia 99,86 % <= 8 millisekuntia 99,93 % <= 9 millisekuntia 99,98% <= 10 millisekuntia 99,99 % <= 11 millisekuntia 100,00 % <= 12 millisekuntia 20512.82 pyyntöä sekunnissa
====== OTA ====== 500000 pyyntöä suoritettu 27,41 sekunnissa 100 rinnakkaisasiakasta 3 tavun hyötykuorma pysy hengissä: 1
0,03 % <= 1 millisekunti 0,19% <= 2 millisekuntia 6,44 % <= 3 millisekuntia 25,82 % <= 4 millisekuntia 45,65 % <= 5 millisekuntia 98,79 % <= 6 millisekuntia 99,98% <= 7 millisekuntia 99,98% <= 8 millisekuntia 99,98 % <= 9 millisekuntia 100,00 % <= 9 millisekuntia 18238,86 pyyntöä sekunnissa
Garnet-vertailut
Luo uusi .NET 8 -konsoliprojekti ja viittaa ensin Microsoft.Garnet-pakettiin seuraavalla komennolla:
Koodi on seuraava:
Käynnistyskomento on seuraava:
Samaa benchmark-komentoa käyttäen tulos on seuraava:
====== ASETTAA ====== 500000 pyyntöä valmiina 11,51 sekunnissa 100 rinnakkaisasiakasta 3 tavun hyötykuorma pysy hengissä: 1
75,51 % <= 1 millisekunti 88,24 % <= 2 millisekuntia 92,04 % <= 3 millisekuntia 99,46 % <= 4 millisekuntia 99,98 % <= 5 millisekuntia 99,99 % <= 6 millisekuntia 100,00 % <= 12 millisekuntia 100,00 % <= 12 millisekuntia 43448.04 pyyntöä sekunnissa
====== OTA ====== 500000 pyyntöä tehty 31,50 sekunnissa 100 rinnakkaisasiakasta 3 tavun hyötykuorma pysy hengissä: 1
0,01 % <= 1 millisekunti 0,90 % <= 2 millisekuntia 27,25 % <= 3 millisekuntia 97,65 % <= 4 millisekuntia 99,82 % <= 5 millisekuntia 99,94% <= 6 millisekuntia 99,98% <= 7 millisekuntia 99,98 % <= 9 millisekuntia 99,98% <= 10 millisekuntia 99,99 % <= 11 millisekuntia 100,00 % <= 12 millisekuntia 100,00 % <= 12 millisekuntia 15872.01 pyyntöä sekunnissa Koska testaustyökalut, ohjelmistoversiot, testiparametrit jne. johtavat erilaisiin tuloksiin, testit ovat vain viitteitä; tämän artikkelin yksinkertaisista testeistä voi nähdä, että Garnetilla on huomattavasti alhaisempi viive kuin Redisillä.
(Loppu) |