sql >> Base de Datos >  >> NoSQL >> Redis

Redis replicación activa-activa

Redis v2.8.3 no admite configuraciones multimaestro. La verdadera pregunta, sin embargo, es ¿por qué quieres configurar uno? Dicho de otra manera, ¿qué desafío/problema estás tratando de resolver?

Parece que el desafío que está tratando de resolver es cómo reducir la carga de la red (más sobre eso a continuación) eliminando las lecturas en la red. Dado que Redis no es multimaestro (todavía), la única forma de hacerlo es configurar cada servidor de aplicaciones con un maestro y un esclavo (del otro maestro), es decir, un total de 4 instancias de Redis (y el doble de RAM).

El escenario simple es cuando cada aplicación actualiza solo un subconjunto mutuamente excluyente de las claves de la base de datos. En ese escenario, este tipo de configuración puede ser realmente beneficiosa (al menos a corto plazo). Sin embargo, si ambas aplicaciones pueden tocar todas las teclas o si solo se "comparte" una tecla para escrituras entre las aplicaciones, entonces deberá hornear la lógica de bloqueo/resolución de conflictos/etc... en sus aplicaciones para consolidar el maestro local y diferencias de esclavos (y eso puede ser un poco exagerado). Sin embargo, en cualquier caso, terminará con demasiados (es decir, más de 1) rediseños, lo que significa más esfuerzo administrativo como mínimo.

También tenga en cuenta que al colocar la aplicación y la base de datos en el mismo servidor, se está configurando para una falla de escalabilidad casi segura. ¿Qué sucederá cuando necesite más recursos informáticos para sus aplicaciones o Redis? ¿Cómo agregará otro servidor de aplicaciones a la mezcla?

Lo que me lleva de nuevo al problema real que está tratando de resolver:la carga de la red. ¿Por qué exactamente es eso un problema? ¿Sus aplicaciones tienen un rendimiento tan alto o la red es tan delgada que está dispuesto a llegar tan lejos? ¿O tal vez la latencia es el problema que desea resolver? Sea como sea, le recomendé que considere un diseño probado en el tiempo, es decir, separar Redis de las aplicaciones y ponerlo en sus propios recursos. Cierto, la red te golpeará en la cara y tendrás que trabajar con ella (que es lo que hacen todos los demás). Por otro lado, tendrá más flexibilidad y control sobre su configuración mucho más simple y eso, en mi opinión, es una gran ganancia.