CuratorFrameworkFactory有四种重连策略,均实现了RetryPolicy接口.
zk server端timeout参数
tickTime:zk的心跳间隔(heartbeat interval),也是session timeout基本单位.单位为毫秒.
minSessionTimeout:最小超时时间,zk设置的默认值为2*tickTime.
maxSessionTimeout:最大超时时间,zk设置的默认值为20*tickTime.
客户端实际的超时时间.
如果sessionTimeout的设置小于minSessionTimeout,则采用服务器的minSessionTimeout配置
如果sessionTimeout的设置大于maxSessionTimeout,则采用服务器的maxSessionTimeout配置.
客户端的超时设置,不能超过服务器端配置的范围
Curator 的客户端超时设置.
CuratorFrameworkFactory.newClient
连接超时15s
Session超时60s
Curator 四种重连策略
1.RetryUntilElapsed(int maxElapsedTimeMs, int sleepMsBetweenRetries)
以sleepMsBetweenRetries的间隔重连,直到超过maxElapsedTimeMs的时间设置
2.RetryNTimes(int n, int sleepMsBetweenRetries)
指定重连次数
3.RetryOneTime(int sleepMsBetweenRetry)
重连一次,简单粗暴
4.ExponentialBackoffRetry
ExponentialBackoffRetry(int baseSleepTimeMs, int maxRetries)
ExponentialBackoffRetry(int baseSleepTimeMs, int maxRetries, int maxSleepMs)
时间间隔 = baseSleepTimeMs * Math.max(1, random.nextInt(1 << (retryCount + 1)))
zk server端timeout参数
tickTime:zk的心跳间隔(heartbeat interval),也是session timeout基本单位.单位为毫秒.
minSessionTimeout:最小超时时间,zk设置的默认值为2*tickTime.
maxSessionTimeout:最大超时时间,zk设置的默认值为20*tickTime.
客户端实际的超时时间.
- int minSessionTimeout = zk.getMinSessionTimeout();
- if (sessionTimeout < minSessionTimeout) {
- sessionTimeout = minSessionTimeout;
- }
- int maxSessionTimeout = zk.getMaxSessionTimeout();
- if (sessionTimeout > maxSessionTimeout) {
- sessionTimeout = maxSessionTimeout;
- }
如果sessionTimeout的设置小于minSessionTimeout,则采用服务器的minSessionTimeout配置
如果sessionTimeout的设置大于maxSessionTimeout,则采用服务器的maxSessionTimeout配置.
客户端的超时设置,不能超过服务器端配置的范围
Curator 的客户端超时设置.
CuratorFrameworkFactory.newClient
连接超时15s
Session超时60s
- private static final int DEFAULT_SESSION_TIMEOUT_MS = Integer.getInteger("curator-default-session-timeout", 60 * 1000);
- private static final int DEFAULT_CONNECTION_TIMEOUT_MS = Integer.getInteger("curator-default-connection-timeout", 15 * 1000);
- public static CuratorFramework newClient(String connectString, RetryPolicy retryPolicy)
- {
- return newClient(connectString, DEFAULT_SESSION_TIMEOUT_MS, DEFAULT_CONNECTION_TIMEOUT_MS, retryPolicy);
- }
Curator 四种重连策略
1.RetryUntilElapsed(int maxElapsedTimeMs, int sleepMsBetweenRetries)
以sleepMsBetweenRetries的间隔重连,直到超过maxElapsedTimeMs的时间设置
2.RetryNTimes(int n, int sleepMsBetweenRetries)
指定重连次数
3.RetryOneTime(int sleepMsBetweenRetry)
重连一次,简单粗暴
4.ExponentialBackoffRetry
ExponentialBackoffRetry(int baseSleepTimeMs, int maxRetries)
ExponentialBackoffRetry(int baseSleepTimeMs, int maxRetries, int maxSleepMs)
时间间隔 = baseSleepTimeMs * Math.max(1, random.nextInt(1 << (retryCount + 1)))
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-2120610/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29254281/viewspace-2120610/