zookeeper

Zookeeper

  Zookeeper是开源的分布式的协调服务框架,是Apache Hadoop的子件,适用 于绝大部分分布式集群的管理

Zookeeper的特点

  1. 本身是一个树状结构 --- Znode树

  2. 每一个节点称之为znode节点

  3. 根节点是 /

  4. Zookeeper的所有操作都必须以根节点为基准进行计算 /

  5. 每一个znode节点都必须存储数据

  6. 任意一个持久节点都可以有子节点

  7. 任意一个节点的路径都是唯一的

  8. Znode树是维系在内存中 --- 目的是为了快速查询

  9. Zookeeper不适合存储海量数据。原因:1)维系在内存中,如果存储大

    量数据会耗费内存 2) 不是一个存储框架而是一个服务协调框架

  10. Zookeeper会为每一次事务(除了读取以外的所有操作都是事务)分配一

    个全局的事务id ---Zxid

Zookeeper的选举

  第一阶段:数据恢复阶段 会从数据目录(dataDir)中恢复数据 第二阶段:选举阶段

  1. 所有的节点都会推荐自己当leader并且发送自己的选举信息(最大事务 id - pZxid,编号 - myid,逻辑时钟值)

  2. 选举原则:先比较最大事务id,谁的事务id大谁就胜出;如果最大事务id 一样,则比较myid,谁的myid大谁就胜出

  3. 选举出的leader的胜出要满足过半性:即要比至少一半的节点大

  4. 如果在集群中新加入一个节点,节点的事务id比leader的事务id大,新的 节点是否会成为leader? --- 不会。只要选定了一个leader,那么后续节点

    的事务id和myid无论是多少,一律都是follower

  5. 如果leader宕机,集群中会自动选举一个新的leader

Zookeeper的一致性

  在Zookeeper中,接收一个请求之后,leader会将请求分发给每一个节点,由所有的节点投票确定是否执行这个请求 --- 如果有超过一半的节点同意执行 这个请求,那么这个时候leader才会决定执行这个操作

posted @ 2020-05-28 22:17  nancodex  阅读(163)  评论(0)    收藏  举报