上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.4.3 ZooKeeper的观察机制
ZooKeeper作为一款成熟的分布式协调框架,其观察机制是很重要的。观察者会订阅一些感兴趣的主题,这些主题一旦发生变化,就会自动通知这些观察者。ZooKeeper的观察机制是一个轻量级的设计。它采用了一种推拉结合的模式。
一旦服务器端感知主题发生变化,那么只会给关注的客户端发送一个事件类型和节点信息,而不会发送具体的变更内容,所以事件本身是轻量级的,这就是所谓的“推”部分。然后,收到变更通知的客户端需要自己去拉变更的数据,这就是“拉”部分。
Kafka将集群信息注册到ZooKeeper集群中,并由ZooKeeper进行观察和监听。当前Kafka集群发生了变化,例如,某个Broker宕机或出现故障,这些信息都会被ZooKeeper感知,从而进行相应的处理。
下面的代码示例展示了ZooKeeper的观察机制。在这里的示例中,我们监听ZooKeeper节点/testwatcher的变化。