2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper es un servicio de coordinación distribuida de alta disponibilidad que se utiliza ampliamente en sistemas distribuidos para resolver el problema de coherencia de los sistemas distribuidos. A continuación se presentarán en detalle los principios subyacentes de ZooKeeper, incluida su arquitectura, modelo de datos, mecanismo central y protocolo de coherencia.
ZooKeeper adopta una arquitectura maestro-esclavo, que generalmente consta de un líder y varios seguidores. También hay nodos observadores como nodos sin derecho a voto para compartir la presión de las solicitudes de lectura.
ZooKeeper almacena datos en una estructura de árbol similar a un sistema de archivos y cada nodo se denomina znode.
Se establece una sesión entre cada cliente y el clúster de ZooKeeper para mantener el estado de la conexión y administrar los nodos temporales. ZooKeeper detecta el estado de la conexión del cliente a través del mecanismo de latido. Si no se recibe ningún latido dentro de un cierto período de tiempo, la sesión se considera desconectada.
Para garantizar la coherencia de los datos de cada nodo, ZooKeeper adopta un mecanismo de sincronización de datos. Cuando el nodo líder procesa una solicitud de escritura, enviará la operación de cambio a todos los nodos seguidores. El nodo seguidor confirmará después de aceptar la operación de cambio y, en última instancia, el nodo líder decidirá si la operación de cambio es exitosa.
ZooKeeper admite el mecanismo Watch. El cliente puede registrar Watch en el znode especificado. Cuando los datos o los nodos secundarios del znode cambien, ZooKeeper notificará al cliente.
ZooKeeper utiliza un protocolo de coherencia llamado ZAB (Zookeeper Atomic Broadcast) para garantizar la coherencia de los datos. ZAB consta de dos fases: la fase electoral y la fase de transmisión.
Cuando se inicia el clúster ZooKeeper o falla el nodo Líder, se requiere una elección para determinar un nuevo Líder. La fase electoral se divide principalmente en los siguientes pasos:
Una vez que se determina el Líder, se ingresa a la fase de transmisión. El Líder es responsable de procesar la solicitud de escritura del cliente y transmitir la operación de cambio a todos los nodos Seguidores. Los pasos específicos son los siguientes:
El siguiente es un ejemplo simple que usa ZooKeeper, que muestra cómo crear nodos, leer datos de nodos y registrar Watch.
existir pom.xml
Introduzca la dependencia del cliente ZooKeeper.
xmlCopiar código