整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

14.3.6状态

hadoop 花牛 11℃ 0评论

ZooKeeper对象在其生命周期中会经历几种不同的状态(参见图丨4-3)。你 可以在任何时刻通过getState()方法来査询对象的状态:

public States getState()

States被定义成代表ZooKeeper对象不同状态的枚举类型值(不管是什么 枚举值,一个ZooKeeper的实例在一个时刻只能处于一种状态)。在试图与 ZooKeeper服务建立连接的过程中,一个新建的ZooKeeper实例处于 CONNECTING状态。一旦建立连接,它就会进入CONNECTED状态。

image.png

14-3. ZooKeeper状态转换图

通过注册观察对象,使用了ZooKeeper对象的客户端可以收到状态转换通知。在进入CONNECTED状态时,观察对象会收到一个WatchedEvent 通知,其中 KeeperState的值是SyncConnected

ZooKeeperwatcher对象肩负着双重责任:一方面它可以被用于获得ZooKeeper状态变化的相关通知(如本节所述)另一方面还可以被 用于获得znode变化的相关通知(参见14.3.2节对观察触发器的讨 论)。传递给ZooKeeper对象构造函数的(默认的)观察被用于监视其状态的变化。监视znode的变化可以使用一个专用的观察对象(将其 传递给适当的读操作),也可以通过读操作中的布尔标识来设定是否 共享使用默认的观察。

ZooKeeper实例可以断开然后重新连接到ZooKeeper服务,此时它的状态 就在CONNECTEDCONNECTING之间转换。如果它断开连接,观察会收到 一个Disconnected事件。注意,这些状态转换都是由ZooKeeper实例自

己发起的,如果连接丢失,它会自动尝试重新连接。如果close()方法被调用或出现会话超时(观察事件的KeeperState值为 Expired)时,ZooKeeper实例会转换到第三个状态CLOSED。一旦处于CLOSED状态,ZooKeeper对象不再被认为是活跃的(可以对States使用 isAliveO方法来测试),并且不能再用。为了重新连接到ZooKeeper 务,客户端必须创建一个新的ZooKeeper实例。

转载请注明:全栈大数据 » 14.3.6状态

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址