Explicación detallada del principio de funcionamiento de Zookeeper (reproducida)

1. El papel del Zookeeper

»El líder (líder) es responsable de la iniciación y resolución de la votación, y actualiza el estado del sistema
  » El alumno, incluidos los seguidores (seguidor) y los observadores (observador), el seguidor se utiliza para aceptar las solicitudes del cliente y desea que el cliente regrese como resultado, participar en la votación durante el proceso de elección
  »El observador puede aceptar conexiones de clientes y enviar solicitudes de escritura al líder, pero el observador no participa en el proceso de votación y solo sincroniza el estado del líder. El propósito del observador es expandir el sistema y aumentar la velocidad de lectura
  »Clientes Cliente, iniciador de solicitud

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

• El núcleo de Zookeeper es la difusión atómica, mecanismo que garantiza la sincronización entre servidores. El protocolo que implementa este mecanismo se denomina protocolo de
   protocolo Zab . El protocolo Zab tiene dos modos, que son el modo de recuperación (selección primaria) y el modo de transmisión (sincronización). Cuando el servicio comienza o después de que el líder
   falla, Zab ingresa al modo de recuperación. Cuando el líder es elegido y la mayoría de los servidores completan la sincronización con el estado del líder
   , el modo de recuperación finaliza. La sincronización de estado asegura que el líder y el servidor tengan el mismo estado del sistema.

• Con el fin de garantizar la coherencia secuencial de las transacciones, zookeeper utiliza un número de identificación de transacción creciente (zxid) para identificar las transacciones. Todas las
   propuestas tienen zxid agregado cuando se hacen. En la implementación, zxid es un número de 64 bits. La época usa sus 32 bits altos para identificar
   si la relación del líder ha cambiado. Cada vez que se selecciona un líder, tendrá una nueva época que identifica la
   regla actual de ese líder . Los 32 bits inferiores se utilizan para el conteo ascendente.
  • Cada servidor tiene tres estados en el proceso de trabajo:
    MIRANDO: El servidor actual no sabe quién es el líder y está buscando
    LEADING: el servidor actual es el líder elegido
    SIGUIENTE: el líder ha sido elegido y el servidor actual está sincronizado con eso

Otros documentos: http://www.cnblogs.com/lpshou/archive/2013/06/14/3136738.html

2. Mecanismo de lectura y escritura de Zookeeper

»Zookeeper es un clúster compuesto por múltiples servidores
  » Un líder, múltiples seguidores
  »Cada servidor guarda una copia de los datos
  » Consistencia global de datos
  »Lectura y escritura distribuidas
  » Reenvío de solicitudes de actualización, implementado por el líder

3. Garantía del Zookeeper

»Las solicitudes de actualización se realizan en secuencia y las solicitudes de actualización del mismo cliente se ejecutan en el orden en que se envían
  » Atomicidad de actualización de datos, una actualización de datos tiene éxito o falla
  »Vista de datos globalmente única, sin importar el servidor del cliente está conectado, la vista de datos es siempre consistente
  » En tiempo real, dentro de un cierto rango de eventos, el cliente puede leer los datos más recientes

4. Proceso de operación de datos del nodo Zookeeper

Inserte la descripción de la imagen aquí

Nota: 1. Envíe una solicitud de escritura a Follwer en el cliente.

2. Follwer envía la solicitud al líder.

3. Una vez que el líder lo recibe, comienza a votar e informa al seguidor que vote.

4. Follwer envía el resultado de la votación a Leader

5. Después de que el líder resuma los resultados, si es necesario escribirlo, comenzará a escribir y notificará al líder de la operación de escritura, y luego se comprometerá;

6.Follwer devuelve el resultado de la solicitud al cliente

