一、整體流程 1、客戶端註冊Watcher 2、服務端處理Watcher 3、客戶端回調Watcher 二、Watcher 通知狀態與事件類型 state type path WatcheEvent 只有三個屬性 state type path 不會告訴原始數據內容和更新內容,需要client再次主 ...
一、整體流程 1、客戶端註冊Watcher 2、服務端處理Watcher 3、客戶端回調Watcher 二、Watcher 通知狀態與事件類型 state type path WatcheEvent 只有三個屬性 state type path 不會告訴原始數據內容和更新內容,需要client再次主動獲取最新信息
![](https://images2017.cnblogs.com/blog/1333062/201802/1333062-20180208212510545-244852801.png)
![](https://images2017.cnblogs.com/blog/1333062/201802/1333062-20180208212520810-1058276616.png)
- Watcher:Watcher是用於監聽節點,session 狀態的,比如getData對數據節點a設置了watcher,那麼當a的數據內容發生改變時,客戶端會收到NodeDataChanged通知,然後進行watcher的回調。
- AsyncCallback:AsyncCallback是在以非同步方式使用 ZooKeeper API 時,用於處理返回結果的。例如:getData同步調用的版本是:byte[] getData(String path, boolean watch,Stat stat),非同步調用的版本是:void getData(String path,Watcher watcher,AsyncCallback.DataCallback cb,Object ctx),可以看到,前者是直接返回獲取的結果,後者是通過AsyncCallback回調處理結果的。