zookeeper 简介
zookeeper是分布式应用协调者,高吞吐低延迟,提供分布式统一配置、服务注册、分布式锁等功能。数据存在内存中,持久化实现在日志中,内存结构类似于树形结构zookeeper 安装
- 下载链接:https://zookeeper.apache.org/releases.html
- 解压
- 进入配置目录修改:如数据与日志存放地方dataDir、连接端口号clientPort
- 启动命令:bin/zkServer.sh start
zookeeper 配置
zoo.cfg的关键配置有3个:
tickTime=2000:一次心跳的基本时间
dataDir:数据与日志的存放地方
clientPort:端口号zookeeper连接
client连接zookeeper服务器
支持TCP连接,发送请求、获取响应,获取监听事件、发送tick心跳zookeeper特点
- zookeeper结构简单,每个目录为Znode节点,可以是目录,也可以存放数据
- 没有相对目录,只有绝对目录,以“/”为根
- Znode节点类型:持久节点、临时节点、顺序节点、临时顺序节点
- 每个写请求都有对应一个zxid事务ID,全局唯一且有序
- 客户端会定时发送tick给zookeeper服务器
- 每个Znode节点的大小限制为1M
- 每个客户端的操作是按照顺序执行的,每个操作具有原子性
- 连接到哪个zookeeper服务器,获取的结果都一样
- zookeeper Session会话
客户端和zookeeper服务器保持一个TCP连接,一个TCP连接就是一个Session会话,由zookeeper分配唯一的SessionID
客户端主动定时间隔向zookeeper服务器发送心跳,以保持Session有效,若超过Session timeout(默认2倍 tickTime)时间收到Client心跳,则此Client失效
- zookeeper watch机制
Znode节点支持监听事件,监听Znode节点的变化,包括增删改查
触发watch事件:create、delete、change、child(子节点事件)