Zookeeper入门-Java版本HelloWorld例子

来源:互联网 发布:python中的sleep 编辑:程序博客网 时间:2024/05/16 12:53

上一篇介绍了,Zookeeper的基本概念,怎么启动,怎么解决可能遇到的几个问题。
本篇,根据网上代码,整理了一个例子,Zookeeper的HelloWorld。


下面这个代码,还是比较简单的,核心类就是org.apache.zookeeper.ZooKeeper。


我比较喜欢这种"框架",把最核心的服务,就用少数的几个类或者接口,供开发者使用。
开发者,不用知道那么多代码和细节。
这也提示我们,写代码的时候,把对外服务和对内实现,分开,设计好。


[java] view plain copy
  1. package cn.fansunion.zookeeper;  
  2. import org.apache.zookeeper.CreateMode;  
  3. import org.apache.zookeeper.ZooDefs.Ids;  
  4. import org.apache.zookeeper.ZooKeeper;  
  5.    
  6. public class ZooKeeperTest {  
  7.    
  8.     private static final int TIME_OUT = 3000;  
  9.     private static final String HOST = "localhost:2181";  
  10.     public static void main(String[] args) throws Exception{  
  11.   
  12.   
  13.         ZooKeeper zookeeper = new ZooKeeper(HOST, TIME_OUT, );  
  14.         System.out.println("=========创建节点===========");  
  15.         if(zookeeper.exists("/test"false) == )  
  16.         {  
  17.             zookeeper.create("/test""znode1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);  
  18.         }  
  19.         System.out.println("=============查看节点是否安装成功===============");  
  20.         System.out.println(new String(zookeeper.getData("/test"false)));  
  21.           
  22.         System.out.println("=========修改节点的数据==========");  
  23.         String data = "zNode2";  
  24.         zookeeper.setData("/test", data.getBytes(), -1);  
  25.           
  26.         System.out.println("========查看修改的节点是否成功=========");  
  27.         System.out.println(new String(zookeeper.getData("/test"false)));  
  28.           
  29.         System.out.println("=======删除节点==========");  
  30.         zookeeper.delete("/test", -1);  
  31.           
  32.         System.out.println("==========查看节点是否被删除============");  
  33.         System.out.println("节点状态:" + zookeeper.exists("/test"false));  
  34.           
  35.         zookeeper.close();  
  36.     }   
  37. }  




运行结果
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
=========创建节点===========
=============查看节点是否安装成功===============
znode1
=========修改节点的数据==========
========查看修改的节点是否成功=========
zNode2
=======删除节点==========
==========查看节点是否被删除============
节点状态:null


以上代码,看不懂,根本没有关系。
懂了概念,知道了大致的API用法,后面就是深入学习。
Zookeeper怎么设计,API怎么用,怎么实现“分布式锁”。
有了良好的开端,上了道,就一步步提高了。


上次买了本Zookeeper的书,专门讲解Zookeeper的,还没来得及看。
最近看Android书籍,研究和运行代码。看Object-c和iOS,再写代码,太忙了。
Zookeeper的进一步深入学习,可能要再过一段时间了。




Maven配置
pom.xml
[html] view plain copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>cn.fansunion</groupId>  
  5.     <artifactId>ZookeeperDemo</artifactId>  
  6.     <version>0.0.1-SNAPSHOT</version>  
  7.     <build>  
  8.         <sourceDirectory>src</sourceDirectory>  
  9.         <plugins>  
  10.             <plugin>  
  11.                 <artifactId>maven-compiler-plugin</artifactId>  
  12.                 <version>3.1</version>  
  13.                 <configuration>  
  14.                     <source />  
  15.                     <target />  
  16.                 </configuration>  
  17.             </plugin>  
  18.         </plugins>  
  19.     </build>  
  20.     <dependencies>  
  21.         <dependency>  
  22.             <groupId>org.apache.zookeeper</groupId>  
  23.             <artifactId>zookeeper</artifactId>  
  24.             <version>3.4.6</version>  
  25.         </dependency>  
  26.         <dependency>  
  27.             <groupId>org.slf4j</groupId>  
  28.             <artifactId>slf4j-log4j12</artifactId>  
  29.             <version>1.7.5</version>  
  30.         </dependency>  
  31.         <dependency>  
  32.             <groupId>log4j</groupId>  
  33.             <artifactId>log4j</artifactId>  
  34.             <version>1.2.17</version>  
  35.         </dependency>  
  36.     </dependencies>  
  37. </project>  

原创粉丝点击