• El seguidor tiene cuatro funciones principales:
    • 1. Enviar solicitud al Líder (mensaje PING, mensaje REQUEST, mensaje ACK, mensaje REVALIDATE);
    2. Recibir el mensaje Líder y procesarlo;
    3. Recibir la solicitud del Cliente, si está escribiendo Solicitud, enviar al Líder para votar,
    4. Devolver el resultado del Cliente.
    • El bucle de mensajes del seguidor procesa los siguientes tipos de mensajes del líder:
    • 1. Mensaje PING: mensaje de latido;
    • 2. Mensaje de PROPUESTA: una propuesta iniciada por el líder, que requiere que el
    seguidor vote; • 3. Mensaje COMMIT: la última propuesta en la Información del lado del servidor;
    • 4. Mensaje ACTUALIZAR: indica que la sincronización está completa
    • 5. Mensaje REVALIDAR: De acuerdo con el resultado REVALIDAR del Líder, cierre la sesión para ser revalidada o permita que acepte el mensaje;
    • 6. Mensaje SYNC: devuelve el resultado SYNC al cliente, este mensaje Inicialmente iniciado por el cliente, se usa para forzar las últimas actualizaciones.

5. Elección del líder del cuidador del zoológico

• La mitad de las
    máquinas pasa- 3 están vinculadas a una 2> 3 /
    2-4 máquinas están vinculadas a 2 2! > 4/2

• La propuesta A dice, quiero elegirme yo mismo, ¿estás de acuerdo con B? C ¿Estás de acuerdo? B dijo, estoy de acuerdo en elegir A; C dijo, estoy de acuerdo en elegir A. (Tenga en cuenta que hay más de la mitad de ellos aquí. De hecho, la elección ha sido exitosa en el mundo real.

Pero el mundo de la informática es muy estricto, además, debemos entender el algoritmo y seguir simulando. )
  • La siguiente propuesta B dijo, quiero elegirme a mí mismo, ¿estás de acuerdo con A; A dijo, más de la mitad estuve de acuerdo en ser elegido y tu propuesta no es válida; C dijo, A más de la mitad estuvo de acuerdo en ser elegido? y la propuesta B no es válida.
  • Entonces la propuesta de C decía, quiero elegirme a mí mismo, estás de acuerdo con A; A dijo, he aceptado ser elegido más de la mitad y tu propuesta es inválida; B dijo que más de la mitad de A ha aceptado ser elegido, y la propuesta de C es inválida.
  • El líder ha sido elegido en las elecciones y todos los seguidores detrás de él solo pueden obedecer las órdenes del líder. Y hay un pequeño detalle aquí, es decir, quién comienza y toma la delantera.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

6 、 zxid

• La información de estado del nodo znode contiene czxid, entonces, ¿qué es zxid?
  • Cada cambio de estado de ZooKeeper corresponde a un ID de transacción incremental, que se llama zxid. Debido a la naturaleza incremental de zxid, si zxid1 es menor que zxid2, entonces zxid1 debe ocurrir antes que zxid2.

La creación de cualquier nodo, o la actualización de los datos de cualquier nodo, o la eliminación de cualquier nodo, hará que el estado de Zookeeper cambie, lo que hará que aumente el valor de zxid.

7. Principio de funcionamiento de Zookeeper

»El núcleo de Zookeeper es la transmisión atómica, mecanismo que garantiza la sincronización entre servidores. El protocolo que implementa este mecanismo se llama protocolo Zab. El protocolo Zab tiene dos modos, que son el modo de recuperación y el modo de transmisión.

Cuando se inicia el servicio o después de que el líder falla, Zab ingresa al modo de recuperación. Cuando el líder es elegido y la mayoría de los servidores están sincronizados con el estado del líder, el modo de recuperación finaliza.

La sincronización de estado asegura que el líder y el servidor tengan el mismo estado del sistema

»Una vez que el líder ha sincronizado el estado con la mayoría de los seguidores, puede comenzar a transmitir mensajes, es decir, ingresar al estado de transmisión. En este momento, cuando un servidor se une al servicio zookeeper, se iniciará en modo de recuperación,

