zookeeper介绍

zk介绍

zk是一个开源的分布式协调服务。zk的设计目标是把复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的应用,并提供简单易用的接口提供给用户使用。

zk的设计目标

zk的目标是对外提供一个高性能,高可用,并且具有严格顺序访问控制能力(主要是写操作的严格顺序性)的分布式协调服务。具体设计目标如下。

  • 简单的数据模型
  • 可以构建集群
  • 支持顺序访问
  • 高性能

zk的基本概念

集群角色

通常在分布式系统中,构成集群的Node都有自己的角色,最经典的集群模式就是Master/Salve模式。这种模式中,Master具备处理写操作的能力,Slave具备读操作的能力。
实际上zk没有采用传统的主备模式实现集群,而是引入了Leader,Follower和Observer三种角色。在zk的集群中通过选举来确定一个集群的Leader,被选举成Leader的Node对外可提供读写能力,其他机器Follower和Observer对外只提供读的能力。
Follower和Observer的唯一区别在于Observer的机器不参加选举,同时也不参与写操作的过半写成功策略。

会话(Session)

指zk客户端与zk服务器之间的会话,在zk中,会话是通过客户端和服务器之间的一个TCP长连接来实现的。通过这个长连接,客户端能够使用心跳检测与服务器保持有效的会话,也能向服务器发送请求并接收响应,还可接收服务器的Watcher事件通知。Session的sessionTimeout,是会话超时时间,如果这段时间内,客户端未与服务器发生任何沟通(心跳或请求),服务器端会清除该session数据,客户端的TCP长连接将不可用,这种情况下,客户端需要重新实例化一个Zookeeper对象。

数据节点(Znode)

zk将所有的数据存储在内存的数据模型中,数据模型是一棵树,用斜杠(/)进行路径划分。
zk中Znode可以分为持久节点和临时节点两类。
持久节点是指节点一旦被创建,除非被删除否则该节点一直存储在zk上。
临时节点与持久节点不同,临时节点只在当前会话有效,临时节点的生命周期和客户端的会话绑定,一旦客户端的会话失效,那么客户端创建的临时节点也会被删除。
另外zk允许用户为创建的节点设置特殊属性:SEQUENTIAL。
zk在创建SEQUENTIAL节点时会自动的在节点后加上一个整形的数字。

watcher

Watcher(事件监听器)是zk的重要特性。zk允许用户在指定的节点上注册一个Watcher,并在一些特定的事件触发的时候给感兴趣的客户端发送一个通知。

ACL

zk采用ACL策略来进行权限控制。

  • CREATE:创建子节点权限
  • READ:获取节点数据和子节点列表的权限
  • WRITE:更新数据节点的权限
  • DELETE:删除子节点的权限
  • ADMIN:设置节点ACL的权限

你可能感兴趣的:(zookeeper介绍)