Windows 伪分布式zookeeper

1、官网下载最新版本zookeeper,解压。

2、在一台机器上安装设置不同端口实现伪分布式。

    (1)、将 zookeeper/conf 目录下zoo_sample.cfg文件复制三份,zoo1.cfg/zoo2.cfg/zoo3.cfg。设置镜像数据目录、日志目录、端口。$num$表示机器编号

 # 镜像数据目录
dataDir=/tmp/zookeeper/$num$
#日志位置
dataLogDir=D:\\log\\zookeeper\\$num$
# 客服端端口
clientPort=2181/2182/2183

    添加集群配置:

server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

    (2)、修改命令加载伪分布配置。将 zookepper/bin 目录下zkServer.cmd复制三份,zkServer1.cmd/zkServer2.cmd/zkServer3.cmd。设置加载配置文件。

set ZOOCFG=..\conf\zoo1.cfg

    (3)、cmd进入 zookeeper/bin 分别启动 zkServer1.cmd/zkServer2.cmd/zkServer3.cmd。启动时会报错,因为集群中其他机器还没有启动。所有都启动之后就不会报错了。

    (4)、java 测试

public class ZkTest {

    private static final int TIME_OUT = 3000;
    private static final String HOST = "localhost:2181";

    public static void main(String[] args) throws Exception {
        Watcher myWatcher = new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                System.out.println("节点数据发生变化");
            }
        };

        ZooKeeper zookeeper = new ZooKeeper(HOST, TIME_OUT, myWatcher);
        System.out.println("=========创建节点===========");
        if (zookeeper.exists("/test", false) == null) {
            zookeeper.create("/test", "znode1".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        }
        System.out.println("=============查看节点是否安装成功===============");
        System.out.println(new String(zookeeper.getData("/test", false, null)));

        System.out.println("=========修改节点的数据==========");
        String data = "zNode2";
        zookeeper.setData("/test", data.getBytes(), -1);

        System.out.println("========查看修改的节点是否成功=========");
        System.out.println(new String(zookeeper.getData("/test", false, null)));

        System.out.println("=======删除节点==========");
        zookeeper.delete("/test", -1);

        System.out.println("==========查看节点是否被删除============");
        System.out.println("节点状态:" + zookeeper.exists("/test", false));
        //宋佳燚测试
        //zookeeper.create("/宋佳燚", "宋佳燚".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        //System.out.println(new String(zookeeper.getData("/宋佳燚", false, null)));
        if(zookeeper.exists("/宋佳燚",false) != null){
            zookeeper.delete("/宋佳燚", -1);
        }

        if(zookeeper.exists("/宋佳燚1",true) != null) {
            zookeeper.delete("/宋佳燚1", -1);
        }

        zookeeper.create(new String("/宋佳燚1".getBytes(),"utf-8"), "宋佳燚1".getBytes("utf-8"), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        System.out.println(new String(zookeeper.getData("/宋佳燚1",false,null)));
        zookeeper.setData(new String("/宋佳燚1".getBytes(),"utf-8"), "宋佳燚修改".getBytes("utf-8"), -1);
        System.out.println(new String(zookeeper.getData("/宋佳燚1",true,null)));
        zookeeper.setData(new String("/宋佳燚1".getBytes(),"utf-8"), "宋佳燚修改2".getBytes("utf-8"), -1);
        System.out.println(new String(zookeeper.getData("/宋佳燚1",false,null)));

        //生成临时节点
        zookeeper.create("/临时节点", "临时测试数据".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
        Thread.sleep(1000*5);
        //zookeeper.delete("/宋佳燚1", -1);
        zookeeper.close();
    }
}

    

转载于:https://my.oschina.net/u/2361853/blog/1054776

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值