Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 3522|Răspunde: 2

[Sursă] O comparație simplă între Garnet cache și Redis dezvoltată cu .NET

[Copiază linkul]
Postat la 28-03-2024 18:00:42 | | | |
Garnet este un nou tip de stocare cache la distanță dezvoltat de Microsoft Research care oferă mai multe beneficii unice:

  • Garnet ia ca punct de plecare popularul protocol de linie RESP, care face posibilă utilizarea lui Garnet de la clienții Redis nemodificați disponibili în majoritatea limbajelor de programare de astăzi, cum ar fi StackExchange.Redis în C#.
  • Garnet oferă un throughput și o scalabilitate mai bune, cu multe conexiuni cu clienții și loturi mici, comparativ cu stocarea cache-ului open-source comparabilă, economisind costuri pentru aplicații și servicii mari.
  • Garnet a demonstrat o latență extrem de scăzută a clientului (de obicei mai puțin de 300 microsecunde la 99,9%) folosind mașini virtuale Commodity Cloud (Azure) cu TCP accelerat activat, ceea ce este esențial pentru scenarii reale.
  • Garnet se bazează pe cea mai nouă tehnologie .NET și este cross-platform, extensibil și modern. Este conceput să fie ușor de dezvoltat și evoluat fără a sacrifica performanța în situații comune. Valorificăm ecosistemul bogat de biblioteci .NET pentru a extinde API-ul și a oferi oportunități de optimizare deschisă. Datorită utilizării noastre atente a .NET, Garnet atinge performanțe de ultimă generație atât pe Linux, cât și pe Windows.


Adresă Open Source:Autentificarea cu hyperlink este vizibilă.
Documentație:Autentificarea cu hyperlink este vizibilă.

Granatul are următoarele beneficii cheie:

  • Debitul serverului (operații pe secundă) este crescut cu câteva ordine de mărime pentru loturi mici și multe sesiuni client comparativ cu stocarea cache open source comparabilă.
  • Pe calculatoarele cloud de bază (Azure) cu TCP accelerat activat pe Windows și Linux, latența per operație este extrem de mică (de obicei sub 300 microsecunde, la 99,9%).
  • Pe măsură ce numărul clienților crește, se obține o scalabilitate mai bună cu sau fără batching al clienților.
  • Capacitatea de a folosi toate resursele CPU/memorie ale unui computer server printr-o singură instanță de server de memorie partajată (fără nevoie de clustering intra-nod).
  • Suport pentru seturi de date mai mari decât memoria care se revarsă către dispozitive de stocare on-premises și cloud.
  • Funcții de bază de date precum checkpoint rapid și recuperare și publicare/abonament.
  • Suport pentru partiționarea hash-ului multi-nod sharded (modul "cluster" Rederis), migrarea stării și replicarea.
  • Bine testat cu o suită de teste cuprinzătoare (mii de teste unitare împotriva Garnet și a nivelului său de stocare, Tsavorite).
  • bază de cod C# ușor de evoluat și extins.


Garnet nu suportă toate comenzile Redis, ci în mod specific comenzile suportate pentru vizualizare:Autentificarea cu hyperlink este vizibilă.
Proiectul Garnet include un instrument Benchmark pentru rularea benchmark-urilor RESP folosind clienți diferiți, sarcini de lucru diferite și politici diferite pentru măsurarea debitului, performanței și latenței. Adresă:Autentificarea cu hyperlink este vizibilă.
Protocolul RESP:Autentificarea cu hyperlink este vizibilă.

Acest articol folosește instrumentele de benchmarking integrate ale Redis pentru teste simple, iar mediul de testare este următorul:

Testul de performanță Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

cacheversiune
RedisRedis 3.0.504 (00000000/0) 64 de biți
GranatGarnet 1.0.2 64 biți; Mod standalone


Repere Redis

Mai întâi, lansați cache-ul Redis folosind linia de comandă cu următoarea comandă:


Comanda de test este următoarea:


Rezultatele sunt următoarele:



====== SETUL ======
  500000 de cereri finalizate în 24,38 secunde
  100 de clienți paraleli
  Sarcină utilă de 3 octeți
  Keep Alive: 1

0,03% <= 1 milisecundă
0,25% <= 2 milisecunde
2,65% <= 3 milisecunde
16,49% <= 4 milisecunde
59,95% <= 5 milisecunde
99,09% <= 6 milisecunde
99,76% <= 7 milisecunde
99,86% <= 8 milisecunde
99,93% <= 9 milisecunde
99,98% <= 10 milisecunde
99,99% <= 11 milisecunde
100,00% <= 12 milisecunde
20512,82 cereri pe secundă

====== SĂ ======
  500000 de cereri completate în 27,41 secunde
  100 de clienți paraleli
  Sarcină utilă de 3 octeți
  Keep Alive: 1

0,03% <= 1 milisecundă
0,19% <= 2 milisecunde
6,44% <= 3 milisecunde
25,82% <= 4 milisecunde
45,65% <= 5 milisecunde
98,79% <= 6 milisecunde
99,98% <= 7 milisecunde
99,98% <= 8 milisecunde
99,98% <= 9 milisecunde
100,00% <= 9 milisecunde
18238,86 cereri pe secundă

Benchmark-uri Garnet

Creează un nou proiect de consolă .NET 8 și referă mai întâi la pachetul Microsoft.Garnet cu următoarea comandă:


Codul este următorul:


Comanda de pornire este următoarea:


Folosind aceeași comandă de benchmark, rezultatul este următorul:



====== SETUL ======
  500000 de cereri finalizate în 11,51 secunde
  100 de clienți paraleli
  Sarcină utilă de 3 octeți
  Keep Alive: 1

75,51% <= 1 milisecundă
88,24% <= 2 milisecunde
92,04% <= 3 milisecunde
99,46% <= 4 milisecunde
99,98% <= 5 milisecunde
99,99% <= 6 milisecunde
100,00% <= 12 milisecunde
100,00% <= 12 milisecunde
43448,04 cereri pe secundă

====== SĂ ======
  500000 de cereri finalizate în 31,50 secunde
  100 de clienți paraleli
  Sarcină utilă de 3 octeți
  Keep Alive: 1

0,01% <= 1 milisecundă
0,90% <= 2 milisecunde
27,25% <= 3 milisecunde
97,65% <= 4 milisecunde
99,82% <= 5 milisecunde
99,94% <= 6 milisecunde
99,98% <= 7 milisecunde
99,98% <= 9 milisecunde
99,98% <= 10 milisecunde
99,99% <= 11 milisecunde
100,00% <= 12 milisecunde
100,00% <= 12 milisecunde
15872,01 cereri pe secundă

Datorită uneltelor de testare, versiunilor software, parametrilor de testare etc., toate duc la rezultate diferite, testele fiind doar de referință, iar prin testele simple din acest articol se poate observa că Garnet are o latență semnificativ mai mică decât Redis.

(Sfârșit)




Precedent:atributul de reflexie .NET/C#, care poate fi judecat după tipurile nule
Următor:SSE (1) folosește ASP.NET Core ca server SSE
 Proprietarul| Postat la 28-03-2024 18:01:32 |
KeyDB este o bază de date complet open-source alimentată de Snap și reprezintă o alternativă mai rapidă la Redis. Adresă:https://docs.keydb.dev/
 Proprietarul| Postat la 2025-9-3 09:36:07 |
MAI RAPID: Stocare și logare rapidă, concurentă și persistentă cheie-valoare în C# și C++.
        
Documentație:Autentificarea cu hyperlink este vizibilă.
Sursă:Autentificarea cu hyperlink este vizibilă.
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com