Descubra al líder y sincronice el estado con el líder. Cuando finaliza la sincronización, también participa en la transmisión del mensaje. El servicio Zookeeper se ha mantenido en estado de transmisión hasta que el líder falla o el líder pierde la mayor parte

Soporte de seguidores.

»El modo de transmisión debe garantizar que las propuestas se procesen en orden, por lo que zk utiliza un número de identificación de transacción creciente (zxid) para garantizar. Todas las propuestas agregan zxid cuando se realizan.

En la implementación, zxid es un número de 64 bits. Sus 32 bits altos son usados ​​por la época para identificar si la relación del líder ha cambiado. Cada vez que se selecciona un líder, tendrá una nueva época. Los 32 bits inferiores son un recuento ascendente.

»Cuando el líder falla o el líder pierde a la mayoría de sus seguidores, zk ingresa al modo de recuperación. El modo de recuperación requiere la reelección de un nuevo líder para restaurar todos los servidores a un estado correcto.

»Después de que cada servidor se inicia, pregunta a otros servidores por quién quiere votar.
  »Para consultas de otros servidores, el servidor responde con el id del líder recomendado por él mismo y el zxid de la última transacción procesada según su propio estado (cada servidor se recomendará a sí mismo cuando se inicie el sistema)
  » Después de recibir todas las respuestas del servidor , calcular Averigüe qué servidor tiene el zxid más grande y configure la información relacionada con el servidor como el servidor para votar la próxima vez.
  »El servidor que obtiene más votos en el proceso de cálculo es el ganador, si el ganador tiene más de la mitad de los votos, el servidor se selecciona como líder. De lo contrario, continúe este proceso hasta que se elija al líder

»El líder comenzará a esperar a que el servidor se conecte
  » El seguidor se conecta al líder y envía el zxid más grande al líder
  »El líder determina el punto de sincronización de acuerdo con el zxid del seguidor
  » Una vez completada la sincronización, se notifica al seguidor que se ha convertido estado actualizado
  » Después de que el seguidor recibe el mensaje actualizado, puede reiniciar Aceptar la solicitud de servicio del cliente

8. Consistencia de datos y algoritmo de paxos

• Se dice que la dificultad del algoritmo de Paxos es tan admirable como la popularidad del algoritmo, por lo que primero veremos cómo mantener la consistencia de los datos. Aquí hay un principio:
  • En un sistema de base de datos distribuida, si el estado inicial de cada El nodo es consistente.Cada nodo realiza la misma secuencia de operaciones, por lo que finalmente pueden obtener un estado consistente.
  • ¿Qué problema resuelve el algoritmo de Paxos? La solución es asegurar que cada nodo realice la misma secuencia de operaciones. Bueno, esto no es simple. El maestro mantiene una
   cola de escritura global. Todas las operaciones de escritura deben colocarse en este número de cola. Entonces, no importa cuántos nodos escribamos, siempre que las operaciones de escritura se basen en el número, podemos garantizar un
   consistente. Sí, eso es todo, pero ¿y si el maestro cuelga?
  • El algoritmo de Paxos usa la votación para numerar globalmente las operaciones de escritura. Al mismo tiempo, solo se aprueba una operación de escritura y las operaciones de escritura simultáneas deben ganar votos.
   Solo se aprobarán las operaciones de escritura que obtengan más de la mitad de los votos (por lo que solo Se aprobó una operación de escritura), otras operaciones de escritura no pudieron competir y tuvieron que iniciar otra
   ronda de votación, de esta manera, en la votación día tras día y año tras año, todas las operaciones de escritura fueron estrictamente numeradas y ordenadas. El número aumenta estrictamente. Cuando un nodo acepta una
   operación de escritura numerada 100, y luego una operación de escritura numerada 99 (debido a muchas razones imprevistas, como retrasos en la red), inmediatamente se dará cuenta de que sus datos son
   inconsistentes y se detendrá automáticamente Servicio externo y reinicie el proceso de sincronización. La falla de cualquier nodo no afectará la consistencia de los datos de todo el clúster (total 2n + 1 unidades, a menos que se suspendan más de n unidades).
  Resumen
  • Como subproyecto del proyecto Hadoop, Zookeeper es un módulo indispensable para la gestión del clúster Hadoop y se utiliza principalmente para controlar los datos del clúster.

