Zookeeper 介绍-01

1.介绍

Zookeeper 介绍-01_第1张图片

2 安装

zookeeper 必须使用jdk1.8及以上版本.

2.1 下载zookeeper安装包

下载地址:http://zookeeper.apache.org
Zookeeper 介绍-01_第2张图片

2.2 修改配置文件

  1. 将zookeeper解压复制到指定路径,不能有中文盘符:
  2. 在zookeeper根目录下新建 data和log两个文件夹;
    Zookeeper 介绍-01_第3张图片
  3. 修改配置文件

Zookeeper 介绍-01_第4张图片

  1. 打开zoo.cfg文件,配置数据和日志的存储路径
    Zookeeper 介绍-01_第5张图片
  2. 启动zookeeper服务和客户端
    Zookeeper 介绍-01_第6张图片
  3. 连接zookeeper服务器成功;
    Zookeeper 介绍-01_第7张图片

2.3 常用命令

1. ls命令查看节点

在这里插入图片描述

1. 创建节点 create

创建不带序号的节点在这里插入图片描述
创建带序号的节点, 单引号中是节点的内容
Zookeeper 介绍-01_第8张图片
创建临时节点, 客户端关闭15秒后 , 节点消失, 关闭服务也可以使临时节点消失;
Zookeeper 介绍-01_第9张图片
2. 查看节点
查看节点内容get在这里插入图片描述
查看节点的状态stat
Zookeeper 介绍-01_第10张图片

修改节点数据set
set
删除节点 delete
在这里插入图片描述
deleteall /hello, 删除hello节点和其子节点

日志可视化:
在zookeeper的log文件夹下, 拷贝两个jar包, 后面可以通过java去看日志了;
Zookeeper 介绍-01_第11张图片
打开一个cmd窗口,将目录指定到日志目录, 然后输入命令
java -classpath “.;*” org.apache.zookeeper.server.LogFormatter 日志文件名
Zookeeper 介绍-01_第12张图片

3. zookeeper的java API

3.1 创建SE工程,导入jar包依赖

Apache Curator: 是Apache ZooKeeper的java客户端库;

导入jar包依赖

    <dependencies>
    
    <dependency>
         <groupId>org.apache.zookeepergroupId>
         <artifactId>zookeeperartifactId>
         <version>3.4.7version>
    dependency>

    
    <dependency>
        <groupId>org.apache.curatorgroupId>
        <artifactId>curator-frameworkartifactId>
        <version>4.0.1version>
    dependency>
    <dependency>
        <groupId>org.apache.curatorgroupId>
        <artifactId>curator-recipesartifactId>
        <version>4.0.1version>
    dependency>
    dependencies>

3.2 zookeeper在java下实现增删改查

java作为zookeeper的客户端实现zookeeper客户端的增删改查功能,
在IDEA下创建一个测试类,增删改查代码如下:
前提: zookeeper服务器需要提前开启


public class ZooKeeperTest {
     


    private CuratorFramework client=null;

    @Before
    public void before(){
     

        //创建连接失败重试策略对象
        RetryPolicy retryPolicy  = new ExponentialBackoffRetry(3000, 3);

        //创建客户端对象
        client = CuratorFrameworkFactory.newClient
                ("127.0.0.1:2181", 1000, 1000, retryPolicy);

    }

    //创建节点
    @Test
    public void createNode() throws Exception {
     

        //开启客户端
        client.start();

        //创建节点
        //client.create().forPath("/app01");

        //client.create().forPath("/app02","app2_node".getBytes());

        //client.create().creatingParentsIfNeeded().forPath("/app03/a","a_node".getBytes());

        //创建带序号的临时节点
        client.create().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath("/app04","app04".getBytes());
        //5秒后释放临时节点
        Thread.sleep(5000);
        //关闭客户端
        client.close();
    }
    
    @Test
    public void update() throws Exception {
     
        client.start();
        //修改节点内容
        client.setData().forPath("/app02","app02gengxin".getBytes());
        client.close();
    }
    @Test
    public void delet() throws Exception {
     

        client.start();

        //删除单个节点
        client.delete().forPath("/app01");
        //删除app03和其子节点
        client.delete().deletingChildrenIfNeeded().forPath("/app03");
        //只要客户端未关闭,就会一直去找服务器去删除app02节点
        client.delete().guaranteed().forPath("/app02");

        client.close();
    }

    @Test
    public void findNode() throws Exception {
     
        client.start();

        byte[] bytes = client.getData().forPath("/app02");
        System.out.println("app02节点的节点数据是:==="+new String(bytes));
        client.close();
    }
}

你可能感兴趣的:(Java入门)