Redis
 sql >> Base de données >  >> NoSQL >> Redis

Sentinelle Redis vs clustering

Tout d'abord, parlons sentinelle.

Sentinel gère le basculement, il ne configure pas Redis pour HA. C'est une distinction importante. Deuxièmement, le diagramme que vous avez publié est en fait une mauvaise configuration - vous ne voulez pas exécuter Sentinel sur le même nœud que les nœuds Redis qu'il gère. Lorsque vous perdez cet hôte, vous perdez les deux.

Quant à "Est-ce un gaspillage de ressources ?" cela dépend de votre cas d'utilisation. Vous n'avez pas besoin de trois nœuds Redis dans cette configuration, vous n'en avez besoin que de deux. Trois augmente votre redondance, mais n'est pas obligatoire. Si vous avez besoin d'une redondance supplémentaire, ce n'est pas un gaspillage de ressources. Si vous n'avez pas besoin de redondance, il vous suffit d'exécuter une seule instance Redis et de l'appeler bonne - car en exécuter plus serait "gaspillé".

Une autre raison d'exécuter deux esclaves serait de diviser les lectures. Encore une fois, si vous en avez besoin, ce ne serait pas un gaspillage.

Quant à "Existe-t-il une meilleure façon d'utiliser pleinement les ressources disponibles ?" nous ne pouvons pas répondre à cela car cela dépend beaucoup trop de votre scénario et de votre code spécifiques. Cela dit, si la quantité de données à stocker est "petite" et que le taux de commande n'est pas excessivement élevé, n'oubliez pas que vous n'avez pas besoin de dédier un hôte à Redis.

Passons maintenant à "Le clustering Redis est-il une alternative à la sentinelle Redis ?". Cela dépend vraiment entièrement de votre cas d'utilisation. Redis Cluster n'est pas une solution HA - c'est une solution multiple writer/larger-than-ram. Si votre objectif est juste HA, cela ne vous conviendra probablement pas. Redis Cluster est livré avec des limitations, en particulier autour des opérations multi-clés, donc ce n'est pas nécessairement une opération simple "utiliser simplement le cluster".

Si vous pensez que le fait d'avoir trois hôtes exécutant Redis (et trois sentinelles exécutant) est un gaspillage, vous considérerez probablement que Cluster l'est encore plus car il nécessite plus de ressources.

Les questions que vous avez posées sont probablement trop larges et basées sur des opinions pour survivre telles qu'elles sont écrites. Si vous avez un cas/problème spécifique sur lequel vous travaillez, veuillez le mettre à jour afin que nous puissions vous fournir une assistance et des informations spécifiques.

Mise à jour pour plus de détails :

Pour une bonne gestion du basculement dans votre scénario, j'opterais pour 3 sentinelles, une s'exécutant sur votre serveur JBoss. Si vous avez 3 nœuds JBoss, utilisez-en un sur chacun. J'aurais un pod Redis (maître + esclave) sur des nœuds séparés et je laisserais la sentinelle gérer le basculement.

À partir de là, il s'agit de câbler JBoss/Jedis pour utiliser Sentinel pour sa gestion des informations et des connexions. Comme je n'utilise pas ceux-ci, une recherche rapide révèle que Jedis a le support pour cela, il vous suffit de le configurer correctement. Quelques exemples que j'ai trouvés sont à la recherche d'un exemple de Jedis avec Sentinel et https://github.com/xetorthio/jedis/issues/725 qui parlent de JedisSentinelPool étant la voie d'utilisation d'une piscine.

Lorsque Sentinel exécute un basculement, les clients seront déconnectés et Jedis s'occupera (devrait ?) de gérer la reconnexion en demandant aux Sentinels qui est le maître actuel.