[TOC]
1 zookeeper简介
zookeeper是一套分布式协调服务,是高性能的分布式数据一致性解决方案。由雅虎创建。
1.1 特点
- 开源
- 高性能
- 实时性
- 单一视图:就和HDFS一样,屏蔽了背后的若干集群信息。无论客户端连接到哪台机器,展现给所有客户端的视图都是一致的。
- 可靠性
- 有许多好用的第三方客户端工具,比如ZkClient,curator等。
- 有着广泛的应用(Hadoop,Solr,HBase,Storm等)
1.2 zookeeper的应用案例
- 负载均衡
- 发布/订阅
- 分布式队列
- 分布式锁
- 命名服务
2 几个名词
2.1 几个角色
- Leader
是zookeeper集群中的核心,一个集群中的老大。
- Follower
Follower是zookeeper集群中Leader的下属节点,Leader带领的一帮小弟。
- Observer
Observer是观察者。
2.2 session
zookeeper中的session一般指的是客户端和zookeeper集群之间的一个TCP连接。
一般在客户端启动的时候就会和zookeeper集群之间建立一个长连接。
2.3 数据节点
整个zookeeper的数据模型就是一棵树。
和Linux文件系统类似。有一个根节点,其下有若干子节点。
这些节点可以保存数据。
另外,zookeeper集群中的一台机器,也可以称之为一个节点。上面所说的节点是指在同一台机器上而言的。
2.4 watcher
watcher指的是在某些zookeeper节点上注册的监听器,用以监听数据的变化。
2.5 ACL
此处的ACL(Access Control List)和Linux文件系统的中的那个访问控制列表有点类似。
权限主要有:
- CREATE : 创建子节点
- READ : 获取节点数据和子节点列表
- WRITE : 更新节点数据
- DELETE : 删除子节点
- ADMIN : 设置节点ACL的权限
与授权相关的几个概念:
- shchema:权限模式,有IP和digest两种
- ID:授权对象
- schema为IP时,该值为具体的IP地址
- scheme为digest时,该值为
userName:base64(sha1(userName:password))
- permission:权限,指的就是上面所说的五种权限
最终的组合为: schema + ID + permission
2.6 version
Item | DESC |
---|---|
version | 当前数据节点的数据内容版本号 |
cversion | 当前数据节点的子节点版本号 |
aversion | 当前数据节点ACL版本号 |