ZooKeeper分布式配置——看这篇就够了(3)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: ZooKeeper分布式配置——看这篇就够了

测试类:

import org.apache.zookeeper.ZooKeeper;
import org.junit.Before;
import org.junit.Test;
/**
 * @program: mxnzookeeper
 * @ClassName TestConfig
 * @description:
 * @author: muxiaonong
 * @create: 2021-10-19 22:04
 * @Version 1.0
 **/
public class TestConfig {
    ZooKeeper zk;
    @Before
    public void conn(){
        zk = ZKUtils.getZK();
    }
    /** @Author mxn
     * @Description //TODO 关闭ZK
     * @Date 21:16 2021/10/20
     * @Param
     * @return
     **/
    public void close(){
        try {
            zk.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @Test
    public void getConf(){
        WatchCallBack watchCallBack = new WatchCallBack();
        watchCallBack.setZk(zk);
        MyConfig myConfig = new MyConfig();
        watchCallBack.setConf(myConfig);
        //阻塞等待
        watchCallBack.aWait();
        while(true){
            if(myConfig.getConf().equals("")){
                System.out.println("zk node 节点丢失了 ......");
                watchCallBack.aWait();
            }else{
                System.out.println(myConfig.getConf());
            }
//
            try {
                //每隔500毫秒打印一次
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

运行测试


首先我们要知道,因为我们连接IP的时候加上了 /mxn这个目录结构,所以我们在服务器初始状态就必须要有这个节点:


集群初始状态:


[zk: localhost:2181(CONNECTED) 7] ls /
[mxn, zookeeper]


我们启动程序看看

连接成功

屏幕快照 2022-05-11 上午11.41.42.png




这个时候我们如果删除/mxn/myZNode节点,会发生什么呢,前面我们已经写了watch,如果Znode被删除了,,watch and callback执行

case NodeDeleted:
                //节点删除
                conf.setConf("");
                //重新开启CountDownLatch
                cc = new CountDownLatch(1);
                break;
 if(myConfig.getConf().equals("")){
              System.out.println("zk node 节点丢失了 ......");
                此时应该阻塞住,等待着node重新创建
                watchCallBack.aWait();
  }


删除/mxn/myZNode节点


delete /mxn/myZNode


我们可以看到前面还在打印数据,后面就提示丢失。

屏幕快照 2022-05-11 上午11.42.27.png



程序正常运行,并且成功获取到了zk配置的最新数据,到这里基本上就实现了,ZooKeeper的分布式配置中心功能了


在这里我测试用的是 getData,但是在项目实战用可能用的更多的是 子节点的操作 getChildren

总结


到这里我们这篇 ZooKeeper分布式配置注册发现 就讲完了,如果有疑问的地方欢迎进行讨论,ZooKeeper 可以作为分布式配置中心,也可以用来当然微服务的注册,不过现在微服务都有自己的一套服务发现,对于了解ZooKeeper可以我们方便我们在进行技术选型的时候更好的去抉择, ZooKeeper 的高可用和最终一致性也是比较稳定,


本文代码地址:

https://github.com/muxiaonong/ZooKeeper/tree/master/mxnzookeeper

如果对你有帮助,请帮忙star,感谢!

我是牧小农,如果对你有帮助的话,记得一键三连啊,怕什么真理无穷,进一步有一步的欢喜,大家加油 ~


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
8天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
8天前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
9天前
|
存储 负载均衡 Dubbo
分布式-Zookeeper(一)
分布式-Zookeeper(一)
|
9天前
分布式-Zookeeper-数据订阅
分布式-Zookeeper-数据订阅
|
9天前
|
监控
分布式-Zookeeper-Zab协议
分布式-Zookeeper-Zab协议
|
6天前
|
Java 网络安全
zookeeper的环境搭建和配置
本文介绍了如何在多台节点上搭建和配置Zookeeper环境。内容包括Zookeeper的下载、解压、环境变量配置、配置文件修改、zkdata目录创建、myid文件设置,以及将Zookeeper及其配置文件复制到其他节点。还提供了运行测试的命令,包括启动、状态检查和停止Zookeeper服务。
zookeeper的环境搭建和配置
|
9天前
|
Java
分布式-Zookeeper-分布式锁
分布式-Zookeeper-分布式锁
|
9天前
|
存储 负载均衡 算法
分布式-Zookeeper-Master选举
分布式-Zookeeper-Master选举
|
9天前
|
NoSQL 容灾 关系型数据库
分布式协调服务-Zookeeper
分布式协调服务-Zookeeper
|
9天前
|
存储 NoSQL Redis
分布式-Zookeeper(二)
分布式-Zookeeper(二)
下一篇
无影云桌面