目录

统一配置管理简介

代码开发


注意:本文参考  什么是ZooKeeper?

基于zookeeper实现统一配置管理_菜 头的博客-CSDN博客_zookeeper统一配置管理

统一配置管理简介

比如我们现在有三个系统A、B、C,他们有三份配置,分别是ASystem.yml、BSystem.yml、CSystem.yml,然后,这三份配置又非常类似,很多的配置项几乎都一样。

此时,如果我们要改变其中一份配置项的信息,很可能其他两份都要改。并且,改变了配置项的信息很可能就要重启系统

于是,我们希望把ASystem.yml、BSystem.yml、CSystem.yml相同的配置项抽取出来成一份公用的配置common.yml,并且即便common.yml改了,也不需要系统A、B、C重启。

做法:我们可以将common.yml这份配置放在ZooKeeper的Znode节点中,系统A、B、C监听着这个Znode节点有无变更,如果变更了,及时响应。

代码开发

下面基于zookeeper粗略实现了一个统一配置管理

需要用到的jar是zkclient

配置文件Config

package com.cwh.zk.util;import java.io.Serializable;public class Config implements Serializable{/*** */private static final long serialVersionUID = 1L;private String userNm;private String userPw;public Config() {}public Config(String userNm, String userPw) {this.userNm = userNm;this.userPw = userPw;}public String getUserNm() {return userNm;}public void setUserNm(String userNm) {this.userNm = userNm;}public String getUserPw() {return userPw;}public void setUserPw(String userPw) {this.userPw = userPw;}@Overridepublic String toString() {return "Config [userNm=" + userNm + ", userPw=" + userPw + "]";}}

配置管理中心ZkConfigMag

