Zookeeper-------原生API 操作

Zookeeper原生API 操作

目录

Zookeeper原生API 操作

1、操作前的准备工作

2、Zookeeper API详解

2.1 构造器摘要

2.2 创建节点

2.3 删除结点

2.4 修改结点的值

2.5 获取结点的值,和设置watch事件

2.6 获取子节点信息,和设置watch事件

2.7 是否存在结点,和设置watch事件

2.8 获取节点权限和设置节点权限


1、操作前的准备工作

 在idea下创建一个maven项目,然后引入以下依赖,并使用centos启动zookeeper服务。

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.8</version>
        </dependency>

2、Zookeeper API详解

2.1构造器摘要

ZooKeeper(String host, int sessionTimeout, Watcher watcher)

    host:服务器ip和端口号; sessionTimeout超时时间,心跳收不到了,那就超时; watcher:监听事件
          作用:要创建一个client(ZooKeeper)对象,应用程序需要传递一个字符串,其中包含一个逗号分隔的host:port对列表,每个对与ZooKeeper服务器相对应。

ZooKeeper(String host, int sessionTimeout, Watcher watcher, long sessionId, byte[] sessionPasswd)

    sessionId:会话的id;  sessionPasswd:会话密码 当会话丢失后,可以依据 sessionId 和 sessionPasswd 重新获取会话
          要创建一个client(ZooKeeper)对象,应用程序需要传递一个字符串,其中包含一个逗号分隔的host:port对列表,每个对与ZooKeeper服务器相对应

2.2 创建节点

String

create(String path, byte[] data, List<ACL> acl, CreateMode createMode)

          path:创建结点的路径   data:结点的值 ; acl:结点的权限列表;createMode:结点的类型


          作用:创建具有给定路径的节点。

 void

create(String path, byte[] data, List<ACL> acl, CreateMode createMode, AsyncCallback.StringCallback cb, Object ctx)
          cb :回调函数,实现了StringCallback接口    ;   ctx:传入的参数

 

          作用:创建的异步版本。

注意:

createMode:节点类型, 是一个枚举
*    PERSISTENT:持久节点
*    PERSISTENT_SEQUENTIAL:持久顺序节点
*    EPHEMERAL:临时节点
*    EPHEMERAL_SEQUENTIAL:临时顺序节点
控制权限策略
*    Ids.OPEN_ACL_UNSAFE --> world:anyone:cdrwa
*    CREATOR_ALL_ACL --> auth:user:password:cdrwa

2.3 删除结点

 void

delete(String path, int version)

   path:删除结点路径; version:删除结点的版本号


        作用: 删除具有给定路径的节点。

 void

delete(String path, int version, AsyncCallback.VoidCallback cb, Object ctx)

   cb:回调函数,实现了VoidCallback接口;  ctx:传入的参数   


        作用:删除的异步版本。

2.4 修改结点的值

Stat

(结点状态值)

setData(String path, byte[] data, int version)

          path:修改结点路径; data:修改后的新值;version:版本号
          作用:如果存在这样的节点并且给定版本与该节点的版本匹配(如果给定版本为-1,则它与任何节点的版本都匹配),请为给定路径的节点设置数据。

  void

setData(String path, byte[] data, int version, AsyncCallback.StatCallback cb, Object ctx)

          cb:回调函数,实现了StatCallback接口; ctx:传入的参数
          作用:setData的异步版本。

2.5 获取结点的值,和设置watch事件

 void getData(String path, boolean watch, AsyncCallback.DataCallback cb, Object ctx)
          getData的异步版本。
 byte[] getData(String path, boolean watch, Stat stat)
          返回给定路径的节点的数据和状态。
 void getData(String path, Watcher watcher, AsyncCallback.DataCallback cb, Object ctx)
          getData的异步版本。
 byte[] getData(String path, Watcher watcher, Stat stat)
          返回给定路径的节点的数据和状态。

2.6 获取子节点信息,和设置watch事件

 List<String> getChildren(String path, boolean watch)
          返回给定路径的节点的子级列表。
 void getChildren(String path, boolean watch, AsyncCallback.ChildrenCallback cb, Object ctx)
          getChildren的异步版本。
 List<String> getChildren(String path, Watcher watcher)
          返回给定路径的节点的子级列表。
 void getChildren(String path, Watcher watcher, AsyncCallback.ChildrenCallback cb, Object ctx)
          getChildren的异步版本。

2.7 是否存在结点,和设置watch事件

 Stat exists(String path, boolean watch)
          返回给定路径的节点的统计信息。
 void exists(String path, boolean watch, AsyncCallback.StatCallback cb, Object ctx)
          存在异步版本。
 Stat exists(String path, Watcher watcher)
          返回给定路径的节点的统计信息。
 void exists(String path, Watcher watcher, AsyncCallback.StatCallback cb, Object ctx)
          存在异步版本。

2.8 获取节点权限和设置节点权限

List<ACL> getACL(String path, Stat stat)
          返回给定路径的节点的ACL和状态。
 void getACL(String path, Stat stat, AsyncCallback.ACLCallback cb, Object ctx)
          getACL的异步版本。
 Stat setACL(String path, List<ACL> acl, int version)
          如果存在这样的节点并且给定版本与该节点的版本匹配,请为该路径的节点设置ACL。
 void setACL(String path, List<ACL> acl, int version, AsyncCallback.StatCallback cb, Object ctx)
          setACL的异步版本。

2.9 其他方法

void addAuthInfo(String scheme, byte[] auth)
           
 void

close()
          关闭此客户端对象。

long getSessionId()
          该ZooKeeper客户端实例的会话ID。
 byte[] getSessionPasswd()
          该ZooKeeper客户端实例的会话密码。
 ZooKeeper.States getState()
           
 void register(Watcher watcher)
 void sync(String path, AsyncCallback.VoidCallback cb, Object ctx)
          异步同步。
static void validatePath(String path)
          验证提供的znode路径字符串

最后,具体代码示例可以参考:

https://blog.51cto.com/zero01/2108333

https://blog.51cto.com/zero01/2108483

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章