Zookeeper通知机制为啥用watch?他是怎样设计的

2021-05-12  本文已影响0人  进击的三文鱼

一 前言

Zookeeper是一个广受大家喜爱的框架,他能搞定分布式锁,也能实现服务之间更好的调用,而他是通过通知机制来实现的,那么他是怎么实现的呢?下面就来一步一步聊一聊

二 Zookper的数据结构

image.png
  1. workers是父节点,下面的每一个子节点都保存系统中每一个从节点的信息
  2. tasks是父节点,下面的znode子节点保存已将创建并等待从节点执行任务的信息
  3. assign是父节点,下面的znode子节点保存了分派到某个从节点的一个一个任务信息

三 znode的不同类型

四 监视与通知的设计

根据上面的知识基础,我们基本了解了zookeeper的面貌,下面就是他的通知机制的设计

zookeeper的客户端向zookeeper发送要执行的任务,发完了之后一种设计是每次客户端都去查询这个任务有没有被执行,这样查很多遍显然是不够聪明的

所以zookeeper采用了通知的机制,这种机制就是在zookeeper上设置一个监视点,当客户端第一次访问的时候把监视点watcher放到zookeeper上,然后客户端就不用管,这时候消费者,访问了zookeeper,处理了这个任务,那么watch就登场了,他会主动向客户端发送消息,告诉客户端任务被处理了,然后watch自己就移除掉,这样就不用客户端来没一次查询了。

这个就是watch的意义,是一种很聪明的做法,依据他就知道为什么代用zookeeper要使用watch。

五 Zookeeper的架构

上一篇 下一篇

猜你喜欢

热点阅读