安装
- 下载
- 解压
- 运行
功能
文件系统+监听通知机制
统一命名服务 状态同步服务 集群管理 分布式应用配置项的管理
四种目录节点
- 持久化目录节点
- 持久化顺序编号目录节点
- 临时目录节点
- 临时顺序编号目录节点
监听机制
客户端注册监听它关心的目录节点,当目录节点发生变化,zookeeper会通知客户端
单机版的使用
-
创建节点
create [-s] [-e] path data acl
-s表示顺序节点 -e表示临时节点
-
查看节点内容
get path
-
查看子节点
ls path
-
更新节点内容
set path data
-
删除节点内容
delete path
rmr path 删除当前节点及子节点
-
节点监控
集群搭建
- 高可用
- 配置参数
- tickTime 通信心跳数,毫秒
- initLimit LF初始通信时限
- syncLimit LF同步通信时限
- dataDir 数据文件目录+数据持久化路径
- clientPort 客户端连接端口
- 选举机制
- 半数机制,半数以上机器存活,集群可用
- Leader通过内部选举机制临时产生
- 投票优先投给服务器id较大的
zookeeper客户端连接
- ZooInspector
####Java操作Zookeeper
- 节点的创建修改删除
- 节点时间监听
- 使用zkClient工具
监听原理
- 首先要有一个主线程
- 在主线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)
- 通过connect线程将注册的监听事件发送给Zookeeper
- 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中
- Zookeeper监听到有数据或路径变化,就将这个消息发送给listener线程
- listener线程内部调用了process( )方法
CAP理论
- 一个分布式系统不可能同时满足: 一致性(Consistency),可用性(Available),分区容错性(Partition Tolerance)
- Zookeeper保证了CP,不能保证每次服务请求的可用性,在极端环境下,Zookeeper可能会丢弃一些请求,需要重新请求才能获取结果