zookeeper初识

ZooKeeper是一个分布式、开源的分布式应用协调服务。node

设计目标

简单的数据模型

在ZooKeeper中,分布式进程之间的相互协调,是经过相似于标准文件系统的层次命名空间的(图以下)。相似于文件和目录,每一个组成部分称之为znode,znode是zookeeper中的最小数据单位,可是与存储的文件系统不一样的是,这些数据是存在于内存的,因此ZooKeeper能够实现高吞吐量和低延迟。
另一个不一样的是,节点既能够有本身的数据,也能够有本身的子节点,在存储系统中,是不可能本身既是目录,仍是文件的。Znode中有一个stat结构,其中包含数据更改、ACL更改和时间戳的版本号,以容许缓存验证和协调更新。
节点有4种类型:web

  1. 持久化节点:永久保存在服务器上,除非主动删除
  2. 持久化有序节点:节点的名称后加入有序的数字,相似自增加id
  3. 临时节点:在会话时间内保持,相似web项目的session
  4. 临时有序节点:临时节点的名称后加入有序的数字,相似自增加id

image.png

可复制

这个特性,支持他能够作集群,只要大多数服务是可用的,那ZooKeeper就是可用的。
image.png
客户端链接ZooKeeper服务时,须要知道每一个ZooKeeper的地址。当客户端链接到单个ZooKeeper时,会维护一个TCP链接,经过它发送请求、获取响应、获取监视事件和发送心跳。若是到服务器的TCP链接中断,客户端将链接到另外一台服务器。缓存

有序

ZooKeeper用一个数字来标记每一个更新,这个数字反映了全部ZooKeeper事务的顺序。服务器

数据是存在于内存的,因此ZooKeeper能够实现高吞吐量和低延迟。session

特色

  1. 顺序一致性:客户端发起的事务请求,在也会顺序的应用在Zookeeper中。
  2. 原子性:要么在全部的Zookeeper中都成功,要么都失败,不会有部分红功,部分失败的状况。
  3. 单一镜像:无论连的是哪一个服务器,客户端读取的数据是同样的
  4. 可靠性:一旦事务成功提交,那就会保留下来
  5. 及时性:客户端在必定范围时间内,读取的数据是同样的

Watcher

事件监听器。客户端能够在znode上设置监听,当znode发生变化时,这个监听就会被移除,而后客户端就会收到通知。要想不停的监听,就须要继续注册。分布式

ACL

控制节点访问权限spa

  1. CREATE:建立子节点的权限
  2. DELETE:能够删除子节点(仅下一级节点)
  3. WRITE:更新子节点的权限
  4. READ:读取节点数据及显示子节点列表
  5. ADMIN:设置节点ACL权限
相关文章
相关标签/搜索