Zookeeper tiene dos tipos de monitoreo
- Supervisar cambios en el directorio de nodos (agregar y eliminar nodos)
ls -w / ruta
Cree un nodo permanente de / sanguo / shuguo (nota: los nodos temporales no pueden tener hijos)
[zk: localhost:2181(CONNECTED) 5] create -s /sanguo/shuguo joke
Created /sanguo/shuguo0000000005
zkClient escucha los cambios en el directorio / sanguo
[zk: localhost:2181(CONNECTED) 4] ls -w /sanguo
[shuguo, shuguo0000000002, shuguo0000000003, shuguo0000000004]
[zk: localhost:2181(CONNECTED) 5]
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/sanguo
- Monitorear los cambios en los datos del nodo (modificar el valor del nodo)
obtener -w / ruta
El cliente modifica el valor de / sanguo
[zk: localhost:2181(CONNECTED) 0] get /sanguo
古代中国
[zk: localhost:2181(CONNECTED) 1] set /sanguo "古中国"
El cliente zkClient monitorea el cambio del valor de / sanguo
[zk: localhost:2181(CONNECTED) 20] get -w /sanguo
古代中国
[zk: localhost:2181(CONNECTED) 21]
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/sanguo
Nota: 1. El cliente primero debe registrarse para escuchar.
2. Si el directorio o los datos cambian, el servidor informa al cliente. Una vez que el cliente recibe la notificación del evento de escucha, no continuará monitoreando.
3. Necesita volver a registrarse para monitorear.
Implementación del mecanismo de monitoreo del cuidador del zoológico
1. Cree un cliente zkClient.
2. Inicie dos subprocesos en el método main () de zkClient.
connect thread: conéctese a zkServer y envíe solicitudes de monitoreo. (Solicitud para monitorear el directorio de nodos o los datos de los nodos).
Escuchar hilo: se utiliza para esperar el procesamiento de la notificación de escucha de zkServer.
3. El hilo de conexión de zkClient se conecta a zkServer y envía una solicitud para monitorear eventos.
4. Después de recibir la solicitud de monitoreo de zkClient, zkServer establece una lista de monitoreo y registra el evento de monitoreo en la lista.
5. Una vez que zkServer encuentra la ocurrencia del evento de monitoreo registrado, notificará inmediatamente a zkClient.
6. El hilo de escucha de zkClient llama a process () para procesar la notificación de monitoreo.