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失效时能够自动重新订阅这些事件,而不需要开发者重新订阅。

  • 相关阅读:
    《精通.NET互操作1.2》C# PInvoke使用c++dll
    WPF的dataGrid基本用法
    C#中$的用法
    ASP.NET WebApi 实现Token验证
    Ajax请求WebAPI传递多参数的方法
    ajax调用ASP.NET MVC控制器传递参数
    js子窗口调用父窗口函数并传递对象给父窗口的方法
    H5本地存储和本地数据库
    非对称加密RSA的C#实现
    在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)
  • 原文地址:https://www.cnblogs.com/rilley/p/5451052.html
Copyright © 2011-2022 走看看