其实如果有客户端C、客户端D等N个客户端争抢一个zk分布式锁,原理都是类似的。
-
大家都是上来直接创建一个锁节点下的一个接一个的临时顺序节点
-
如果自己不是第一个节点,就对自己上一个节点加监听器
-
只要上一个节点释放锁,自己就排到前面去了,相当于是一个排队机制。
而且用临时顺序节点的另外一个用意就是,如果某个客户端创建临时顺序节点之后,不小心自己宕机了也没关系,zk感知到那个客户端宕机,会自动删除对应的临时顺序节点,相当于自动释放锁,或者是自动取消自己的排队。
https://m.imooc.com/article/284956?block_id=tuijian_wz
https://blog.csdn.net/crazymakercircle/article/details/85956246