Zookeeper watch機制原理
準備工作
經過上一小節的學習我們知道ZookeeperServerMain是單機版的伺服器主類
我們可以自己寫一個ZkClient類
public class ZkClient {
public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
final CountDownLatch countDownLatch=new CountDownLatch(1);
ZooKeeper zooKeeper=
new ZooKeeper("localhost:2182",
4000, new Watcher() {
@Override
public void process(WatchedEvent event) {
System.out.println(event);
if(Event.KeeperState.SyncConnected==event.getState()){
//如果收到了服務端的響應事件,連線成功
countDownLatch.countDown();
}
}
});
countDownLatch.await();
//CONNECTED
System.out.println(zooKeeper.getState());
byte[] data = zooKeeper.getData("/lry",new Watcher(){
@Override
public void process(WatchedEvent event) {
System.out.println(event);
}
},new Stat());
System.out.println(new String(data));
System.in.read();
//只有getData,getChildren,exist這三個api有watcher
}
}
我們還需要一個控制檯可以輸入命令的主類,ZookeeperMain
進入ZookeeperMain的run方法,把如下程式碼註釋
// String line;
// Method readLine = consoleC.getMethod("readLine", String.class);
// while ((line = (String)readLine.invoke(console, getPrompt())) != null) {
// executeLine(line);
// }
並且加上一行程式碼
這樣先啟動ZookeeperServerMain,在啟動ZookeeperMain我們就可以在控制檯手打命令了
watch示例
菜鳥上說的很簡潔明瞭,但是有一些小點限於篇幅沒有說到,比如:
- 客戶端傳送給伺服器的包不包括watcher物件資訊?
- pendingQueue在watch機制中的作用?
- 為什麼只需要request.setWatch(true),而不需要把watcher物件傳送給伺服器?
- 伺服器在收到修改命令後觸發triggerWatch方法傳送xid=-1的事件給客戶端後,客戶端是如何從pendingQueue拿出watcher物件,然後回撥process方法的?
原始碼解析
//todo
相關文章
- Zookeeper--Watch機制
- 【Java面試】Zookeeper中的Watch機制的原理?Java面試
- Zookeeper watcher 事件機制原理剖析事件
- Kubernetes List-Watch 機制原理與實現 - chunked
- Zookeeper的基本命令詳解和ACL和watch監聽機制
- ZooKeeper Watcher機制
- Apache ZooKeeper - 事件監聽機制初探Apache事件
- Zookeeper深入原理
- Zookeeper 的選舉機制也不過如此!
- 從原始碼級別深挖Zookeeper監聽機制原始碼
- 多型的機制原理多型
- springcloud eureka原理和機制SpringGCCloud
- Android10_原理機制系列_事件傳遞機制Android事件
- Redisson 分散式鎖實戰與 watch dog 機制解讀Redis分散式
- kubernetes list/watch設計原理
- UAV MOF工作原理之Agent注入機制原理
- HashMap原理(二) 擴容機制及存取原理HashMap
- HTTP快取機制及原理HTTP快取
- kube-apiserver限流機制原理APIServer
- Nginx快取原理及機制Nginx快取
- 詳解 php 反射機制原理PHP反射
- http快取機制及其原理HTTP快取
- springMVC 的工作原理和機制SpringMVC
- Https工作原理&TLS握手機制HTTPTLS
- ZooKeeper 工作、選舉 原理
- zookeeper使用和原理探究
- 面試官:說一說Zookeeper中Leader選舉機制面試
- Zookeeper的選舉機制和同步機制超詳細講解,面試經常問到!面試
- Roguelike機制的原理和應用
- 深入理解React:事件機制原理React事件
- nextTick的原理及執行機制
- MySQL索引機制(詳細+原理+解析)MySql索引
- Android RollBack機制實現原理剖析Android
- zookeeper的原理和使用(一)
- 一文搞懂Zookeeper原理
- 深入瞭解Zookeeper核心原理
- 容器的工作原理和隔離機制
- php底層原理之垃圾回收機制PHP