zookeeper分布式锁运用于解决跨多个机器进程间数据同步问题,如图1-1
图1-1
核心原理:当客户端获取锁时,会创建一个节点,使用完锁,便会删除节点
具体实现原理:(如图2-1)
图2-1
1.客户端获取锁时,会在该lock结点下建立临时顺序子节点。
临时结点是防止服务器宕机时,删除获取锁时所创建的子节点。
2.然后客户端获取访问lock下所有子节点,如果发现自己创建的子节点的序号最小(创立顺序子节点原因),则会默认获取到锁,当使用完锁后,便会删除该子节点。
3.如果发现自己所创建的子节点不是最小的,说明未获取锁,便会找到比自己小的子节点,并在该节点上注册监听机制(删除机制)。
删除机制:比自己小的子节点删除时,该节点会立马监测到,并和其他子节点比较序号大小,序号最小则获取锁。
图2-1工作流程为:
1.a1机器获取锁,访问完毕后,删除、/a1结点
2./a2监听到/a1删除,比较序号大小,确认自己为最小序号,获取锁,访问完毕后删除/a2节点
3./a3监听到/a2删除,比较序号大小,确认自己为最小序号,获取锁,访问完毕后删除/a3节点
若服务中途因特殊原因宕机,重启服务后会发现lock下子节点全部被删除了