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

Réplication active-active Redis

Redis v2.8.3 ne prend pas en charge les configurations multi-maîtres. La vraie question, cependant, est pourquoi voulez-vous en créer un? Autrement dit, quel défi/problème essayez-vous de résoudre ?

Il semble que le défi que vous essayez de résoudre consiste à réduire la charge du réseau (plus d'informations ci-dessous) en éliminant les lectures sur le net. Étant donné que Redis n'est pas (encore) multi-maître, la seule façon de le faire est de configurer chaque serveur d'application avec un maître et un esclave (de l'autre maître) - c'est-à-dire un grand total de 4 instances Redis (et deux fois la RAM).

Le scénario simple est lorsque chaque application met à jour uniquement un sous-ensemble mutuellement exclusif des clés de la base de données. Dans ce scénario, ce type de configuration peut en fait être bénéfique (au moins à court terme). Si, toutefois, les deux applications peuvent toucher toutes les touches ou si même une seule clé est "partagée" pour les écritures entre les applications, vous devrez alors intégrer la logique de verrouillage/résolution des conflits/etc... dans vos applications pour consolider le maître local et les différences entre les esclaves (et cela peut être un peu exagéré). Dans les deux cas, cependant, vous vous retrouverez avec trop de Redises (c'est-à-dire plus d'un), ce qui signifie au moins plus d'efforts administratifs.

Notez également qu'en colocalisant l'application et la base de données sur le même serveur, vous vous préparez à un échec d'évolutivité presque certain. Que se passera-t-il lorsque vous aurez besoin de plus de ressources de calcul pour vos applications ou Redis ? Comment allez-vous ajouter un autre serveur d'applications au mix ?

Ce qui me ramène au problème réel que vous essayez de résoudre - la charge du réseau. Pourquoi est-ce un problème exactement ? Vos applications sont-elles si gourmandes en débit ou le réseau est-il si fin que vous êtes prêt à aller aussi loin ? Ou peut-être que la latence est le problème que vous souhaitez résoudre ? Quoi qu'il en soit, je vous recommande plutôt d'envisager une conception éprouvée, à savoir séparer Redis des applications et le mettre sur ses propres ressources. Certes, le réseau vous frappera au visage et vous devrez contourner / avec (ce que tout le monde fait). D'un autre côté, vous aurez plus de flexibilité et de contrôle sur votre configuration beaucoup plus simple et cela, dans mon livre, est un énorme gain.