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

嵌套类摘要
static class ZkHaGuard.State
           
 
构造方法摘要
ZkHaGuard()
           
 
方法摘要
 void close()
           
 String getLatchPath()
           
 ZkClientProvider getZkClientProvider()
           
 boolean hasToken()
           
 void init(String name)
          阻塞式的初始化和Zookeeper的连接,这个方法在一个容器生命周期中只允许允许一次。
 void setLatchPath(String latchPath)
           
 void setZkClientProvider(ZkClientProvider zkClientProvider)
           
 boolean takeToken(long timeout)
           
 boolean takeTokenWithDefaultTimeout()
           
 
从类 net.neoremind.haguard.AbstractHaGuard 继承的方法
getDefaultTimeoutMs, setDefaultTimeoutMs
 
从类 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.