世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

使用zk实现配置中心,只要抓住两点:

  1. znode存储配置信息
  2. watch监听配置信息的变化

下面是实现过程:

public class ConfigCenter {@Testpublic void test() {put();get();}/*** 配置信息的上传*/private void put() {try {String path = "/application.yml";File file = new File(this.getClass().getResource(path).getFile());FileInputStream in = new FileInputStream(file);byte[] bytes = new byte[in.available()];in.read(bytes);in.close();String connect = "127.0.0.1:2181";ZkClient client = new ZkClient(connect);client.setZkSerializer(new BytesPushThroughSerializer());String configPath = "/config1";if (client.exists(configPath)) {client.writeData(configPath, bytes);} else {client.createPersistent(configPath, bytes);}client.close();} catch (Exception e) {e.printStackTrace();}}/*** 配置信息的获取*/public void get() {String connect = "127.0.0.1:2181";ZkClient client = new ZkClient(connect);client.setZkSerializer(new BytesPushThroughSerializer());String configPath = "/config1";// 启动时首先读取配置信息byte[] bs = client.readData(configPath);System.out.println("config data : " +  new String(bs));// 监听配置信息的变化  client.subscribeDataChanges(configPath, new IZkDataListener() {@Overridepublic void handleDataChange(String s, Object o) throws Exception {System.out.println("data change path : " + s);System.out.println("data change : " + new String((byte[]) o));}@Overridepublic void handleDataDeleted(String s) throws Exception {System.out.println("data delete path : " + s);}});try {Thread.sleep(30000);} catch (Exception e) {e.printStackTrace();}}
}

如上,每个配置文件对应一个znode,就可以实现配置的集中处理,即配置中心。
当然如果实际使用还需要进行配置信息的解析或者写入等操作,在spring cloud中获取实时修改的配置信息,需要@RefreshScope注解的配合。当然也可以自己刷新配置,如通过applicationContext.refresh()。后续需要自己根据实际情况来实现了。

zk - zookeeper实现配置中心相关推荐

  1. Zookeeper系列四:Zookeeper实现分布式锁、Zookeeper实现配置中心

    一.Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性. 包括跨进程.跨机器.跨网络导致共享资源不一致的问题. 1. 分布式锁的实现思路 说明: 这种实现会有一个缺点,即当 ...

  2. Zookeeper实现配置中心

    Zookeeper实现配置中心 一.环境准备 1 . 准备集群 搭建Zookeeper集群,我准备了四服务,分别是192.168.91.129,192.168.91.130, 192.168.91.1 ...

  3. 基于Zookeeper实现配置中心

    在Zookeeper的主要应用场景中,其中之一是作为分布式系统的配置中心. 实现原理 在Zookeeper建立一个根节点,比如/CONFIG,代表某个配置文件.将配置文件中的信息作为根节点的子节点存储 ...

  4. zookeeper配置中心

    场景 多个客户端从zookeeper 的配置中心拿到配置,如果配置中心没有配置就阻塞,如果配置修改了就拿到新的. 原理 因为zookeeper的同步性质,即单线程的分两段式(当发生修改时,第一阶段:l ...

  5. RPC分布式网络通信框架(三)—— 服务配置中心Zookeeper模块

    文章目录 一.使用Zookeeper的意义 二.Zookeeper基础 1 文件系统 2 通知机制 3 原生zkclient API存在的问题 4 服务配置中心Zookeeper模块 三.Zk类实现 ...

  6. [配置中心] --- consul

    mac下载安装consul 1.下载:consul下载地址 2.解压到目录/usr/local/bin下 3.执行consul文件 4.验证:控制台输入consul验证 5.启动consul:cons ...

  7. Dubbo(五)之动态配置中心

    转载自  Dubbo动态配置中心 Dubbo 2.7 中的动态配置中心 配置中心(v2.7.0)在 Dubbo 中承担两个职责: 外部化配置.启动配置的集中式存储 (简单理解为 dubbo.prope ...

  8. springcloud记录篇6-分布式配置中心

    一.分布式配置中心简介 Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对Spr ...

  9. FastD 最佳实践二: 构建配置中心

    过去专门做了一篇文档来构建配置中心,基于 zookeeper 的配置中心. 环境要求及构建步骤可参考: QConf搭建配置中心 随着业务增长,部署的机器可能会随着增长,增加配置难度和维护难度.配置会因 ...

  10. Spring Cloud 如何选择分布式配置中心

    ##微服务必备的几样武器有了,才能独闯武林, 有哪几样呢? 注册中心(eureka, consul, zk, etcd) 配置中心 (Spring Cloud Config, disconf ) AP ...

最新文章

  1. Depends, python2.7-minimal (= 2.7.15_rc1-1) 问题解决方法使用 aptitude 安装以及与 apt-get 的区别
  2. ubuntu运行python ide_打造vim中的python IDE
  3. c语言设计一个按时间片轮转法实现处理器调度的程序,设计一个按时间片轮转法实现处理器调度的程序...
  4. php xml 返回 微信,php版微信返回用户text输入的方法
  5. Android Note-android studio 无法创建android项目
  6. 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
  7. 解决mysql地区时间错误_mysql time zone时区的错误解决
  8. 18.高性能MySQL --- 大文件传输
  9. jsp调用servlet方法_Servlet的运行原理
  10. juki贴片机是什么牌子,juki贴片机型号一览表
  11. Gateway服务网关
  12. pbs转换html,pbs 脚本实例说明.docx
  13. 锐捷交换机密码恢复操作
  14. 小愿景,职业发展,思维拓展
  15. .net 基于wkhtmltopdf插件,Rotativa包在后端根据html代码生成pdf文件
  16. vue中使用echarts自定义主题
  17. (附源码)springboot基于java的超市购物管理系统 毕业设计 271611
  18. 26进制(A到Z表示1到26,例27:AA,2019:BYQ)
  19. 第12周项目2—摩托车继承自行车和机动车
  20. 十岁不愁、二十不悔、三十而立、四十不惑、五十知天命、六十耳顺、七十古来稀...

热门文章

  1. 排列组合数学的相邻问题(插空法-捆绑法-隔板法)
  2. python代码格式化工具下载_python 代码格式化工具:autopep8
  3. Thymeleaf 教程
  4. ElasticSearch中minimum_should_match详细介绍
  5. 类iGoogle实现参考资料
  6. 第10章 数据库运行维护与优化
  7. nowcoder16638 carpet
  8. 4条地铁线,乘船到西站!杭州西站枢纽综合交通规划设计方案出炉
  9. eclipse下载地址
  10. 【2018亚太数据中心峰会】黄超:从供到需-中国IDC产业发展的环境分析