Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 9508|Respuesta: 2

Implementación de bloqueo distribuido en Zookeeper

[Copiar enlace]
Publicado en 20/3/2018 16:23:52 | | | |
Diseño de la esclusa

  Descubre la idea de implementación de los bloqueos:
1. Comienza creando un directorio como un bloqueo (znode), que normalmente se usa para describir la entidad bloqueada, llamada :/lock_node
2. El cliente que quiere obtener el bloqueo crea un znode en el directorio del bloqueo como nodo hijo del bloqueo/lock_node, y el tipo de nodo es Nodo Temporal Ordenado (EPHEMERAL_SEQUENTIAL);
Por ejemplo, dos clientes crean znodes, /lock_node/lock-1 y /lock_node/lock-2
3. El cliente actual llama a getChildren(/lock_node) para obtener todos los nodos hijos del directorio de bloqueo, sin configurar watch, y luego obtener los nodos hermanos que son más pequeños que él mismo (creados en el paso 2).
4. El nodo que es más pequeño que él mismo en el paso 3 no existe y el nodo más pequeño es el mismo que el creado en el paso 2, lo que indica que el número de secuencia actual del cliente es el menor, obtener el bloqueo y terminar.
5. El cliente monitoriza el estado del nodo temporal ordenado que es el siguiente más pequeño que él mismo
6. Si cambia el estado del subnodo monitorizado, saltar al paso 3 y continuar con las operaciones de seguimiento hasta que se cierre la carrera de bloqueo.     

El autor no introducirá aquí el bloqueo de distribución, echemos un vistazo al diagrama de flujo de todo el diseño del código de la siguiente manera





Anterior:Explicación detallada de AutoResetEvent en .net/c#
Próximo:Sobre el problema de que Android 7.0 no puede realizar captura de paquetes https
 Propietario| Publicado en 20/3/2018 16:49:35 |
Pasos de esclusa distribuidos por el cuidador del zoológico:
1. Zookeeper es un nodo con nodos, similar a un directorio de archivos, así que abstraemos el bloqueo en un directorio, zookeeper tiene un nodo de EPHEMERAL_SEQUENTIAL tipos, múltiples hilos y cuando el nodo es creado por zookeeper, nos ayuda a organizar el orden a crear, de modo que los directorios bajo este nodo sean secuenciales.
2. Obtener el nodo más pequeño del directorio actual, determinar si el nodo más pequeño es el nodo actual, si eso significa que el bloqueo es exitoso, si no es el fallo de adquisición del bloqueo.
3. Cuando falla el bloqueo, para evitar el efecto enjambre, lo que tienes que hacer es obtener el nodo anterior del nodo actual y luego escuchar el nodo.
4. Cuando hagas esto, al liberar el bloqueo, también notificarás al siguiente nodo.
 Propietario| Publicado en 20/3/2018 16:54:46 |
Infórmate con antelación sobre el estado de los cuidadores y los tipos de eventos.


Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com