Microsoft ha aperto il codice dello store Garnet, compatibile con Redis

Microsoft ha reso disponibili i codici sorgente del sistema NoSQL Garnet, progettato per creare storage cache compatibile con le attuali librerie client per lo storage Redis. Garnet supporta la creazione di cluster scalabili per il caching dei dati, dove è possibile utilizzare la replica, la migrazione delle chiavi e il partizionamento dei dati tra i nodi del cluster. Il progetto è sviluppato in C# con un core di storage in C++, è open source sotto licenza MIT e può funzionare su tutte le piattaforme supportate da .NET (le piattaforme primarie dichiarate sono Linux e Windows).

Per la memorizzazione dei dati si utilizza il motore Tsavorite (un fork dello storage Microsoft FASTER), che supporta l'elaborazione multi-thread, le transazioni, la checkpointing non bloccante, il ripristino da guasti, la conservazione di copie ridondanti e la registrazione delle operazioni. Il gestore di rete in Garnet è costruito utilizzando un'architettura di memoria condivisa proposta dal progetto di ricerca ShadowFax. L'elaborazione TLS e l'interazione con lo storage vengono eseguite in un unico thread, il che permette di evitare il sovraccarico dovuto allo switching dei thread e di utilizzare più efficacemente la cache della CPU durante la trasmissione dei dati in rete.

L'architettura Garnet separa la logica di analisi e gestione delle richieste dalle operazioni con lo storage. I dati sono archiviati utilizzando due storage in formato chiave-valore, implementati con la libreria Tsavorite. Il primo storage "principale" è ottimizzato per l'esecuzione rapida delle operazioni su stringhe, mentre il secondo storage "degli oggetti" è ottimizzato per l'archiviazione di oggetti complessi e tipi di dati avanzati, come hash e liste. I tipi di dati nel secondo storage sono implementati con l'ausilio di librerie .NET. I dati sono memorizzati nella heap (C# heap), consentendo aggiornamenti efficienti, e in forma serializzata su disco.

Microsoft ha aperto il codice dello store Garnet, compatibile con Redis

Caratteristiche di Garnet:

  • È possibile implementare storage multi-livello che includono RAM, SSD e storage cloud, dove i dati meno richiesti vengono spostati in storage più lenti per creare cache di dimensioni superiori alla RAM.
  • Supporto estensibile per dispositivi, che consente la creazione di strati ottimizzati per diverse apparecchiature, ad esempio, ci sono strati per SSD, dischi rigidi e storage cloud Azure.
  • Meccanismo efficace di riutilizzo della memoria liberata, che previene la frammentazione.
  • Limiti configurabili sulle dimensioni della memoria utilizzata per gli indici, i log e la memorizzazione degli oggetti.
  • Per accedere allo storage viene utilizzato il protocollo RESP, consentendo l'uso di Garnet con client Redis non modificati.
  • Supporto per la memorizzazione di valori sia stringa che di strutture dati complesse, come liste, hash, insiemi, liste ordinate e dati di geolocalizzazione. Possibilità di definire il tempo di vita delle chiavi.
  • Disponibilità di un'API per eseguire query analitiche (HLL/Hyperloglog, Bitmap), transazioni (MULTI/EXEC) e utilizzare la paradigma pubblicazione/sottoscrizione.
  • Strumenti per una gestione flessibile degli accessi tramite ACL.
  • Possibilità di definire la configurazione in formato JSON o redis.conf.
  • Supporto per il collegamento di gestori di rete aggiuntivi. Possibilità di crittografare il traffico utilizzando TLS (basato su SslStream).
  • Possibilità di creare estensioni in linguaggio C# per implementare operazioni aggiuntive su stringhe e oggetti.
  • Supporto per procedure memorizzate transazionali che coprono più chiavi.
  • Possibilità di ripristinare lo stato da una posizione salvata in precedenza (checkpoint-recovery). Presenza della modalità append-only (AOF, append-only file), in cui tutti i dati precedenti rimangono accessibili e non vengono sovrascritti.
  • Supporto per la creazione di cluster di archiviazione con replica, sharding, migrazione dinamica delle chiavi tra nodi e ripristino di nodi guasti.
  • Alta prestazione e bassa latenza nell'esecuzione delle richieste. Elaborazione efficace delle richieste a pacchetti di piccole dimensioni con un elevato numero di sessioni client, consentendo di raggiungere una capacità (numero di richieste elaborate al secondo) di un ordine superiore rispetto alle soluzioni concorrenti. In esecuzione nel macchine virtuali cloud di Azure, nella maggior parte dei casi la latenza di accesso del client non supera i 300 microsecondi. Nei test condotti, Garnet supera significativamente Redis, Dragonfly e KeyDB in termini di prestazioni e reattività. In alcuni test, Garnet supera i sistemi concorrenti di dieci volte.
    Microsoft ha aperto il codice dello store Garnet, compatibile con Redis
    Microsoft ha aperto il codice dello store Garnet, compatibile con Redis
    Microsoft ha aperto il codice dello store Garnet, compatibile con Redis
    Microsoft ha aperto il codice dello store Garnet, compatibile con Redis

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster