概述:
Zookeeper 为分布式应用提供分布式负载均衡服务,它是一个开源的,分布式的项目,对于分布式来说最容易出错的就是竞争条件和死锁,Zookeeper解决这个两个问题。
1.Zookeeper设计目标:
1. 简单:ZooKeeper结构类似文件系统,文件系统的文件夹对应Zookeeper的znodes,Zookeeper操作在内存,文件系统操作在硬盘中
2.可复制:一个Leader,多个follower
3.有序的:只要是更新就会通知所有Zookeeper事务,类似排队实现有序
4.快速: 读:写=10:1(也就是读速度是写速度的10倍)
2.数据模型(拿官方图看一下)和分层命名空间
图1.1 Zookeeper的分层命名空间
这个命名空间就是树形结构,每个znode都有/,通过节点路径找到对应的节点
3.节点和瞬时节点
- znode节点存储信息很少(0- 千字节范围),存储内容有:状态信息,配置,定位信息等等。
- znode节点包含一个version(版本)每一次数据改变,version号都会增加。
- znode节点保存ACL(access Controll List)访问控制列表,读写权限控制。
- (ephemeral nodes)瞬时节点 跟会话绑定,也就是会话关闭,这个节点也会被删除
4.Zookeeper可以保证的内容:
- Sequential Consistency(串行一致性)一个客户端更新会逐步按顺序更新其他客户端
- Atomicity (原子性) 要么成功 要么失败,没有中间状态
- Single System Image (单一系统映像) 客户端所看东西是一样的
- Reliability(可信赖) 只要更新之后,这个状态和值都会保存直到再次修改
- Timeliness(及时) 保证在一定时间完成所有客户端更新
5.简单API
- create 创建
- delete 删除
- exists 存在
- get data 得到数据
- set data 设置数据
- get children 得到所有子节点list
- sync 等待所有数据被传播
总结: Zookeeper简单操作,功能强大。