Zookeeper
一、概述
1.Zookeeper 是 Apache 提供的一套开源的、分布式的用于进行资源管理和服务协调的框架
2.Zookeeper 是根据 Google 关于 Chubby Lock 的论文来设计实现的
二、分布式下的问题
1.需要设置管理节点:对外接收请求来提供统一对集群中的节点进行操作
2.为了避免管理节点出现单点故障,需要设置管理集群
3.”管理节点“集群中需要选举出一个主节点,确定一套选举算法
4.”管理节点“集群需要能进行崩溃恢复
5.”管理节点“集群中的节点需要实时进行数据的共享
三、安装
1.单机安装:只在一个节点上安装,往往只能提供一部分功能
2.伪分布式:只在一个节点上模拟集群环境
3.完全分布式:在多个节点中进行集群环境的安装
四、特点
1.Zookeeper 本身是一个树状结构 - Znode树
2.根节点是 /
3.每一个子节点称之为是一个 znode 节点
4.所有的节点路径都必须以根节点作为起始
5.每一个节点都必须存储数据,这个数据一般是配置信息或者是对节点的描述
6.每一个持久节点下都可以挂载子节点
7.Znode 树本身维系在磁盘以及内存中
8.Znode 树维系在内存中的目的:为了快速查询
9.Znode 树维系在磁盘中的目的:崩溃恢复
10.Znode 树在磁盘中的存储位置由 dataDir 属性决定。dataDir 默认是在 /tmp 下
11.Zookeeper 存在事务概念。Zookeeper 会对每一次的写操作(create,delete,rmr,set)
分配一个全局递增的编号,称之为事务id - Zxid
五、命令
ls 查看指定节点的所有子节点 例:ls / ls /log
create 创建节点 例:create /music '' create /log 'log services'
delete 删除节点,要求这个节点没有子节点 例:delete /music
rmr 递归删除 例:rmr /log
get 查看节点信息 例:get /picture
set 修改节点数据 例:set /picture 'ps'
create -e 创建临时节点
create -s 创建持久顺序节点
create -e -s 创建临时顺序节点
六、节点信息
cZxid 当前节点的创建事务id
ctime 当前节点的创建时间
mZxid 当前节点的修改事务id
mtime 当前节点数据的修改时间
pZxid 子节点的增删事务id
cversion 子节点的增删次数
dataVersion 数据版本。当前节点数据的修改次数
aclVersion 当前节点的权限修改次数
ephemeralOwner 标记当前节点是否是一个临时节点
如果是持久节点,那么此项的值是0
如果是临时节点,那么此项值为当前的sessionID
dataLength 数据字节个数
numChildren 子节点个数
例:cZxid,mZxid,pZxid,cversion
七、节点类型
持久节点 临时节点
非顺序节点 PERSISTENT EPHEMEARAL
顺序节点 PERSISTENT_SEQUENCIAL EPHEMEARAL_SEQUENCIAL
八、特性
1.过半性 - 选举、存活、操作
2.数据一致性 - 原子广播
3.原子性 - 原子广播
4.顺序性 - 队列
5.实时性 - 可以动态监控节点的变化
6.可靠性 - 没有单点故障,通过崩溃恢复