zoukankan      html  css  js  c++  java
  • ZkClient

     

    ZkClient


    创建一个ZkClient实例

    ZkClient zkClient = new ZkClient("127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002");


    读取数据

    byte[] readData(String path);
    byte[] readData(String path, boolean returnNullIfPathNotExists);
    byte[] readData(String path, Stat stat);

    写入数据

    Stat writeData(String path, byte[] data);
    Stat writeData(String path, byte[] data, int expectedVersion);


    创建节点

    void createPersistent(String path);
    void createPersistent(String path, boolean createParents);
    void createPersistent(String path, byte[] data);
    String createPersistentSequential(String path, byte[] data);
    void createEphemeral(final String path);
    void createEphemeral(final String path, final byte[] data);
    String createEphemeralSequential(final String path, final byte[] data);
    String create(final String path, byte[] data, final CreateMode mode);


    删除节点

    boolean delete(final String path);
    boolean deleteRecursive(String path);


    查询节点

    boolean exists(final String path);
    List<String> getChildren(String path);
    long getCreationTime(String path);
    int countChildren(String path);


    订阅事件

    zkclient的强大之处不在于基本zookeeper api操作,而在于事件监听机制,也就是zookeeper的watches。

    Zookeeper的watcher在使用上存在一次性、session过期等难点,因此zkclient对这些问题进行了封装和屏蔽。 zkclient一共定义了三种事件:

    org.I0Itec.zkclient..IZkStateListener

    public void handleStateChanged(KeeperState state) throws Exception;
    public void handleNewSession() throws Exception;

    org.I0Itec.zkclient.IZkDataListener

    public void handleDataChange(String dataPath, byte[] data) throws Exception;
    public void handleDataDeleted(String dataPath) throws Exception;

    org.I0Itec.zkclient.IZkChildListener

    public void handleChildChange(String parentPath, List currentChildren) throws Exception;
    • IZkStateListener 定义了两种事件,一种是连接状态的改变,例如由未连接改变成连接上,连接上改为过期等;另一种创建一个新的session(连接), 通常是由于session失效然后新的session被建立时触发。一般此时需要开发者重新创建临时节点(Ephemeral Nodes)。
    • IZkDataListener 也定义了两种事件,一种是节点数据的变化,另一种是节点被删除。
    • IZkChildListener 定义了一种事件,描述子节点变化了,这时候获取到的是新的子节点列表。如果此节点被删除,那么子节点列表是null(非空列表)。

    IZkClient能够非常方便的订阅这三种事件:

    void subscribeStateChanges(IZkStateListener listener);
    void subscribeDataChanges(String path, IZkDataListener listener);
    List subscribeChildChanges(String path, IZkChildListener listener);

    而zkclient最强大之处在于,当发送session失效时能够自动重新订阅这些事件,而不需要开发者重新订阅。

  • 相关阅读:
    【反射】Java反射机制
    Composer教程之常用命令
    Composer教程之基础用法
    Composer教程之初识Composer
    Composer 的结构详解
    现代 PHP 新特性系列(七) —— 内置的 HTTP 服务器
    现代 PHP 新特性系列(一) —— 命名空间
    现代 PHP 新特性系列(二) —— 善用接口
    现代 PHP 新特性系列(三) —— Trait 概览
    现代 PHP 新特性系列(四) —— 生成器的创建和使用
  • 原文地址:https://www.cnblogs.com/rilley/p/5451052.html
Copyright © 2011-2022 走看看