watcher是zk里面非常重要的特性。watcher一定要去好好地看一下,一定要去好好地理解一下它是如何去用的,包括触发的事件类型等等。监督者也可以理解为触发器,也就是说当我们的节点发生了一些变化的时候,比如说增加一些属性,或者说是更新了,或者说是这个节点被删除了,那么它们都会触发一个watcher。watcher是一个事件,只有当我们的用户通过客户端去操作了它的节点,操作完之后watcher事件才会被触发。
浅白地讲,watcher就是一个触发器,类似于sqlserver里面的触发器。就是说当我们的SQL语句执行完之后,执行完某一个语句,那么它就会触发一个事件,这个也是一个同样的道理。
在zookeeper整个生命周期中,它是一个固定的。就是说我设置之后我只触发一次,那么触发完之后它当前的这个watcher事件就会被立即销毁。后面通过另外一个apache开源客户端来做的话,它可以不是一次性,它可以设置为一个永久性的。它只要去设置它的值,那么watcher是肯定会触发。我们不需要一次再一次重新去设值。这是它们的区分。我们只要记住zookeeper它的watcher是一次性的。
一个节点下面它会有很多的子节点,子节点下面又有很多的子节点。它是一个嵌套的逻辑在里面,其实它就可以分为两种,一种是父节点,一种就是子节点。