美文网首页
Zookeeper 编程

Zookeeper 编程

作者: 币来币往 | 来源:发表于2019-05-13 20:15 被阅读0次

    zookeeper提供了两种语言的api,一种是java的一种是c的,这里我们学习java api, c语言的api接口和java的结构是一样的。
    在使用之前首先我们需要将用到的jar包放到classpath以方便编程。
    这里通过运行bin/zkEnv.sh 即可将所有jar全部加入到CLASSPATH里面

    . $PATH_TO_ZK/bin/zkEnv.sh
    vagrant@vagrant-ubuntu-trusty-64:~$ echo $CLASSPATH
    /usr/bin/../zookeeper-server/target/classes:/usr/bin/../build/classes:/usr/bin/../zookeeper-server/target/lib/*.jar:/usr/bin/../build/lib/*.jar:/usr/bin/../lib/*.jar:/usr/bin/../zookeeper-*.jar:/usr/bin/../zookeeper-server/src/main/resources/lib/*.jar:/usr/bin/../etc/zookeeper:.:/usr/lib/jvm/java-11-oracle/lib:/usr/lib/jvm/java-11-oracle/lib/tools.jar
    

    zookeeper客户端和服务器通过建立连接,创建sesssion来交互

    Zookeeper zk = new ZooKeeper(hostPort, 15000, log::info);
    

    其中第一个参数为server的ip和端口号,如127.0.0.1:2181
    第二个参数为session失效时间,单位为ms, 当ZooKeeper在指定的时间(15s)无法和client连接是,就会认为连接失效。
    第三个参数是一个Watcher,用来获取并处理session相关的event。接口如下,只有一个方法,所以这里我们直接用了一个lambda表达式来表示它。

    public interface Watcher {
        void process(WatchedEvent event);
    }
    

    我们再ZooKeeper basic里面介绍的那些客户端命令,都有对应的API实现版本,同步版和异步版,都有。
    我们写代码的时候通常是使用异步版,因为它更好效,也不要我们来处理很多异常,代码也更简洁。所以这里我们只介绍异步版实现。

    • 创建节点
    void create(String path,    byte[] data,    List<ACL> acl,   
     CreateMode createMode,    AsyncCallback.StringCallback cb,     Object ctx)
    
    zk.create("/master", serverId.getBytes(), OPEN_ACL_UNSAFE,
                    CreateMode.EPHEMERAL, this::masterCreateCallback, null);
    

    第一个参数为要创建znode的路径,znode的数据, 第三个参数为认证方式, 第四个参数是创建模式, 第五个参数是回调函数,第六个参数是回调函数的参数。
    我这里提供了一个demo程序大家可以参考,来学习这些api的使用,看代码更容易理解 git地址如下,
    大家可以git clone https://github.com/Jaler-Wang/ZooKeeperDemo.git
    获取。

    相关文章

      网友评论

          本文标题:Zookeeper 编程

          本文链接:https://www.haomeiwen.com/subject/bgnxaqtx.html