Zookeeper基本操作,安装,客户端,java代码内容发布,消息订阅

网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容
如果右边没有就找找左边
Zookeeper
  1. 分布式管理软件,常用它作为注册中心(依赖zookeeper的发布/订阅功能)、配置文件中心、分布式锁配置、集群管理等。
  2. zookeeper一共就有两个版本。主要使用的是java语言编写

一、安装下载运行Zookeeper

学习Zookeeper之前,需要你拥有一个Linux虚拟机,或Linux云服务器,并安装java的JDK环境

https://blog.csdn.net/grd_java/article/details/115693312

  1. 上面这篇博客从无到有,搭建了大数据的开发环境,你只需要参考这篇文章里面的安装虚拟机,安装系统,安装JDK,远程工具的使用即可,无需克隆虚拟机,也无需搭建集群
下载Zookeeper并将其传输到虚拟机解压
  1. 百度Zookeeper官网,进入后点击下载
    在这里插入图片描述
    在这里插入图片描述
  2. 选择版本下载
    在这里插入图片描述
    在这里插入图片描述
  3. 将其传输到虚拟机安装
    在这里插入图片描述
    在这里插入图片描述
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /opt/module/
创建数据目录(Zookeeper硬性要求,需要有这样一个目录)
  1. 进入我们刚解压后的zookeeper文件夹
    在这里插入图片描述
修改zookeeper配置文件
  1. 我们需要名为zoo.cfg的配置文件,但是zookeeper提供的是名字为zoo_sample.cfg的,所以我们需要复制一份改名
    在这里插入图片描述
cp zoo_sample.cfg zoo.cfg
  1. 修改配置文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
启动zookeeper
  1. 进入bin目录
    在这里插入图片描述
  2. 运行
    在这里插入图片描述
./zkServer.sh start
  1. 查看运行状态
    在这里插入图片描述
./zkServer.sh status

二、Zookeeper客户端操作命令

  1. 运行命令,进入客户端模式
    在这里插入图片描述
    在这里插入图片描述
./zkCli.sh
  1. 常用命令
  1. ls

    1. ls [参数] /path:显示指定路径信息,可指定参数
      • 参数-s: 罗列出详细信息
      • 参数-R:当前目录和子目录中内容都罗列出来
        在这里插入图片描述
  2. create

    1. create /path [data]:创建,[data]表示包含内容,
      • 举例:create /demo: 创建/demo目录
        在这里插入图片描述
  3. get

    1. get [-s] /path:查看指定路径下内容
    2. 参数-s:列出详细参数
      在这里插入图片描述
      在这里插入图片描述
  4. set

    1. set /path data:想指定路径下设置内容,就是放数据到指定目录,想象目录是数据库表,内容是数据
      在这里插入图片描述
  5. delete

    1. delete /path:删除节点
      在这里插入图片描述

三、java代码内容发布到zookeeper服务器

先在客户端创建好路径

在这里插入图片描述

创建Maven项目开始编写代码
  1. 创建maven项目引入依赖,创建发送内容类
    在这里插入图片描述
    在这里插入图片描述
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.5.9</version>
</dependency>
  1. 编写代码,查看运行效果
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
import org.apache.zookeeper.*;
import java.io.IOException;
public class SendContext {
    public static void main(String[] args) {
        try {
            /**
             * 1. 创建Zookeeper对象 new Zookeeper(ip地址+端口号,访问超时设置,通过观察者模式发出访问恢复就是获取连接后的提示)
             */
            ZooKeeper zooKeeper = new ZooKeeper("192.168.10.105:2181", 100000, new Watcher() {
                @Override
                public void process(WatchedEvent watchedEvent) {
                    System.out.println("获取连接");
                }
            });
            /**
             * 向zookeeper服务器发送内容 create(发送的文件,发送的内容,权限,内容的模式)
             *  CreateMode.PERSISTENT_SEQUENTIAL,每次发送同名文件,会自动创建标号,上次的是1,这次的是2,不会删除原来文件,就是不覆盖
             *  而是通过序列号区分每次上次的不同文件
             */
            String s = zooKeeper.create("/demo/rmi-address", "lakdsjflkasjfklads".getBytes(),
                    ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
            System.out.println(s);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (KeeperException e) {
            e.printStackTrace();
        }
    }
}

四、java代码消息订阅,获取服务器内容

  1. 创建类编写代码,查看运行效果
    在这里插入图片描述
import org.apache.zookeeper.*;
import java.io.IOException;
import java.util.List;

public class ReciveContext {
    public static void main(String[] args) {
        try {
            /**
             * 1. 创建Zookeeper对象 new Zookeeper(ip地址+端口号,访问超时设置,通过观察者模式发出访问恢复就是获取连接后的提示)
             */
            ZooKeeper zooKeeper = new ZooKeeper("192.168.10.105:2181", 100000, new Watcher() {
                @Override
                public void process(WatchedEvent watchedEvent) {
                    System.out.println("获取连接");
                }
            });
            /**
             * 从Zookeeper中获取内容
             */
            // 1. 获取节点
            List<String> children = zooKeeper.getChildren("/demo", false);
            System.out.println("/demo路径下有:"+children);
            //2. 获取内容
            for (String child:children){
                byte[] data = zooKeeper.getData("/demo/" + child, false, null);
                System.out.println(child+"节点内容为:"+new String(data));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (KeeperException e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值