zookeeper分布式锁
zookeeper分布式锁:[*]①获得锁:若自己创建的节点是序号最小的,则获得锁;
[*]②释放锁:删除自己创建的子节点;
zookeeper分布式锁实现①【适合集群小于10台的情况】
[*]客户端创建节点,节点后缀带上创建节点的序号;
[*]客户端获取所有子节点;
[*]注册watcher;(区别实现②)
[*]若自己创建的节点是序号最小的,则获得锁;
[*]若不是序号最小的;
[*]等到下一次节点变更时,再次获取所有子节点;
zookeeper分布式锁实现②【适合集群规模较大的情况】
[*]客户端创建节点,节点后缀带上创建节点的序号;
[*]客户端获取所有子节点;
[*]不注册任何watcher;(区别实现①)
[*]若自己创建的节点是序号最小的,则获得锁;
[*]若不是序号最小的;
[*]找出序号比自己小的那些节点,对其调用exist()方法,注册事件监听;(区别实现①)
[*]注册(小于自己序号的节点)watcher;(区别实现①)
[*]等到下一次节点变更时,再次获取所有子节点;
参考:http://jm-blog.aliapp.com/?p=2554
页:
[1]