zoukankan      html  css  js  c++  java
  • zookeeper[3] zookeeper API开发注意事项总结

        如下是根据官方接口文档(http://zookeeper.apache.org/doc/r3.4.1/api/org/apache/zookeeper/ZooKeeper.html#register(org.apache.zookeeper.Watcher)及源码注释进行提炼,以指导对zookeeper的开发。

    1、创建zookeeper节点:create(String path, byte[] data, List<ACL> acl, CreateMode createMode)

        1)若已创建的节点已经存在,则会抛出异常:KeeperException.NodeExists,创建操作之前需要判断节点是否已经存在;

        2)若父节点不存在,则抛出异常:KeeperException.NoNode,因此,当节点路径是多层,需要逐层创建节点;

        3)若创建路径的父节点为临时节点,则抛出异常:KeeperException.NoChildrenForEphemerals,记孩子节点不能有子节点;

        4)若数据大小超出1M,则抛出异常:KeeperExecption。

    2、关闭连接:public void close()

        一旦客户端被关闭,对用的回话将会失效。同时,在zookeeper服务器上和该回话相关的临时节点都将被删除。

    3、删除给定路径节点:delete(String path, int version)

        1)如果version为-1,则匹配节点的任何版本;

        2)如果节点不存在,则抛出异常:KeeperException.NoNode,则删除操作前需要西安判断路径对应节点是否存在;

        3)如果version的值和节点版本号不匹配,则抛出异常:KeeperException.BadVersion;

        4)如果节点还有孩子节点,则抛出异常:KeeperException.NotEmpty。

    4、设置给点节点的数据:setData(String path, byte[] data, int version)

        1)如果version为-1,则匹配节点的任何版本;

        2)如果给定路径节点不存在,则抛出异常:KeeperException.NoNode,因此执行设置操作之前,需要先判断节点是否存在;

        3)如果给定版本和节点版本不匹配,则抛出异常:KeeperException.BadVersion;

        4)若数据大小超出1M,则抛出异常:KeeperExecption。

    5、判断指定路径节点是否存在,exists(String path, Watcher watcher)

        1)如果节点不存在,则返回null;

        2)如果watcher非null,且操作执行成功时,将观察给定路径的节点;

        3)对给定路径节点的增加/删除成功操作,以及对该节点数据的成功设置,都将触发该观察。

    6、获取给定路径节点的数据:byte[] getData(String path, Watcher watcher, Stat stat)

        1)如果watcher非null,且操作执行成功时,将观察给定路径的节点;

        2)对给定路径节点的删除成功操作,以及对该节点数据的成功设置,都将触发该观察。

        3)若给定路径节点不存在,则抛出异常:KeeperException.NoNode;

    7、获取给定路径节点的孩子列表:List<String> getChildren(final String path, Watcher watcher)

        1)如果watcher非null,且操作执行成功时,将观察给定路径的节点;

        2)对该路径节点的成功删除操作,以及成功创建或删除该节点的孩子节点,都会出发该观察;

        3)返回的孩子节点将不被排序,既不保证是字典或自然序。

    8、获取给定路径节点的孩子列表及状态结构:List<String> getChildren(String path, boolean watch, Stat stat)

    9、注册默认观察:void register(Watcher watcher)

    10、sync()方法的使用:

        如果客户端A将一个节点/a的值从0修改为1,然后通知客户端B读取/a,客户端B读取到的值可能还是0,这取决于它连接到了哪个服务器。如果客户端A和B读取到相同的值很重要,那么客户端B应该在执行读取之前调用sync()方法

     11、构造函数,创建zookeeper客户端对象:ZooKeeper(String connectString, int sessionTimeout, Watcher watcher)

        1)回话的创建是异步的,既回话可能在该函数返回之后才能创建完成;

        2)状态的任何变化,都将被通知给watcher,但是,在构造器返回前后都有可能接到通知;

        3)客户端在和server建立连接时,将从字符串connectString中随机选择一个IP进行连接。

        

  • 相关阅读:
    python_接口基础知识
    python_基础总结
    python_配置文件_yaml
    python_loggin日志处理
    python_数据驱动_ddt
    python_unittest_单元测试_openpyxl
    python_类与对象总结_继承
    python_路径操作及类和对象
    python_导包
    Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math
  • 原文地址:https://www.cnblogs.com/lee-mj/p/5073433.html
Copyright © 2011-2022 走看看