zookeeper分布式锁工作原理

92 阅读1分钟

zookeeper分布式锁运用于解决跨多个机器进程间数据同步问题,如图1-1

微信截图_20220225210439.png 图1-1

核心原理:当客户端获取锁时,会创建一个节点,使用完锁,便会删除节点

具体实现原理:(如图2-1)

微信截图_20220225211515.png

图2-1

1.客户端获取锁时,会在该lock结点下建立临时顺序子节点。

临时结点是防止服务器宕机时,删除获取锁时所创建的子节点。

2.然后客户端获取访问lock下所有子节点,如果发现自己创建的子节点的序号最小(创立顺序子节点原因),则会默认获取到锁,当使用完锁后,便会删除该子节点。

3.如果发现自己所创建的子节点不是最小的,说明未获取锁,便会找到比自己小的子节点,并在该节点上注册监听机制(删除机制)。

删除机制:比自己小的子节点删除时,该节点会立马监测到,并和其他子节点比较序号大小,序号最小则获取锁。

图2-1工作流程为:

1.a1机器获取锁,访问完毕后,删除、/a1结点

2./a2监听到/a1删除,比较序号大小,确认自己为最小序号,获取锁,访问完毕后删除/a2节点

3./a3监听到/a2删除,比较序号大小,确认自己为最小序号,获取锁,访问完毕后删除/a3节点

若服务中途因特殊原因宕机,重启服务后会发现lock下子节点全部被删除了