Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 3522|Risposta: 2

[Fonte] Un semplice confronto tra Garnet cache e Redis sviluppato con .NET

[Copiato link]
Pubblicato il 28-03-2024 18:00:42 | | | |
Garnet è un nuovo tipo di archiviazione remota della cache sviluppata da Microsoft Research che offre diversi vantaggi unici:

  • Garnet prende come punto di partenza il popolare protocollo di linea RESP, che rende possibile utilizzare Garnet da client Redis non modificati disponibili nella maggior parte dei linguaggi di programmazione oggi, come StackExchange.Redis in C#.
  • Garnet offre una migliore capacità di throughput e scalabilità con molte connessioni client e piccoli lotti rispetto allo storage cache open source comparabile, risparmiando costi per applicazioni e servizi di grandi dimensioni.
  • Garnet ha dimostrato una latenza client estremamente bassa (tipicamente inferiore a 300 microsecondi al 99,9%) utilizzando VM Commodity Cloud (Azure) con TCP accelerato abilitato, cosa fondamentale per scenari reali.
  • Garnet si basa sulle più recenti tecnologie .NET ed è multipiattaforma, estensibile e moderno. È progettato per essere facile da sviluppare ed evolvere senza sacrificare le prestazioni in situazioni comuni. Sfruttiamo il ricco ecosistema delle biblioteche di .NET per estendere l'API e offrire opportunità di ottimizzazione aperta. Grazie al nostro uso attento di .NET, Garnet raggiunge prestazioni all'avanguardia sia su Linux che su Windows.


Indirizzo Open Source:Il login del link ipertestuale è visibile.
Documentazione:Il login del link ipertestuale è visibile.

Garnet offre i seguenti benefici chiave:

  • Il throughput del server (operazioni al secondo) aumenta di diversi ordini di grandezza per piccoli lotti e molte sessioni client rispetto allo storage open source della cache comparabile.
  • Sulle macchine cloud commodity (Azure) con TCP accelerato abilitato su Windows e Linux, la latenza per operazione è estremamente bassa (tipicamente inferiore a 300 microsecondi al 99,9%).
  • Con l'aumentare del numero di clienti, si ottiene una migliore scalabilità con o senza batching dei clienti.
  • Capacità di utilizzare tutte le risorse CPU/memoria di un computer server tramite un'unica istanza di server di memoria condivisa (senza necessità di clustering intra-nodo).
  • Supporto per dataset più grandi della memoria che si sovraplungano su dispositivi di storage on-premises e cloud.
  • Funzionalità del database come checkpoint rapido e recupero e pubblicazione/iscrizione.
  • Supporto per la partizione hash multi-node sharded (modalità "cluster" Ridis), migrazione di stato e replicazione.
  • Ben testato con una suite di test completa (migliaia di test unitari contro Garnet e il suo livello di storage Tsavorite).
  • Codice C# facile da evolvere ed estendere.


Garnet non supporta tutti i comandi Ridis, ma specificamente i comandi supportati per visualizzarli:Il login del link ipertestuale è visibile.
Il progetto Garnet include uno strumento Benchmark per eseguire benchmark RESP utilizzando client differenti, carichi di lavoro differenti e politiche differenti per misurare throughput, prestazioni e latenza. Indirizzo:Il login del link ipertestuale è visibile.
Protocollo RESP:Il login del link ipertestuale è visibile.

Questo articolo utilizza gli strumenti di benchmarking integrati di Redis per test semplici, e l'ambiente di test è il seguente:

Test di prestazioni Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

cacheVersione
RedisRedis 3.0.504 (00000000/0) 64 bit
GranatoGarnet 1.0.2 64 bit; Modalità standalone


Benchmark Redis

Per prima cosa, avvia la cache Redis usando la riga di comando con il seguente comando:


Il comando di test è il seguente:


I risultati sono i seguenti:



====== SET ======
  500000 richieste completate in 24,38 secondi
  100 client paralleli
  Carico utile da 3 byte
  Tieni in vita: 1

0,03% <= 1 millisecondo
0,25% <= 2 millisecondi
2,65% <= 3 millisecondi
16,49% <= 4 millisecondi
59,95% <= 5 millisecondi
99,09% <= 6 millisecondi
99,76% <= 7 millisecondi
99,86% <= 8 millisecondi
99,93% <= 9 millisecondi
99,98% <= 10 millisecondi
99,99% <= 11 millisecondi
100,00% <= 12 millisecondi
20512,82 richieste al secondo

====== FATTI ======
  500000 richieste completate in 27,41 secondi
  100 client paralleli
  Carico utile da 3 byte
  Tieni in vita: 1

0,03% <= 1 millisecondo
0,19% <= 2 millisecondi
6,44% <= 3 millisecondi
25,82% <= 4 millisecondi
45,65% <= 5 millisecondi
98,79% <= 6 millisecondi
99,98% <= 7 millisecondi
99,98% <= 8 millisecondi
99,98% <= 9 millisecondi
100,00% <= 9 millisecondi
18238,86 richieste al secondo

Benchmark Garnet

Crea un nuovo progetto console .NET 8 e prima fai riferimento al pacchetto Microsoft.Garnet con il seguente comando:


Il codice è il seguente:


Il comando di avvio è il seguente:


Utilizzando lo stesso comando di benchmark, il risultato è il seguente:



====== SET ======
  500000 richieste completate in 11,51 secondi
  100 client paralleli
  Carico utile da 3 byte
  Tieni in vita: 1

75,51% <= 1 millisecondo
88,24% <= 2 millisecondi
92,04% <= 3 millisecondi
99,46% <= 4 millisecondi
99,98% <= 5 millisecondi
99,99% <= 6 millisecondi
100,00% <= 12 millisecondi
100,00% <= 12 millisecondi
43448,04 richieste al secondo

====== FATTI ======
  500000 richieste completate in 31,50 secondi
  100 client paralleli
  Carico utile da 3 byte
  Tieni in vita: 1

0,01% <= 1 millisecondo
0,90% <= 2 millisecondi
27,25% <= 3 millisecondi
97,65% <= 4 millisecondi
99,82% <= 5 millisecondi
99,94% <= 6 millisecondi
99,98% <= 7 millisecondi
99,98% <= 9 millisecondi
99,98% <= 10 millisecondi
99,99% <= 11 millisecondi
100,00% <= 12 millisecondi
100,00% <= 12 millisecondi
15872,01 richieste al secondo

Grazie agli strumenti di test, alle versioni del software, ai parametri di test, ecc., tutti portano a risultati diversi; i test sono solo di riferimento; attraverso i semplici test di questo articolo si può vedere che Garnet ha una latenza significativamente inferiore rispetto a Redis.

(Fine)




Precedente:.NET/C# attributo di riflessione, che può essere giudicato dai tipi nulli
Prossimo:SSE (1) utilizza ASP.NET Core come server SSE
 Padrone di casa| Pubblicato il 28-03-2024 18:01:32 |
KeyDB è un database completamente open-source alimentato da Snap ed è un'alternativa più veloce a Redis. Indirizzo:https://docs.keydb.dev/
 Padrone di casa| Pubblicato il 3-9-2025 09:36:07 |
FASTER: Memoria e logging persistente e persistente e rapido in C# e C++.
        
Documentazione:Il login del link ipertestuale è visibile.
Fonte:Il login del link ipertestuale è visibile.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com