一,动物园管理员——部署和使用

  

一、部署饲养员

  

1,资源规划

           服务器   bigdata121/192.168.50.121、bigdata122/192.168.50.122 bigdata123/192.168.50.123               动物园管理员版本   3.4.10         系统版本   centos7.2            

2,集群部署

  

(1)安装zk

  
 <代码> (root@bigdata121模块)# cd/opt/模块/zookeeper-3.4.10
  [root@bigdata121 zookeeper-3.4.10] # mkdir zkData
  [root@bigdata121 zookeeper-3.4.10] # mv conf/zoo_sample。cfg conf/zoo.cfg  
  

(2)修改zoo.cfg配置

  
 <代码类=" language-properties "> #每个蜱虫的的毫秒数
  tickTime=2000
  #蜱虫,最初的数量
  #可以同步阶段
  initLimit=10
  #之间可以通过蜱虫的数量
  #发送一个请求并得到确认
  syncLimit=5
  #快照存储的目录。
  #不使用/tmp为存储、/tmp这里是公正的
  #例子的缘故。
  # dataDir=/tmp/动物园管理员
  
  #指定zk存储数据的目录
  dataDir=/opt/模块/zookeeper-3.4.10/zkData
  #客户将连接的端口
  clientPort=2181
  #客户端连接的最大数量。
  #增加这个如果你需要处理更多的客户
  # maxClientCnxns=60
  #
  #一定要读的维护部分
  #管理员指南之前> & lt; dependencies>
  & lt; dependency>
  & lt; groupId> org.apache.zookeeper
  & lt; artifactId> zookeeper
  & lt; version> 3.4.10
  & lt;/dependency>
  & lt;/dependencies>  
  

2,创建zk客户端

  
 <代码类="语言java ">进口org.apache.zookeeper。*;
  进口org.apache.zookeeper.data.Stat;
  进口org.junit.Before;
  进口org.junit.Test;
  
  进口java.io.IOException;
  进口并不知道;
  
  公开课ZkTest {
  公共静态字符串connectString=" bigdata121:2181、bigdata122:2181 bigdata123:2181”;
  公共静态int sessionTimeout=2000;
  公共动物园管理员zkClient=零;
  
  @Before
  公共空间init()抛出IOException {//创建zk客户端
  zkClient=新管理员(connectString, sessionTimeout,新观察家(){//返回监听事件时的处理函数,监听事件是一次性的
  公共空间过程(WatchedEvent WatchedEvent) {
  System.out.println (watchedEvent.getState () +”、“+ watchedEvent.getType () +”、“+ watchedEvent.getPath ());
  
  尝试{
  zkClient。调用getChildren(“/?真正的);
  }捕捉(KeeperException e) {
  e.printStackTrace ();
  }捕捉(InterruptedException e) {
  e.printStackTrace ();
  }
  }
  });
  }
  } 
  

3,创建节点

  
 <代码类="语言java ">公共空创建(){//创建节点,参数为:节点名节点值权限节点类型//即/wangjin道开放权限持久化节点
  尝试{
  s=zkClient字符串。创建("/wangjin”、“道”.getBytes (), ZooDefs.Ids。OPEN_ACL_UNSAFE CreateMode.PERSISTENT);
  }捕捉(KeeperException e) {
  system . out。println(“节点存在! ! !”);
  }捕捉(InterruptedException e) {
  e.printStackTrace ();
  }
  } 
  

4,获取子节点

  
 <代码类="语言java "> zkclient.getChildren(路径,是否监听)
  返回的是子节点的列的表
  
  例子:
  公共空间getChildNode () {
  尝试{
  List孩子=zkClient。调用getChildren(“/?假);
  (字符串节点:儿童){
  System.out.println(节点);
  }
  }捕捉(KeeperException e) {
  system . out。println(“节点不存在! ! !”);
  }捕捉(InterruptedException e) {
  e.printStackTrace ();
  }
  } 
  

5,判断节点是否存在

  
 <=坝镅詊ava代码类> zkclient。存在(路径,是否监听)
  返回的是节点的状态信息,如果为null,表示节点不存在
  
  例子:
  公共空间nodeExist () {//返回的是节点的状态信息,如果为null,表示节点不存在
  尝试{
  统计统计=zkClient。存在(“/王”假);
  system . out。println(统计==零?“没有”:“有”);
  }捕捉(KeeperException e) {
  system . out。println(“节点不存在”);
  }捕捉(InterruptedException e) {
  e.printStackTrace ();
  }
  } 
  

四、使用zk做分布式锁实例

  

1, maven依赖

  
 <代码类="语言xml "> & lt; dependency>
  & lt; groupId> org.apache.curator
  & lt; artifactId> curator-framework
  & lt; version> 4.0.0
  & lt;/dependency>
  & lt; dependency>
  & lt; groupId> org.apache.curator

一,动物园管理员——部署和使用