package com.cwh.zk.util;import org.I0Itec.zkclient.ZkClient;public class ZkConfigMag {private Config config;/*** 从数据库加载配置*/public Config downLoadConfigFromDB(){//getDBconfig = new Config("nm", "pw");return config;}/*** 配置文件上传到数据库*/public void upLoadConfigToDB(String nm, String pw){if(config==null)config = new Config();config.setUserNm(nm);config.setUserPw(pw);//updateDB}/*** 配置文件同步到zookeeper*/public void syncConfigToZk(){ZkClient zk = new ZkClient("localhost:2181");if(!zk.exists("/zkConfig")){zk.createPersistent("/zkConfig",true);}zk.writeData("/zkConfig", config);zk.close();}
}

应用监听实现ZkGetConfigClient

package com.cwh.zk.util;import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;public class ZkGetConfigClient {private Config config;public Config getConfig() {ZkClient zk = new ZkClient("localhost:2181");config = (Config)zk.readData("/zkConfig");System.out.println("加载到配置:"+config.toString());//监听配置文件修改zk.subscribeDataChanges("/zkConfig", new IZkDataListener(){@Overridepublic void handleDataChange(String arg0, Object arg1)throws Exception {config = (Config) arg1;System.out.println("监听到配置文件被修改:"+config.toString());}@Overridepublic void handleDataDeleted(String arg0) throws Exception {config = null;System.out.println("监听到配置文件被删除");}});return config;}public static void main(String[] args) {ZkGetConfigClient client = new ZkGetConfigClient();client.getConfig();System.out.println(client.config.toString());for(int i = 0;i<10;i++){System.out.println(client.config.toString());try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

测试,启动配置管理中心

package com.cwh.zkConfig.test;import com.cwh.zk.util.Config;
import com.cwh.zk.util.ZkConfigMag;public class ZkConfigTest {public static void main(String[] args) {ZkConfigMag mag = new ZkConfigMag();Config config = mag.downLoadConfigFromDB();System.out.println("....加载数据库配置...."+config.toString());mag.syncConfigToZk();System.out.println("....同步配置文件到zookeeper....");//歇会,这样看比较清晰try {Thread.sleep(10000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}mag.upLoadConfigToDB("cwhcc", "passwordcc");System.out.println("....修改配置文件...."+config.toString());mag.syncConfigToZk();System.out.println("....同步配置文件到zookeeper....");}}

测试结果:

配置管理中心打印:

Zookeeper与统一配置管理相关推荐

  1. Nacos如何实现统一配置管理

    统一配置管理 先看一下我们的service与nacos 的流程图 一.在nacos中增加配置 Nacos配置管理 Data Id :配置文件名称,命名规则: 服务名称-运行环境环境-后缀名(.yml, ...

  2. DuiC 统一配置管理 2

    为什么设计 DuiC 在工作中我们时常要根据不同环境配置不同的参数,让项目的灵活性.可用性变得更高,那灵活的配置就变得必不可少,虽然目前已经存在很多配置管理解决方案,但是管理方式局限性大,适应范围窄. ...

  3. ZooKeeper学习笔记—配置管理

    为什么80%的码农都做不了架构师?>>>    最近在工作中,为了完善公司集群服务的架构,提高可用性,降低运维成本,因此开始学习ZooKeeper.     至于什么是ZooKeep ...

  4. spring cloud config 统一配置管理

    Spring Cloud为开发人员提供了在分布式系统中快速构建一些常见模式的工具(例如配置管理.服务发现.断路器.智能路由.微代理.控制总线.一次性令牌.全局锁.领导选举.分布式会话)等等20多个项目 ...

  5. 图解ZooKeeper!小学生也能看懂!

    一.什么是ZooKeeper 从上面我们也可以发现,好像哪都有ZooKeeper的身影,那什么是ZooKeeper呢?我们先去官网看看介绍: 官网对ZooKeeper的介绍 官网还有另一段话: Zoo ...

  6. zookeeper中展示所有节点_分布式协调服务之Zookeeper

    ??理论篇 一.基础概念 ZooKeeper是开源分布式协调服务,提供高可用.高性能.稳定的分布式数据一致性解决方案,通常被用于实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理. ...

  7. Zookeeper介绍、原理及应用

    Zookeeper简介 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理 ...

  8. 什么是ZooKeeper?

    上次写了一篇 什么是消息队列?以后,本来想入门一下Kafka的(装一下环境.看看Kafka一些概念啥的).后来发现Kafka用到了ZooKeeper,而我又对ZooKeeper不了解,所以想先来学学什 ...

  9. java 二分搜索获得大于目标数的第一位_Java后端架构师技术图谱,你都了解多少?...

    前言 欢迎工作一到五年的Java工程师朋友们加入我们,私信回复[资料]即可获取我们提供免费的Java架构学习资料(里面有高可用.高并发.高性能及分布式.Jvm性能调优.Spring源码, MyBati ...

最新文章

  1. 面试必备:4种经典限流算法讲解
  2. Xcode9的xib只支持iOS7.0及以上版本
  3. Python爬虫四(正则表达式)
  4. php使用未定义常数,php-使用未定义的常量SIGTERM-gt;假定为’SIGTERM’
  5. 2017 Multi-University Training Contest - Team 3 Kanade's trio(字典树+组合数学)
  6. uboot研读笔记 | 14 - uboot启动流程分析(2016.03版本)
  7. 易语言服务器ping,Ping网络IP地址易语言源码
  8. 代码 点胶gcode_3D打印☞Gcode代码详解(含详解PDF附件)
  9. 两个列向量相乘怎么计算_两个矩阵相乘怎么算?
  10. 知识图谱的构建及用Neo4j和grapheco/InteractiveGraph实现知识图谱的可视化
  11. 含有使字的诗句_带有使字的诗-带有使字的诗句
  12. 程序写情诗|专属于程序员的浪漫
  13. 四、函数的基本概念和使用
  14. Visio中插入Mathtype公式
  15. asp毕业设计——基于asp+sqlserver的旅游网站设计与实现(毕业论文+程序源码)——旅游网站
  16. mariadb Galera集群部署
  17. HL7 标准及实现指南 必看的网址
  18. 羊皮卷的故事-第三章
  19. 2022年全国职业技能大赛网络安全竞赛试题B模块自己解析思路(2)
  20. 计算机辅助绘图考试题,CAD绘图员(往年考试题)练习题

热门文章

  1. MinGW-w64 安装和使用
  2. 简单c语语言游戏教案大全,大班语言活动教案大全简单趣味
  3. Android Jenkins + gradle 实现自动化打包流程并上传至蒲公英平台全过程
  4. 4. PyQt5的主要模块
  5. 【转】几种小波阈值去噪程序
  6. 人脸识别: 人脸数据集大全
  7. 计算机网络安全概述(论文)
  8. 如何自学单片机? 单片机怎么入门?
  9. Java语法理论和面经杂疑篇《七. 数据结构与集合源码》
  10. 什么是数据库连接池?数据库连接池的机制?