记Zookeeper3.5.6单机安装配置及简单使用

zookeeper简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。(以上摘自百度百科~)

环境准备

  1. 下载zookeeper
    前往官网下载最新的稳定版,链接为https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/
    在这里插入图片描述
    我下载已经编译好的apache-zookeeper-3.5.6-bin.tar.gz注意下载apache-zookeeper-3.5.6.tar.gz的话需要自己编译,不注意的话会被坑的很惨。
  2. 解压并配置zookeeper
    这里我使用的是linux环境,windows环境也是可以的。
#上传文件到linux服务器使用tar命令解压
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
#根据自己需要更改目录名称
mv apache-zookeeper-3.5.6 zookeeper-3.5.6
#进入到zookeeper目录
cd zookeeper-3.5.6
#复制配置文件
cp conf/zoo_sample.cfg conf/zoo.conf
#根据需要修改相关配置 这里我只修改了data目录
vi conf/zoo.conf

在这里插入图片描述
3. 启动zookeeper服务并进行测试

#使用zkServer-initialize.sh初始化一下,当然也可以自己手动建立响应目录
bin/zkServer-initialize.sh
#这里我们查看zookeeper启动脚本的命令
bin/zkServer.sh
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.6/bin/../conf/zoo.cfg
Usage: zookeeper-3.5.6/bin/zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|restart|status|print-cmd}
#这里我们使用start启动zookeeper服务
bin/zkServer.sh start
#出现如下输出即为启动成功
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.5.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#使用zookeeper cli进入测试一下
bin/zkCli.sh
#出现如下输出即为连接成功
[zk: localhost:2181(CONNECTED) 0] 
#查看一下znode
ls /
#只有一个zookeeper
[zookeeper]
#我们来创建一个znode用来测试
create /test
#设置一个值
set /test checkcheck
#获取值
get /test
checkcheck
#删除值
delete /test

Java连接测试

  1. 将zookeeper安装目录下的/lib目录里jar包复制到java的lib目录
  2. 创建测试类并实现Watcher接口,代码如下:
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;

import java.util.concurrent.CountDownLatch;

/**
 * @Auther: hustle
 * @Date: 2019/12/4 14:07
 * @Description:测试连接zookeeper获取值
 */
public class TestZookeeper implements Watcher {
    //程序计数器  用来阻塞线程
    private static CountDownLatch connectedSemaphore = new CountDownLatch(1);
    private static ZooKeeper zk = null;
    private static Stat stat = new Stat();

    public static void main(String[] args) throws Exception {
        //zookeeper配置数据存放路径
        String path = "/test";
        //连接zookeeper并且注册一个默认的监听器
        zk = new ZooKeeper("10.1.0.16:2181", 5000, //
        new TestZookeeper());
        //等待zk连接成功的通知
        connectedSemaphore.await();
        //获取path目录节点的配置数据,并注册默认的监听器
        System.out.println(new String(zk.getData(path, true, stat)));
        Thread.sleep(Integer.MAX_VALUE);
    }

    @Override
    public void process(WatchedEvent watchedEvent) {
        if (Event.KeeperState.SyncConnected == watchedEvent.getState()) {  //zk连接成功通知事件
            if (Event.EventType.None == watchedEvent.getType() && null == watchedEvent.getPath()) {
                connectedSemaphore.countDown();
            } else if (watchedEvent.getType() == Event.EventType.NodeDataChanged) {  //zk目录节点数据变化通知事件
                try {
                    System.out.println("Recieved change:" + new String(zk.getData(watchedEvent.getPath(), true, stat)));
                } catch (Exception e) {
                }
            }
        }

    }
}

启动java程序会得到zookeeper中znode/test的值并在控制台打印
在这里插入图片描述
这里我们在zookeeper上修改一下znode /test的值,java程序会同步获取到修改会的值,如下图所示:
在这里插入图片描述
好了,本篇博客到此结束,下次再会~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值