Zookeeper
Zookeeper
Zookeeper
- 使用zab共识算法
- 树形znode
- 写操作线性有序
- FIFO client order
ZAB
- 使用ZAB算法而不是raft
- 但同样选举leader, 保持状态机, 先写log, 半数以上节点写log完成后才commit log
high perfermance
- zookeeper具有很高的读性能
- read any peer
- 通过FIFO client order保证了不会出现back in time现象
FIFO client order
- client写操作成功后, 一定不会读到这条操作之前的值(最起码能读到自己的写操作)
- 不会读到之前的值
- put操作会返回zxid(相当于是这条commited log的index)
- zookeeper客户端连接后会维持一个session, 通过这个session在get时携带zxid
写操作线性有序
- 所有写操作都必须通过master节点
- set(path, value, version)
- 通过version实现无锁式编程
- x0,v(ersion) = get(path); set(path, x1, v)
- only if set version == v, 才能执行写操作
znode type
- 持久节点
- 临时节点
- 顺序节点 SEQUENTIAL
Watch
- 可以watch监控节点或节点内容的变化情况
This post is licensed under CC BY 4.0 by the author.