网络抖动,客户端和ZK集群的session连接断了,那么zk以为客户端挂了,<br>就会删除临时节点,这时候其他客户端就可以获取到分布式锁了<br>
zk有重试机制,一旦zk集群检测不到客户端的心跳,就会重试,Curator客户端支持多种重试策略。<br>多次重试之后还不行的话才会删除临时节点。
RetryUntilElapsed(int maxElapsedTimeMs, int sleepMsBetweenRetries) <br>以sleepMsBetweenRetries的间隔重连,直到超过maxElapsedTimeMs的时间设置
RetryNTimes(int n, int sleepMsBetweenRetries) <br>指定重连次数
RetryOneTime(int sleepMsBetweenRetry)<br>重连一次,简单粗暴
ExponentialBackoffRetry<br>ExponentialBackoffRetry(int baseSleepTimeMs, int maxRetries) <br>ExponentialBackoffRetry(int baseSleepTimeMs, int maxRetries, int maxSleepMs)<br>时间间隔和最大重试次数
zk server端timeout参数<br>tickTime:zk的心跳间隔(heartbeat interval),也是session timeout基本单位.单位为毫秒.<br>minSessionTimeout:最小超时时间,zk设置的默认值为2*tickTime.<br>maxSessionTimeout:最大超时时间,zk设置的默认值为20*tickTime
Curator 的客户端超时设置.<br>CuratorFrameworkFactory.newClient<br>连接超时15s<br>Session超时60s