zookeeper的数据模型
一种分布式协调服务
树是有节点组成,zookeeper的数据存储也是基于节点,这些节点叫做znode
Znode
znode的引用方式是路径引用,类似于文件路径
Znode包含了数据,子节点引用,访问权限等
data Znode存储的数据
ACL Znode的访问权限
stat Znode的各种元数据,如事务ID,版本号,时间戳,大小等
child 当前节点的子节点引用,类似二叉树的左右孩子
zookeeper适用于读多写少的场景,Znode并不用于存储大量数据,而是少量的状态和配置信息。
Zookeeper的基本操作和事件通知
create 创建节点
delete 删除节点
exists 判断节点存在
getData 获取节点数据
setData 设置节点数据
getChildren 获取节点下所有子节点
watch操作-----节点数据等发生变化的时候,会收到异步通知。
zookeeper集群
ZAB协议
zab崩溃恢复
- leader election 选举
- discovery 寻找最新事务
- Synchronization 同步
zab写入数据 - follower=>leader=> other follower 单调一致性
一致性
zookeeper适用场景
- 分布式锁=>同一时间一台leader
- 名字服务=>所有服务提供统一入口
- 配置管理=>共享配置
- 集群管理=>节点的加入和退出
Zookeeper 目录结构
- bin:放置运行脚本和工具脚本,如果是 Linux 环境还会有有 zookeeper 的运 行日志 zookeeper.out
- conf:zookeeper 默认读取配置的目录,里面会有默认的配置文件
- contrib:zookeeper 的拓展功能
- dist-maven:zookeeper的 maven 打包目录
- docs:zookeeper 相关的文档
- lib:zookeeper 核心的 jar
- recipes:zookeeper 分布式相关的 jar 包
- src:zookeeper 源码