设为首页 收藏本站
查看: 916|回复: 0

[经验分享] ZooKeeper系列4:ZooKeeper API简介及编程

[复制链接]

尚未签到

发表于 2015-9-6 08:20:05 | 显示全部楼层 |阅读模式
问题导读:
1.ZooKeeper API 共包含几个包?
2.如何使用ZooKeeper API 创建zookeeper应用程序?  

DSC0000.gif


1)ZooKeeper API 简介

ZooKeeper API 共包含 5 个包,分别为: org.apache.zookeeper , org.apache.zookeeper.data ,org.apache.zookeeper.server , org.apache.zookeeper.server.quorum 和org.apache.zookeeper.server.upgrade 。其中 org.apache.zookeeper 包含 ZooKeeper 类,它我们编程时最常用的类文件。  

这个类是 ZooKeeper 客户端库的主要类文件。如果要使用 ZooKeeper 服务,应用程序首先必须创建一个Zookeeper 实例,这时就需要使用此类。一旦客户端和 ZooKeeper 服务建立起连接, ZooKeeper 系统将会分配给此连接回话一个 ID 值,并且客户端将会周期地向服务器发送心跳来维持会话的连接。只要连接有效,客户端就可以调用 ZooKeeper API 来做相应的处理。
它提供了表 1 所示几类主要方法 , :
  表 1 : ZooKeeper API 描述

功能

描述

create

在本地目录树中创建一个节点

delete

删除一个节点

exists

测试本地是否存在目标节点

get/set data

从目标节点上读取 / 写数据

get/set ACL

获取 / 设置目标节点访问控制列表信息

get children

检索一个子节点上的列表

sync

等待要被传送的数据
  



2)ZooKeeper API 的使用

这里,笔者通过一个例子来简单介绍,如何使用 ZooKeeper API 编写自己的应用程序,见代码清单 1 :
代码清单 1 : ZooKeeper API 的使用  




  • import java.io.IOException;

  • import org.apache.zookeeper.CreateMode;
  • import org.apache.zookeeper.KeeperException;
  • import org.apache.zookeeper.Watcher;
  • import org.apache.zookeeper.ZooDefs.Ids;
  • import org.apache.zookeeper.ZooKeeper;

  • public class demo {
  •      // 会话超时时间,设置为与系统默认时间一致
  •      private static final int SESSION_TIMEOUT=30000;

  •      // 创建 ZooKeeper 实例
  •      ZooKeeper zk;

  •      // 创建 Watcher 实例
  •      Watcher wh=new Watcher(){
  •             public void process(org.apache.zookeeper.WatchedEvent event)
  •             {
  •                     System.out.println(event.toString());
  •             }
  •      };

  •      // 初始化 ZooKeeper 实例
  •      private void createZKInstance() throws IOException
  •      {
  •             zk=new ZooKeeper("localhost:2181",demo.SESSION_TIMEOUT,this.wh);

  •      }

  •      private void ZKOperations() throws IOException,InterruptedException,KeeperException
  •      {
  •             System.out.println("/n1. 创建 ZooKeeper 节点 (znode : zoo2, 数据: myData2 ,权限:OPEN_ACL_UNSAFE ,节点类型: Persistent");
  •             zk.create("/zoo2","myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

  •             System.out.println("/n2. 查看是否创建成功: ");
  •             System.out.println(new String(zk.getData("/zoo2",false,null)));

  •             System.out.println("/n3. 修改节点数据 ");
  •             zk.setData("/zoo2", "shenlan211314".getBytes(), -1);

  •             System.out.println("/n4. 查看是否修改成功: ");
  •             System.out.println(new String(zk.getData("/zoo2", false, null)));

  •             System.out.println("/n5. 删除节点 ");
  •            zk.delete("/zoo2", -1);

  •             System.out.println("/n6. 查看节点是否被删除: ");
  •             System.out.println(" 节点状态: ["+zk.exists("/zoo2", false)+"]");
  •      }

  •      private void ZKClose() throws  InterruptedException
  •      {
  •             zk.close();
  •      }

  •      public static void main(String[] args) throws IOException,InterruptedException,KeeperException {
  •             demo dm=new demo();
  •            dm.createZKInstance( );
  •            dm.ZKOperations();
  •             dm.ZKClose();
  •     }
  • }
复制代码
  

此类包含两个主要的 ZooKeeper 函数,分别为 createZKInstance ()和 ZKOperations ()。其中createZKInstance ()函数负责对 ZooKeeper 实例 zk 进行初始化。 ZooKeeper 类有两个构造函数,我们这里使用“ ZooKeeper ( String connectString, , int sessionTimeout, , Watcher watcher )”对其进行初始化。因此,我们需要提供初始化所需的,连接字符串信息,会话超时时间,以及一个 watcher 实例。 17 行到 23 行代码,是程序所构造的一个 watcher 实例,它能够输出所发生的事件。  

ZKOperations ()函数是我们所定义的对节点的一系列操作。它包括:创建 ZooKeeper 节点( 33 行到 34 行代码)、查看节点( 36 行到 37 行代码)、修改节点数据( 39 行到 40 行代码)、查看修改后节点数据( 42 行到43 行代码)、删除节点( 45 行到 46 行代码)、查看节点是否存在( 48 行到 49 行代码)。另外,需要注意的是:在创建节点的时候,需要提供节点的名称、数据、权限以及节点类型。此外,使用 exists 函数时,如果节点不存在将返回一个 null 值。关于 ZooKeeper API 的更多详细信息,读者可以查看 ZooKeeper 的 API 文档,如下所示:  



  • http://hadoop.apache.org/zookeeper/docs/r3.3.1/api/index.html

文章转自:http://www.aboutyun.com/thread-9311-1-1.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109872-1-1.html 上篇帖子: zookeeper kazoo Basic Usage 下篇帖子: zookeeper ACL使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表