zookeeper原理简述:
- zookeeper树形节点存储,类似Unix文件结构
- zkClient与zk建立连接后可以获取节点信息,也可以监听节点变化
- 节点下建立的节点可以选择有序节点
因此实现分布式锁不要太简单:
- 先去拿号(创建自己的节点),记住自己的号;
- 拿取所有有序节点,看自己的是序号是不是最小,是就拿到锁了,用完锁之后在finally中删掉自己的那个节点;
- 如果不是最小就阻塞等待循环sleep(100ms),醒来如果监听器监听到节点变化,发现发现目前自己是最小的号,跳出循环,拿到锁去执行,之后删节点释放锁