net.neoremind.haguard.zk
类 ZkHaGuard
java.lang.Object
net.neoremind.haguard.AbstractHaGuard
net.neoremind.haguard.zk.ZkHaGuard
- 所有已实现的接口:
- Closeable, HaGuard
public class ZkHaGuard
- extends AbstractHaGuard
- implements HaGuard, Closeable
基于Zookeeper实现的HaGuard,使用curator框架。
- 作者:
- zhangxu
| 从类 java.lang.Object 继承的方法 |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ZkHaGuard
public ZkHaGuard()
init
public void init(String name)
- 阻塞式的初始化和Zookeeper的连接,这个方法在一个容器生命周期中只允许允许一次。
和zookeeper之间的连接遵循每实例一个ZkClientProvider的方式,这样当实例内部有多个同步线程的时候,
可以共享一个ZkClientProvider,状态都是一致的,避免有些线程是leader,有些是standby的情况。
改方法是全异步的,如果zookeeper连接不上,也会返回。但是一般上层应用拿不到leader latch,不会成为leader。
而且
apache.zookeeper.ClientCnxn包的日志会打印如下:
Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket
connection and attempting reconnect
参数name标示同步线程的名称,默认的话只有一个可以初始化好和zk的连接,其他的都不再重复初始化了。
- 指定者:
- 接口
HaGuard 中的 init
close
public void close()
- 指定者:
- 接口
Closeable 中的 close
takeToken
public boolean takeToken(long timeout)
- 指定者:
- 接口
HaGuard 中的 takeToken
takeTokenWithDefaultTimeout
public boolean takeTokenWithDefaultTimeout()
- 指定者:
- 接口
HaGuard 中的 takeTokenWithDefaultTimeout - 覆盖:
- 类
AbstractHaGuard 中的 takeTokenWithDefaultTimeout
hasToken
public boolean hasToken()
- 指定者:
- 接口
HaGuard 中的 hasToken
getZkClientProvider
public ZkClientProvider getZkClientProvider()
setZkClientProvider
public void setZkClientProvider(ZkClientProvider zkClientProvider)
getLatchPath
public String getLatchPath()
setLatchPath
public void setLatchPath(String latchPath)
Copyright © 2016 neoremind. All rights reserved.