分布式锁实现
使用顺序znode为竞争锁的进程排序,首先指定一个持有锁的znode,成为leader,想要获得锁的其他进程作为leader的子节点,并顺序编号,最小编号的进程成为下一个leader
异常
每一个ZooKeeper操作都有两种声明异常
1) InterruptedException
操作被中断,抛出异常
并不一定时有故障,可能时操作被取消
2)KeeperException
ZK服务器发出一个错误信号,或者与服务器存在通信问题,抛出KeeperException
KeeperException三类
> 状态异常:操作不能应用到znode,通常因为被另一个操作占用
> 可恢复异常:同一个会话中可恢复的异常KeeperException.ConnectonLossException,丢失连接,尝试重新连接,会话可恢复
> 不可恢复异常:会话失效,超时或者会话关闭KeeperException.SessionExpiredException,身份验证失败KeeperException.AuthFailedException