Loading

zookeeper学习笔记

Paxos算法:https://www.douban.com/note/208430424/

过半通过,两阶段提交
image

如何选举leader
image
详细过程见processon

watch
统一视图
image

image

分布式配置
watch来实现
代码实现

分布式锁
image

zk是通过session来控制分布式锁

zab是zk对于Paxos简化实现
Zookeeper Atomic Broadcast
zookeeper的原子广播协议
image

tickTime
initLimit
syncLimit
dataDir目录
image

在每个server的dataDir目录新建一个myid文件,里面放server的编号
分发
image
image

每个节点只能放1M数据,二进制安全

[xxoo]
cZxid = 0x200000002 <-- zookeeper顺序值,体现在这个id上,leader维护一个单调递增的序列 c:表示create, 00000002表示事务递增序列值,0x2:表示leader的纪元(32位),如果leader会革新换代,这里会增1
ctime = Wed May 20 03:20:54 CST 2020
mZxid = 0x200000006 <---修改id,由leader来维护
mtime = Wed May 20 03:26:31 CST 2020
pZxid = 0x200000004
cversion = 1
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0 <---临时持有者,持久化 如果-e可以创建临时节点,由session来控制
dataLength = 5
numChildren = 1

session也会迁移

注意观察这两个结果,其中的cZxid差了1,其实是有其他客户端连接,导致同步了一次session,消耗了一次事务id
[zk: localhost:2181(CONNECTED) 4] ls -s /oxxo
[]
cZxid = 0x200000011
ctime = Wed May 20 04:56:18 CST 2020
mZxid = 0x200000011
mtime = Wed May 20 04:56:18 CST 2020
pZxid = 0x200000011
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
[zk: localhost:2181(CONNECTED) 5] create /aaaa ""
Created /aaaa
[zk: localhost:2181(CONNECTED) 6] ls -s /aaaa
[]
cZxid = 0x200000013
ctime = Wed May 20 04:57:10 CST 2020
mZxid = 0x200000013
mtime = Wed May 20 04:57:10 CST 2020
pZxid = 0x200000013
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 0

create -s /abc/xx "dd" 这样创建节点可以规避分布式覆盖的问题【分布式下的统一的id】

统一配置管理---> 节点的1M数据
分组管理 --> path结构
统一命名 --> sequential
同步 --> 临时节点 【分布式锁】

zk实现分布式锁(带事务、队列模式的锁模型)
zk可以用于HA选主

image

posted @ 2021-06-05 16:52  Grey Zeng  阅读(19)  评论(0编辑  收藏  举报