实验环境:

  1. os-platform: windows7 x64
  2. jdk: 1.7

参考文档:

  1. http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
  2. http://zookeeper.apache.org/doc/r3.4.6/
  3. http://blog.csdn.net/rengq126/article/details/7393227

1.下载zookeeper,这里选用stable版本的3.4.6

  1. 下载地址:http://apache.fayea.com/zookeeper/zookeeper-3.4.6/

2.配置安装zookeeper

  1. 下载完成后,将zookeeper-3.4.6.tar.gz解压到指定目录(如,D:/zookeeper-3.4.6)。
  2. 重命名conf/zoo_sample.cfgzoo.cfg,其中关键配置请至少保留以下项:
  3.  
  4. tickTime=2000
  5. dataDir=D:/zookeeper-3.4.6/data
  6. clientPort=2181
  7.  
  8. 配置项分别为:
  9. 心跳频率,每2000ms发送一次心跳包
  10. 数据路径,可用于数据落地,确保zookeeper宕机后数据不丢失(一般用来保障那些永久性节点)
  11. 服务端口,即客户端的连接端口,zookeeper用来监听客户端的请求

3.启动和关闭,以及客户端的连接

  1. 启动方式:
  2.   bin/zkServer.cmd bin/zkServer.sh start
  3.  
  4. 关闭方式:
  5.   遗憾的是windows只能手动Ctrl+C关掉server,而linux则可以通过bin/zkServer.sh stop完成关闭操作
  6.  
  7. 客户端连接:
  8.   bin/zkCli.cmd 或者 bin/zkCli.cmd -server 127.0.0.1:2181

