ZooKeeper 实现分布式锁的步骤如下:
1. 客户端连接 ZooKeeper,并在 /lock 下创建临时的且有序的子节点,第一个客户端对应的子节点为 /lock/lock - 10000000001,第二个为 /lock/lock - 10000000002,以此类推。
2. 客户端获取 lock 下的子节点列表,判断自己创建的子节点是否为当前子节点列表中序号最小的子节点,如果是则认为获得锁,否则监听刚好在自己之前一位的子节点删除消息,获得子节点变更通知后重复此步骤直至获得锁;
3. 执行业务代码;
4. 完成业务流程后,删除对应的子节点释放锁。