Por ejemplo, administra el NameNode en el clúster de Hadoop, así como la sincronización de estado entre Master Election y Server en Hbase. \

Para el algoritmo de Paxos, puede ver el artículo Análisis completo de Zookeeper: Paxos como alma https://www.douban.com/note/208430424/

Libro recomendado: "From Paxos to Zookeeper Distributed Consistency Principle and Practice"

9 、 Observador

• Zookeeper debe garantizar una alta disponibilidad y una sólida coherencia;
  • Para admitir más clientes, es necesario agregar más
  servidores ; Más servidores aumentan la demora en la fase de votación, lo que afecta el rendimiento;
  • Sopesar la escalabilidad y el alto rendimiento e introducir Observer
  • El observador no participa en la votación;
  • Los observadores aceptan conexiones de clientes y envían solicitudes de escritura al nodo líder;
  • Agregue más nodos Observer para mejorar la escalabilidad sin afectar el rendimiento

10. ¿Por qué el número de grupos de cuidadores del zoológico es generalmente impar?

• El algoritmo de elección de líder adopta el protocolo Paxos.
  • La idea central de Paxos: cuando la mayoría de los servidores se escriben correctamente, los datos de las tareas se escriben correctamente. Si hay 3 servidores, entonces dos se escriben correctamente; si hay 4 o 5 servidores, entonces tres escriben correctamente .
  • El número de servidores es generalmente un número impar (3, 5, 7). Si hay 3 servidores, como máximo 1 servidor puede colgar; si hay 4 servidores, como máximo 1 servidor también puede colgar. .

Vemos que las capacidades de tolerancia a desastres de 3 servidores y 4 servidores son las mismas, por lo que para ahorrar recursos del servidor, generalmente usamos un número impar como el número de servidores implementados.

11. Modelo de datos de Zookeeper

»Estructura de directorio jerárquica, la denominación se ajusta a las especificaciones del sistema de archivos convencional
  » Cada nodo se llama znode en zookeeper y tiene un identificador de ruta único
  »El nodo Znode puede contener datos y nodos secundarios, pero los nodos de tipo EPHEMERAL no pueden tener nodos secundarios
  » Los datos en Znode puede tener varias versiones. Por ejemplo, si hay varias versiones de datos en una ruta determinada, entonces debe traer la versión para consultar los datos en esta ruta
  »Las aplicaciones cliente pueden configurar monitores en el nodo
  » El nodo no admite parte Leer y escribir, pero leer y escribir completamente a la vez

12. Nodo del guardián del zoológico

»Hay dos tipos de Znode, efímero y persistente
  » El tipo de Znode se determina cuando se crea y no se puede modificar posteriormente
  »Cuando finaliza la sesión del cliente del znode de corta duración, zookeeper eliminará el znode de corta duración. znode no puede tener nodos secundarios
  »Znode persistente no depende de la sesión del cliente, solo se eliminará cuando el cliente desee explícitamente eliminar el znode persistente
  » Znode tiene cuatro tipos de nodos de directorio
  »PERSISTENTE (persistente)
  » EPHEMERAL (temporal) a )
  >> PERSISTENT_SEQUENTIAL (nodo de directorio de número de secuencia persistente)
  >> EPHEMERAL_SEQUENTIAL (directorio temporal de nodo numerado secuencialmente)

Supongo que te gusta

Origin blog.csdn.net/sinat_39809957/article/details/113125210
Recomendado
Clasificación