Zookeeper的粗浅认识

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护名字服务分布式同步组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

zookeeper是伴随着分布式服务而生的。利用zookeeper的特性可以管理好集群,但是zookeeper并不能直接管理各个服务,而是作为一个数据储存系统储存各个服务的状态,信息这些。在本质上,ZooKeeper是一个分布式的小文件存储系统,本身也提供一些数据增删改查的操作。其数据结构是一个树形结构,树形结构上有一些端点znode,每个znode可以存储一些数据,zookeeper可以增加,修改,删除端点和端点中的数据。znode有四种:

  1. PERSISTENT-持久化目录节点 客户端与zookeeper断开连接后,该节点依旧存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。
  2. PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
  3. EPHEMERAL-临时目录节点 客户端与zookeeper断开连接后,该节点被删除
  4. EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

zookeeper本质上只有两个功能:一个是管理节点和数据,第二是监听节点和数据的变化。

在zookeeper集群中包含多个zookeeper服务器,这些服务器分为三种角色:leaderfollow0observer

zookeeper特性:

  1. 全局数据一致多个zookeeper组成的集群中,数据是一致的
  2. 分布式读写更新请求转发,由leader实施
  3. 更新请求顺序进行来自同一个client的更新请求按其发送顺序依次执行
  4. 数据更新原子性要么都成功,要么都不成功

zookeeper重要机制:

  1. 通知机制 通知机制就是zookeeper的watch机制,当设置watch后,端点的变化会通知到客户端
  2. 选举机制 当集群中的一半端点失效时,按照一定逻辑重新选出leader角色。

    示意图如上图,zookeeper集群中包含了多个zookeeper节点服务,每个节点服务都有自己的znode树,当更改任意一个znode节点的时候,这个系统会将此节点的修改同步改到各个zookeeper节点上,保证不同client访问zookeeper时的数据一致性。

猜你喜欢

转载自www.cnblogs.com/trembear/p/10882435.html