Redis può essere identificato come un server di dizionario remoto progettato principalmente per la velocità. Inoltre, è ampiamente utilizzato come cache in memoria e database NoSQL. Come database o cache, è fondamentale fornire un alto tasso di accesso ai dati, alta disponibilità, frammenti di dati e funzionalità di scalabilità. Redis ha introdotto soluzioni Sentinel e cluster per affrontare gli aspetti menzionati.
Cluster Redis
La tecnologia del cluster Redis che è stata introdotta dalla versione 3.0 Abilita il ridimensionamento orizzontale per una determinata distribuzione Redis. Con i cluster Redis, i dati sono divisi su più nodi del cluster che forniscono un livello di servizio dati coerente e affidabile per le applicazioni.
È un must per avere almeno tre nodi principali per un cluster per funzionare correttamente. Inoltre, ogni nodo principale dovrebbe avere almeno un singolo nodo slave. Inoltre, i cluster Redis consentono un'elevata disponibilità fino a una certa misura promuovendo un nodo slave associato a un'istanza principale fallita in un hardware/software o un errore di rete.
Ogni nodo cluster comunica con altri nodi utilizzando un canale di comunicazione nodo-nodo basato sul protocollo binario. Inoltre, ogni nodo è aperto alle connessioni client utilizzando la porta TCP standard.
Di seguito è riportato uno schizzo di alto livello di una configurazione del cluster Redis di base:
Professionisti:
Contro:
Redis Sentinel
Redis Sentinel è un approccio ad alta disponibilità per le distribuzioni Redis che funziona come programma separato in background. Porta molte funzionalità alle distribuzioni Redis controllando costantemente lo stato del nodo master e slave, avvisando le modifiche significative relative alle istanze monitorate tramite un'API, inizializzando il processo di failover automatico quando si verifica un fallimento principale e agendo come fonte di origine Autorità per i clienti per scoprire l'indirizzo IP del nodo Master Redis attualmente attivo.
Una configurazione di Redis Sentinel può essere implementata utilizzando almeno tre nodi Sentinel che possono evitare la maggior parte dei problemi in una determinata distribuzione di Redis. Inoltre, in una determinata configurazione sentinella, il valore del quorum definisce il numero minimo di nodi sentinella che dovrebbe confermare quando un master non riuscisce.
Generalmente, il Redis Sentinel viene utilizzato principalmente per supportare l'elevata disponibilità di un database Redis in cui funziona meglio che nell'approccio del clustering.
Quello che segue è un'illustrazione di alto livello di una configurazione minima di Redis Sentinel:
Professionisti:
Contro:
Redis Sentinel vs Cluster
Redis Cluster e Sentinel sono due approcci in cui ciascuno affronta diversi aspetti relativi a una distribuzione Redis. Per evidenziare, l'approccio del cluster Redis è più adatto per implementazioni complicate che si occupano di set di dati enormi in cui fornisce frammenti automatici di dati per migliori prestazioni di interrogazione di lettura/scrittura, failover principale automatico e replica con alta disponibilità fino a una certa misura. Inoltre, i nodi del cluster Redis possono essere ridimensionati senza sforzo.
D'altra parte, Redis Sentinel è più focalizzato su implementazioni più piccole con alta disponibilità in mente.
Disponibilità
Il cluster Redis non supporta completamente l'alta disponibilità. Perché, se la maggior parte dei maestri non è disponibile, il cluster può scendere. Contrariamente all'approccio del cluster, Redis Sentinel offre un'alta disponibilità senza alcun intervento umano. Ancora più importante, il sentinella può sopravvivere anche con una singola istanza principale in esecuzione quando si verifica un fallimento critico.
Frammento di dati
Il cluster Redis offre funzionalità di frammenti in cui i dati sono distribuiti tra più nodi quando i clienti hanno l'accesso alla rete a tutti i nodi. Abilita una maggiore capacità di prestazione e archiviazione dei dati.
D'altra parte, Redis Sentinel non offre capacità di frammento. Perché lo sharding provoca l'utilizzo dello squilibrio del maestro e dello schiavo.
Replica
Entrambi gli approcci offrono la replica principale con alcune limitazioni. Redis Sentinel consente la replica per più livelli in cui diversi nodi slave possono replicare da una determinata istanza principale. Al contrario, l'approccio del cluster Redis non consente la replica per più livelli. È in grado di replicare l'istanza principale in un singolo nodo slave. Entrambi gli approcci compromettono la coerenza dovuta alla replicazione asincrimale.
Scalabilità
I cluster Redis sono altamente scalabili. Supporta fino a mille nodi in una determinata configurazione di cluster singolo. Inoltre, i cluster consentono l'aggiunta e la rimozione di nodi in modo dinamico e senza sforzo. Redis Sentinel non è scalabile e le scritture sono dirette all'istanza principale, quindi il sentinella non è in grado di affrontare i problemi di separazione delle letture-scrittura.
Architettura
È possibile costruire un Redis Sentinel completamente funzionale con solo tre nodi. Ma per impostare un cluster Redis, richiede almeno tre nodi principali e tre schiavi collegati a loro che è più costoso che nella distribuzione di Redis Sentinel.
Conclusione
Riassumendo, l'approccio del cluster Redis è più focalizzato su distribuzioni complesse quando sono importanti la scalabilità elevata, le prestazioni elevate e un'elevata memoria di dati e l'alta disponibilità non è significativa. D'altra parte, Redis Sentinel è principalmente costruito per applicazioni semplici che si concentrano principalmente sull'alta disponibilità. Rispetto, entrambe le soluzioni sono dotate di pro e contro, ma per supportare gli utenti finali con la distribuzione Redis più finemente sintonizzata.