Skip to content

Latest commit

 

History

History
58 lines (48 loc) · 1.85 KB

概念说明.md

File metadata and controls

58 lines (48 loc) · 1.85 KB

Leader

领导者,集群中只有一个。负责发起投票和决议,更新系统状态。 为客户端提供读写服务。

Follower

跟随者,集群中可有多个。接受客户端请求并响应(写请求转发到Leader),参与选主投票。 为客户端提供读服务。

Observer

观察者。接受客户端连接,转发请求。不参与投票。


Znode

节点,以树形结构表示,类似文件目录。 各节点可存储数据,配置监视器。 每个节点存储数据最大为1MB。

Main.java

属性

zooKeeper.exists(path, false) stat /

  • czxid: 事务id
  • mzxid/mZxid: 最后更新事务id
  • ctime: 创建时间(ms)
  • mtime: 最后更新时间(ms)
  • version/dataVersion: 数据变化号
  • aversion/aclVersion: 访问控制版本号
  • ephemeralOwner: 临时节点客户端的sessionId。持久节点为0
  • dataLength: 数据长度
  • numChildren: 子节点数量
  • cversion: 子节点变化号,子节点修改次数
  • pzxid/pZxid: 最后更新的子节点zxid

类型

  • 持久/临时:
    • 持久: 创建后会一直存在,直到执行删除操作。
    • 临时: 生命周期与客户端会话绑定,当客户端断开连接,则该节点自动删除。
  • 非连续/连续:
    • 非连续: 正常节点。
    • 连续: 在创建时会自动为节点加上递增的数字后缀。该数字由父节点维护,同目录下子节点共享。

上述两两组合,共有下列类型:

  • 持久节点。若节点已存在,会抛出异常。
  • 持久的连续节点。
  • 临时节点。该类型节点不能有子节点
  • 临时的连续节点。

watcher

监视器/观察者。负责监控节点变化,通知客户端。 每次注册只监听一次,之后变化则需重新注册watcher 可监视的命令:

  • create
  • delete
  • setData

Main.java