Zookeeper (cinco) Zookeeper distribuye de bloqueo para lograr

znode (nodo) Tipo

Zookeeper estructura de almacenamiento de datos como un árbol, el árbol se compone de nodos, este nodo se llama Znode.
Aquí Insertar imagen Descripción

Znode divide en cuatro tipos:

1, el nodo duradera (persistente)

El tipo de nodo predeterminado. Después de crear el cliente y el nodo Zookeeper está desconectado, todavía existe el nodo.

2, el orden del nodo (PERSISTENT_SEQUENTIAL)

El llamado orden de los nodos, es decir, cuando se crea un nodo, Zookeeper numeradas de acuerdo con el nombre de nodo creado en orden cronológico:Aquí Insertar imagen Descripción

3, el nodo temporal (EFÍMERO)

Y con una duración nodo Por el contrario, cuando se crea un nodo cliente y Zookeeper desconectado temporalmente serán eliminados nodo;

4, una orden temporal de los nodos (EPHEMERAL_SEQUENTIAL)

Como el nombre sugiere, las características del nodo de orden temporal, y los nodos y el orden de unión temporal de nodos :
Al crear el nodo, Zookeeper numera de acuerdo con el orden de nombre de nodo hora de creación;
cuando se crea el nodo y el cliente se desconecta nodo temporal Zookeeper se elimina.


ZOOKEEPER bloqueo distribuido para lograr

Zookeeper bloqueo distribuido aplica precisamente el orden temporal de los nodos.

1, para obtener un bloqueo

En primer lugar, crear un nodo ParentLock duradera en Zookeeper ellos. Cuando el primer cliente quiere obtener un bloqueo, es necesario crear una orden temporal de los nodos Lock1 en ParentLock este nodo.

Después, Cliente1 encontrar todo el orden temporal de los nodos ParentLock abajo y tipo Lock1 propio nodo juicio se crea que no es el orden más alto. Si este es el primer nodo, el bloqueo exitoso.

En este momento, si tenemos un cliente CLIENTE2 llegado a adquirir el bloqueo, a continuación, ParentLock descarga y luego crear una orden temporal de los nodos Lock2.

Encuentra toda orden temporal Cliente2 de nodos ParentLock abajo y tipo juzgar Lock2 propio nodo no es creado por el orden más alto de un nodo encontrado Lock2 no el más adelante.

Así, Cliente2 de su nodo frontal Lock1 sólo se registró Vigía para ordenar, si existe escuchar nodo Lock1. Este medio de bloqueo agarran Cliente2 falla, entran en el estado de espera.
Aquí Insertar imagen Descripción

En este momento, si hay otro cliente client3 vienen a adquirir el bloqueo, a continuación, ParentLock descarga y luego crear una orden temporal de los nodos Lock3.

Client3 Verifica en el orden temporal de los nodos ParentLock abajo y clasificar, crear su propio juicio nodo Lock3 no es un orden más alto, los resultados también encontraron nodo Lock3 no menos importante.

Así, client3 de su nodo frontal Lock2 sólo se registró Vigía para ordenar, si existe escuchar nodo Lock2. Esto significa que el mismo agarre client3 falla la cerradura, entrar en el estado de espera.

Como resultado, Cliente1 obtener un bloqueo, Cliente2 supervisar la Lock1, client3 controlar la Lock2. Esta es precisamente la formación de una cola de espera.

3, el bloqueo se libera

Liberar el bloqueo se divide en dos situaciones:
1, cuando se haya completado la tarea, Cliente1 mostrará comando Lock1 para eliminar un nodo de llamadas.
2, la ejecución de tareas, el cliente se bloquea

Cliente1 en adquirir un bloqueo en el proceso de ejecución de la tarea, en caso de un accidente, se romperá el vínculo con el lado del servicio Zookeeper. De acuerdo con el nodo temporal características, el nodo asociado Lock1 seguirá los borrada automáticamente.
Debido a la existencia del estado y ha sido el seguimiento de Cliente2 Lock1 cuando se elimina el nodo Lock1, Cliente2 será notificado inmediatamente. Esta vez Cliente2 consulta todos los nodos ParentLock a continuación confirman de nuevo Lock2 no es la más adelantada del nodo nodo actual crear tú mismo. Si el más adelante, es lógico obtener un bloqueo Cliente2.
De manera similar a client3 Cliente2

Publicado 44 artículos originales · ganado elogios 5 · Vistas 906

Supongo que te gusta

Origin blog.csdn.net/qq_40634246/article/details/104603902
Recomendado
Clasificación