-
监听器原理
- 首先有一个main()线程
- 在main线程中创建Zookeeper客户端,这时就会创建两个线程。一个负责网络连接通信(connect),一个负责监听(listener)。
- 通过connect线程将注册的监听事件发给Zookeeper。
- 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
- Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。
- listener线程内部调用process()方法

-
常见的监听
-
监听节点数据的变化
get -w path -
监听子节点增减的变化
ls -w path
-
Zookeeper写数据的流程
- Client向Zookeeper的Server1上写数据,发送一个写请求
- 如果Server1不是Leader,那么Server1会把接收到的请求进一步转发给Leader。Leader会将写请求广播给各个Follower,比如Server1和Server3,Server2是Leader。各个Follower写成功后就会通知Leader。这样保证每个Server上都有一份相同的副本。
- 当Leader收到半数以上的Server数据写成功了 ,那么就说明数据写成功了。写成功后,Leader会告诉Server1数据写成功了。
- Server1再通知Client数据写成功了。
本文详细介绍了Zookeeper监听器的工作原理,包括main线程中创建的connect和listener线程如何交互,以及Zookeeper如何处理数据和路径变更的监听事件。同时,阐述了Zookeeper的数据写入流程,从Client发起请求到数据在集群中同步的过程,确保数据一致性。

被折叠的 条评论
为什么被折叠?



