REDIS RedLock bloqueo distribuido


Redis primera charla en un bloqueo en distribución normal, con

1. Modo Sentinel solo nodo maestro-esclavo de bloqueo distribuido /, caja de seguridad?

Tal vez te enteraste, el bloqueo de la siguiente manera:

Al configurar un comando conjunto de bloqueo, ya que contiene setnx, la función, el efecto de las funciones atómicas expirará operar, se proporciona un valor aleatorio a la llave, y solo en el caso exitoso regreso Verdadero, el tiempo de caducidad de la configuración clave clave no existe (preferiblemente en milisegundos)

1 SET nombre_tecla my_random_value NX PX # 30000 NX representan si no existe y está configurado para devolver True, en caso contrario devuelve Falso PX y no establece el tiempo de expiración representado por milisegundos, después de lo cual representa 30.000 milisegundos esta clave caducado

 

2. Después de la adquisición de la cerradura, y la realización de negocios relacionados, es necesario retirar el conjunto de bloqueo hasta su propia (debe eliminar el bloqueo sólo se ha configurado su cuenta, otros no puede quitar el sistema de la cerradura);

razones Eliminar: Para garantizar una alta eficiencia de los recursos del servidor, no espere hasta que se bloquee automáticamente expirar suprime

 

Método Borrar: borrar la escritura Lua utilizado preferentemente (Redis no garantizan este script se ejecuta otras operaciones, para garantizar un funcionamiento atomicidad), de la siguiente manera; lógica clave de adquisición es, si está presente, y este valor es la clave para eliminar su entorno; de lo contrario, omita;

1  si redis.call ( "obtener", teclas [1]) == argv [1 ] y luego
 2      retorno redis.call ( "del", las teclas [1 ])
 3  más 
4      de retorno 0
 5 final

 

Redis desertar cerraduras de un solo punto: Este defecto es muy evidente, aunque sólo sea una instancia de Redis, esto colgó, él es todos los servicios dependientes se colgaron. Obviamente no es adecuado para aplicaciones a gran escala.

2. Actualizar el principal problema de un modelo arquitectónico

Con el fin de evitar un punto único de fallo, lo hacemos Redis para dominar una arquitectura maestro / esclavo de un maestro, un esclavo. A continuación se encuentra un tal problema. Aquí está el panorama.

 

  1. Un cliente obtiene un bloqueo en el Maestro.
  2. Los datos se sincroniza con el Maestro Esclavo cuando Hung (como maestro y esclavo sincronización entre asíncrono).
  3. Esclavo se convierte en maestro.
  4. Cliente B adquiere el bloqueo por la misma clave y valor. La falta de bloqueo distribuido
  5. Liberar la operación de bloqueo, ajuste libre de añadir sus propias cerraduras.

3.redis Redlock

 Nombre completo se llama Redis Distributed Lock; que el uso de bloqueo distribuido ReDiS implementado;    RedLock web oficial explicó  Distribuido Cerraduras con Redis , Inglés no es bueno socio menor, puede hacer referencia a este artículo, traducido sesión bastante buena " Redis Distributed Lock RedLock "

   Personal resumirse como sigue:

algoritmo Redlock

Supongamos que tenemos N (suponiendo 5) Redis ejemplo principal, todos los nodos son independientes, el sistema es simple y la llamada de servicio, y sin la ayuda de cualquier otro sistema de retransmisión mensaje similar o similares. Echemos un vistazo en el algoritmo de simulación:

  1. servidor de cliente para obtener el tiempo t0 actual, el número de milisegundos.
  2. Usando el mismo valor de clave, y adquirir secuencialmente el bloqueo de cinco casos. tiempo de espera del cliente se fijó un negocio es mucho menor que la duración del bloqueo se requiere en el momento de la adquisición de la cerradura. Por ejemplo, supongamos bloquear 10 segundos, se puede proporcionar el tiempo de espera, tal como 5-50 ms. Esto evita un Redis en sí se ha colgado, pero el cliente ha estado tratando de adquirir la caja de la cerradura. Después de un tiempo de espera el salto directo a la siguiente nodo.
  3. El cliente restando el tiempo t0 actual (t1), se calcula para obtener un bloqueo consumido t2 (= t1-t0). Sólo t2 bloqueo es menor que el tráfico de tiempo efectivo (es decir, el segundo paso durante 10 segundos), y, al menos en el cliente 3 (5/2 + 1) para adquirir la tabla de bloqueos creemos que el éxito adquisición de bloqueo.
  4. Si el bloqueo se ha adquirido, entonces el bloqueo de tiempo de negocio eficaz es 10s-t2.
  5. Si el cliente no se adquiere de bloqueo, no puede ser mayor que o igual a N un ejemplo / 2 + 1 a adquirir el bloqueo, también puede ser eficaz del tiempo (10s-t2) es negativo, vamos a tratar de liberar el bloqueo, aunque no en para obtener de ese nodo.

de desbloqueo

   Liberación es relativamente simple, directo elimine la clave correspondiente en todos los casos como. Para determinar la liberación de su propio valor. No suelte los otros.

 

 

 

 

 

 

Estas son las cerraduras RedLock liberar el código fuente, utilice el

En el modo de Futuro, la escritura Lua, esta parte se puede saber, vistazo al código fuente es siempre un dolor de cabeza, pero Daniel escribió el código fuente es así. Más tarde escribirá un artículo especial fuente redLock análisis.

Supongo que te gusta

Origin www.cnblogs.com/amberJava/p/12593648.html
Recomendado
Clasificación