Redis
 sql >> Database >  >> NoSQL >> Redis

Redis sentinella vs clustering

Per prima cosa, parliamo sentinella.

Sentinel gestisce il failover, non configura Redis per HA. È una distinzione importante. In secondo luogo, il diagramma che hai pubblicato è in realtà una configurazione errata:non vuoi eseguire Sentinel sullo stesso nodo dei nodi Redis che sta gestendo. Quando perdi quell'host, perdi entrambi.

Quanto a "È uno spreco di risorse?" dipende dal tuo caso d'uso. Non hai bisogno di tre nodi Redis in quella configurazione, ne servono solo due. Tre aumenta la tua ridondanza, ma non è necessario. Se hai bisogno della ridondanza aggiuntiva, non è uno spreco di risorse. Se non hai bisogno della ridondanza, esegui semplicemente una singola istanza Redis e la definisci buona, poiché eseguirne di più sarebbe "sprecato".

Un altro motivo per eseguire due slave sarebbe quello di dividere le letture. Anche in questo caso, se ne hai bisogno, non sarebbe uno spreco.

Quanto a "C'è un modo migliore per utilizzare appieno le risorse disponibili?" non possiamo rispondere perché dipende troppo dallo scenario e dal codice specifici. Detto questo, se la quantità di dati da archiviare è "piccola" e la velocità di comando non è eccessivamente alta, ricorda che non è necessario dedicare un host a Redis.

Ora per "Il clustering Redis è un'alternativa alla sentinella Redis?". Dipende interamente dal tuo caso d'uso. Redis Cluster non è una soluzione HA:è una soluzione multi writer/più grande della ram. Se il tuo obiettivo è solo HA, probabilmente non sarà adatto a te. Redis Cluster presenta delle limitazioni, in particolare per quanto riguarda le operazioni con più chiavi, quindi non è necessariamente un'operazione di "uso semplice del cluster".

Se ritieni che avere tre host che eseguono Redis (e tre sentinelle in esecuzione) sia uno spreco, probabilmente riterrai che Cluster lo sia ancora di più poiché richiede più risorse.

Le domande che hai posto sono probabilmente troppo ampie e basate sull'opinione pubblica per sopravvivere come scritte. Se hai un caso/problema specifico che stai risolvendo, ti preghiamo di aggiornarlo in modo che possiamo fornire assistenza e informazioni specifiche.

Aggiornamento per le specifiche:

Per una corretta gestione del failover nel tuo scenario, sceglierei 3 sentinelle, una in esecuzione sul tuo server JBoss. Se hai 3 nodi JBoss, scegline uno su ciascuno. Avrei un pod Redis (master+slave) su nodi separati e lasciare che la sentinella gestisca il failover.

Da lì si tratta di cablare JBoss/Jedis per utilizzare Sentinel per le sue informazioni e la gestione della connessione. Dato che non li uso, una rapida ricerca rivela che Jedis ha il supporto per questo, devi solo configurarlo correttamente. Alcuni esempi che ho trovato sono alla ricerca di un esempio di Jedis con Sentinel e https://github.com/xetorthio/jedis/issues/725 che parlano di JedisSentinelPool essendo il percorso per l'utilizzo di una piscina.

Quando Sentinel esegue un failover, i client verranno disconnessi e Jedis gestirà (dovrebbe?) gestire la riconnessione chiedendo ai Sentinel chi è il master attuale.