Watch是ZooKeeper中非常重要的一個機制,它可以監控ZooKeeper中節點的變化情況,告知用戶端。下面,我們以代碼為例來分析Watch在ZooKeeper中是如何實作的。ZooKeeper中一共由三種方法可以實作Watch,分别為getData、exists和getChildren,今天我們先來看下exists()方法:
2、exists()
執行結果如下:
而如果我們在擷取根目錄節點狀态之後,修改根目錄資料,添加代碼和執行結果如下:
與getData()一緻!
結論:
exists()方法僅僅監控對應節點的一次資料變化,無論是資料修改還是删除!若要每次對應節點發生變化都被監測到,那麼每次都得先調用exists()方法擷取一遍節點狀态!