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

Clúster de Redis/equilibrio de carga

En primer lugar, puede cambiar la configuración predeterminada si trabaja poco en

redis-trib.rb

en la función def check_create_parameters . Puede configurar una réplica maestra y una esclava.

El propósito de esta configuración es la tolerancia a fallas. Los esclavos también se pueden usar para lectura (READONLY). En los tres maestros, los hashslots se distribuyen por igual y con un algoritmo de equilibrio de carga se pueden redistribuir y las claves reales. Los pasos de un posible algoritmo que distribuye las claves entre los nodos son (probado por mí y funciona como se esperaba):

  1. Encuentra la multitud de maestros
  2. Obtener el número total de llaves que tienen
  3. Para cada nodo principal, almacene el nombre de host, el puerto y el número de claves
  4. Calcule las claves que debe tener cada maestro para que la distribución de claves sea equilibrada (total de claves del clúster / número de maestros)
  5. Encuentre qué nodos maestros deben tomar o dar claves y la cantidad total de llaves que deben dar/tomar
  6. Caracterice a los maestros como nodos de origen o de destino dependiendo de si reciben o entregan claves, respectivamente
  7. Comience a migrar del nodo de origen a los nodos de destino, primero las ranuras hash y luego las claves relevantes e itere hasta que todos los maestros tengan la misma cantidad de claves

Este algoritmo ayudará a minimizar el tiempo de respuesta. Lo que quiero decir:

Con tres maestros se puede minimizar el tiempo de respuesta. Si tiene una configuración con un maestro y este maestro contiene, por ejemplo, 30000 #claves, el tiempo de respuesta para obtener 1000 claves a la vez es> de una configuración con 2 maestros que contienen 15000 cada uno.

Si crea una clave en master1, entonces si intenta alcanzar (leer) esa clave desde master2, obtendrá un error MOVIDO. Entonces, la solución es crear un cliente inteligente que mapee los hashslots al nodo correspondiente. Por lo tanto, puede eliminar la clave de master2 solo en el caso de que master2 redirija su solicitud al maestro correcto.

Espero que ayude.