4.zookeeper api using demo(可用来了解watcher和zk的基础操作)

  1. package org.kongdl.zookeeper.demo;
  2.  
  3. import java.io.*;
  4. import org.apache.zookeeper.CreateMode;
  5. import org.apache.zookeeper.KeeperException;
  6. import org.apache.zookeeper.Watcher;
  7. import org.apache.zookeeper.ZooDefs.Ids;
  8. import org.apache.zookeeper.ZooKeeper;
  9.  
  10. public class ZookeeperDemo {
  11.  
  12. private static final int SESSION_TIMEOUT = 3000;
  13.  
  14. public static void main(String[] args) {
  15. ZookeeperDemo demo = new ZookeeperDemo();
  16. try {
  17. demo.zkOperations();
  18. } catch(Exception e) {
  19. e.printStackTrace();
  20. }
  21. }
  22.  
  23. private void zkOperations() throws IOException, InterruptedException, KeeperException{
  24. ZooKeeper zk = createZookeeperInstance();
  25.  
  26. System.out.println("\n1. 创建 ZooKeeper 节点 (znode : zoo2, "
  27. + "数据: myData2 ,"
  28. + "权限: OPEN_ACL_UNSAFE ,"
  29. + "节点类型: Persistent");
  30. zk.create("/zoo2", "mydata".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  31.  
  32. System.out.println("\n2. 查看是否创建成功: ");
  33. System.out.println(new String(zk.getData("/zoo2", true, null)));
  34.  
  35. System.out.println("\n3. 修改节点数据 ");
  36. zk.setData("/zoo2", "lichmama".getBytes(), -1);
  37.  
  38. System.out.println("\n4. 查看是否修改成功: ");
  39. System.out.println(new String(zk.getData("/zoo2", true, null)));
  40.  
  41. System.out.println("\n5. 删除节点 ");
  42. zk.delete("/zoo2", -1);
  43.  
  44. System.out.println("\n6. 查看节点是否被删除: ");
  45. System.out.println(" 节点状态: [" + zk.exists("/zoo2", true) + "]");
  46.  
  47. System.out.println("\n7. 关闭client连接");
  48. zk.close();
  49. }
  50.  
  51. private ZooKeeper createZookeeperInstance() throws IOException {
  52. return new ZooKeeper("localhost:2181", ZookeeperDemo.SESSION_TIMEOUT, new Watcher() {
  53. public void process(org.apache.zookeeper.WatchedEvent event) {
  54. System.out.println(event.toString());
  55. }
  56. });
  57. }
  58. }

zookeeper初试的更多相关文章

  1. zookeeper(2)-curator

    一.Curator介绍 zookeeper的提交人也说过,curator对于zookeeper而言就像是guava对于java差不多,更加优雅高效. 而且之前的zookeeper原生API,往往因为2 ...

  2. 多节点,多线程下发订单,使用zookeeper分布式锁机制保证订单正确接入oms系统

    假设订单下发, 采用单机每分钟从订单OrderEntry接口表中抓100单, 接入订单oms系统中. 由于双十一期间, 订单量激增, 导致订单单机每分钟100单造成, 订单积压. 所以采用多节点多线程 ...

  3. Zookeeper客户端Curator---Getting Started

    先说个小插曲,前几天有个网站转载我的文章没有署名作者,我有点不开心就给他们留言了,然后今天一看他们把文章删了.其实我的意思并不是你允许转载,我想表达的是我的付出需要被尊重.也不知道是谁的错~ ==== ...

  4. Zookeeper 系列(五)Curator API

    Zookeeper 系列(五)Curator API 一.Curator 使用 Curator 框架中使用链式编程风格,易读性更强,使用工程方法创建连接对象使用. (1) CuratorFramewo ...

  5. curator框架的使用以及实现分布式锁等应用与zkclient操作zookeeper,简化复杂原生API

    打开zookeeper集群 先体会一下原生API有多麻烦(可略过): //地址 static final String ADDR = "192.168.171.128:2181,192.16 ...

  6. 基于Apache Curator框架的ZooKeeper使用详解

    一 简介 Apache Curator是一个比较完善的ZooKeeper客户端框架,通过封装的一套高级API 简化了ZooKeeper的操作.通过查看官方文档,可以发现Curator主要解决了三类问题 ...

  7. zookeeper安装步骤

    zookeeper安装步骤 百度搜索:zookeeper 进入后点击下载: 进入到下载的页面 英文: 中文: 进入版本列表: 进入后复制该链接, 在linux执行wget下载: wget https: ...

  8. 初试kafka消息队列中间件一 (只适合初学者哈)

    初试kafka消息队列中间件一 今天闲来有点无聊,然后就看了一下关于消息中间件的资料, 简单一点的理解哈,网上都说的太高大上档次了,字面意思都想半天: 也就是用作消息通知,比如你想告诉某某你喜欢他,或 ...

  9. 初试kafka消息队列中间件二(采用java代码收发消息)

    初试kafka消息队列中间件二(采用java代码收发消息) 上一篇 初试kafka消息队列中间件一 今天的案例主要是将采用命令行收发信息改成使用java代码实现,根据上一篇的接着写: 先启动Zooke ...

随机推荐

  1. Ajax02 json

    1 什么是json JavaScript Object Notation(JavaScript 对象表示法) 是一种轻量级的数据交换格式. 注: 数据交换:将数据先转换成一种与平台无关的数据 格式(比 ...

  2. JavaScript中的该如何[更好的]做动效

    在用js写动画的时候,无非使用 setTimeout/setInterval 或者 requestAnimationFrame 来处理动画(在jquery的代码里也是这么干的),本文主要为了记录下两者 ...

  3. 以太坊的crypto模块--以太坊源码学习

    以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp2 ...

  4. 关于ASP.NET WebForm与ASP.NET MVC的比较

      WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.Java ...

  5. Java经典编程题50道之五十

    有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud"中. public ...

  6. .Net开发的两个小技巧

    一.@符号的妙用 1.可以作为保留关键字的标识符 C#规范当中,不允许使用保留关键字(class.bool等)当作普通的标识符来命名,这时候@符号作用就体现 出来了,可以通过@符号前缀把这些保留关键字 ...

  7. canvas 画钟表

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  8. [BZOJ4518]征途

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MB Description Pine开始了从S地到T地的征途. 从S地到T地的路可以 ...

  9. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  10. ui-router 父子state共享数据

    如果ui-view是嵌套的,那么在子view中,可以直接引用 $scope.$parent 即可.