Granatas yra naujo tipo nuotolinė talpyklos saugykla, kurią sukūrė "Microsoft Research", siūlanti keletą unikalių privalumų:
- Granatas remiasi populiariu RESP linijos protokolu, kuris leidžia naudoti Garnet iš nemodifikuotų Redis klientų, prieinamų daugelyje programavimo kalbų, tokių kaip StackExchange.Redis C#.
- Granatas siūlo geresnį pralaidumą ir mastelio keitimą su daugeliu klientų ryšių ir mažų partijų, palyginti su panašia atvirojo kodo talpyklos saugykla, taupant išlaidas didelėms programoms ir paslaugoms.
- "Garnet" pademonstravo itin mažą kliento delsą (paprastai mažiau nei 300 mikrosekundžių esant 99,9 proc.), naudodamas "Commodity Cloud" (Azure) VM su įjungtu pagreitintu TCP, o tai labai svarbu realaus pasaulio scenarijams.
- Granatas yra pagrįstas naujausia .NET technologija ir yra kelių platformų, išplečiamas ir modernus. Jis sukurtas taip, kad jį būtų lengva plėtoti ir tobulinti neprarandant našumo įprastose situacijose. Mes naudojame turtingą .NET bibliotekų ekosistemą, kad išplėstume API ir suteiktume atviras optimizavimo galimybes. Dėl kruopštaus .NET naudojimo "Garnet" pasiekia pažangiausią našumą tiek "Linux", tiek "Windows".
Atvirojo kodo adresas:Hipersaito prisijungimas matomas. Dokumentacija:Hipersaito prisijungimas matomas.
Granatas turi šiuos pagrindinius privalumus:
- Serverio pralaidumas (operacijos per sekundę) padidėja keliomis eilėmis mažoms partijoms ir daugeliui klientų sesijų, palyginti su panašia atvirojo kodo talpyklos saugykla.
- Prekių debesies (Azure) įrenginiuose su pagreitintu TCP įjungtas Windows ir Linux, vienos operacijos delsa yra labai maža (paprastai mažiau nei 300 mikrosekundžių esant 99,9%).
- Didėjant klientų skaičiui, geresnis mastelio keitimas pasiekiamas su klientų paketais arba be jų.
- Galimybė naudoti visus serverio kompiuterio procesoriaus / atminties išteklius per vieną bendros atminties serverio egzempliorių (nereikia vidinio mazgo klasterizavimo).
- Didesnių nei atmintis duomenų rinkinių, perpildytų į vietinius ir debesies saugyklos įrenginius, palaikymas.
- Duomenų bazės funkcijos, tokios kaip greitas kontrolinis taškas ir atkūrimas bei publikavimas / prenumerata.
- Kelių mazgų skeveldrų maišos skaidymo (Redis "klasterio" režimas), būsenų perkėlimo ir replikavimo palaikymas.
- Gerai išbandyta su išsamiu testų rinkiniu (tūkstančiai vienetų testų prieš granatą ir jo saugojimo pakopą Tsavorite).
- C# kodų bazė, kurią lengva tobulinti ir išplėsti.
Granatas nepalaiko visų "Redis" komandų, specialiai palaikomų komandų, skirtų peržiūrėti:Hipersaito prisijungimas matomas. Granato projektas apima etaloninį įrankį, skirtą paleisti RESP etalonus naudojant skirtingus klientus, skirtingus darbo krūvius ir skirtingas strategijas, skirtas pralaidumui, našumui ir delsai matuoti. Adresas:Hipersaito prisijungimas matomas. RESP protokolas:Hipersaito prisijungimas matomas.
Šiame straipsnyje paprastam testavimui naudojami "Redis" integruoti lyginamosios analizės įrankiai, o bandymo aplinka yra tokia:
| talpykla | versija | | Redis | Redis 3.0.504 (00000000/0) 64 bitų | | Granatas | Granatas 1.0.2 64 bitų; Autonominis režimas |
Redis etalonai
Pirmiausia paleiskite "Redis" talpyklą naudodami komandinę eilutę su šia komanda:
Bandymo komanda yra tokia:
Rezultatai yra tokie:
====== RINKINYS ====== 500000 užklausų įvykdyta per 24,38 sekundės 100 lygiagrečių klientų 3 baitų naudingoji apkrova išlaikyti gyvą: 1
0,03 % < = 1 milisekundės 0,25 % < = 2 milisekundės 2,65 % < = 3 milisekundės 16.49% <= 4 milisekundės 59,95 % < = 5 milisekundės 99.09% <= 6 milisekundės 99,76% <= 7 milisekundės 99.86% <= 8 milisekundės 99.93% <= 9 milisekundės 99.98% <= 10 milisekundžių 99,99% <= 11 milisekundžių 100.00% <= 12 milisekundžių 20512,82 užklausos per sekundę
====== GAUTI ====== 500000 užklausų įvykdyta per 27,41 sekundės 100 lygiagrečių klientų 3 baitų naudingoji apkrova išlaikyti gyvą: 1
0,03 % < = 1 milisekundės 0,19% <= 2 milisekundės 6,44 % < = 3 milisekundės 25,82 % < = 4 milisekundės 45,65 % < = 5 milisekundės 98,79% <= 6 milisekundės 99.98% <= 7 milisekundės 99.98% <= 8 milisekundės 99.98% <= 9 milisekundės 100.00% <= 9 milisekundės 18238,86 užklausos per sekundę
Granato etalonai
Sukurkite naują .NET 8 konsolės projektą ir pirmiausia nurodykite Microsoft.Garnet paketą naudodami šią komandą:
Kodas yra toks:
Paleisties komanda yra tokia:
Naudojant tą pačią etalono komandą, rezultatas yra toks:
====== RINKINYS ====== 500000 užklausų įvykdyta per 11,51 sekundės 100 lygiagrečių klientų 3 baitų naudingoji apkrova išlaikyti gyvą: 1
75.51% <= 1 milisekundės 88,24 % < = 2 milisekundės 92,04 % < = 3 milisekundės 99,46 % < = 4 milisekundės 99.98% <= 5 milisekundės 99.99% <= 6 milisekundės 100.00% <= 12 milisekundžių 100.00% <= 12 milisekundžių 43448,04 užklausos per sekundę
====== GAUTI ====== 500000 užklausų įvykdyta per 31,50 sekundės 100 lygiagrečių klientų 3 baitų naudingoji apkrova išlaikyti gyvą: 1
0,01 % < = 1 milisekundės 0,90 % < = 2 milisekundės 27.25% <= 3 milisekundės 97.65% <= 4 milisekundės 99.82% <= 5 milisekundės 99,94 % < = 6 milisekundės 99.98% <= 7 milisekundės 99.98% <= 9 milisekundės 99.98% <= 10 milisekundžių 99,99% <= 11 milisekundžių 100.00% <= 12 milisekundžių 100.00% <= 12 milisekundžių 15872,01 užklausos per sekundę Dėl testavimo įrankių, programinės įrangos versijų, bandymo parametrų ir kt. visi lemia skirtingus rezultatus, testai yra tik informaciniai, atlikus paprastus šiame straipsnyje pateiktus testus galima pastebėti, kad "Garnet" delsa yra žymiai mažesnė nei "Redis".
(Pabaiga) |