zk - zookeeper实现配置中心
世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
使用zk实现配置中心,只要抓住两点:
- znode存储配置信息
- 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实现配置中心相关推荐
- Zookeeper系列四:Zookeeper实现分布式锁、Zookeeper实现配置中心
一.Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性. 包括跨进程.跨机器.跨网络导致共享资源不一致的问题. 1. 分布式锁的实现思路 说明: 这种实现会有一个缺点,即当 ...
- Zookeeper实现配置中心
Zookeeper实现配置中心 一.环境准备 1 . 准备集群 搭建Zookeeper集群,我准备了四服务,分别是192.168.91.129,192.168.91.130, 192.168.91.1 ...
- 基于Zookeeper实现配置中心
在Zookeeper的主要应用场景中,其中之一是作为分布式系统的配置中心. 实现原理 在Zookeeper建立一个根节点,比如/CONFIG,代表某个配置文件.将配置文件中的信息作为根节点的子节点存储 ...
- zookeeper配置中心
场景 多个客户端从zookeeper 的配置中心拿到配置,如果配置中心没有配置就阻塞,如果配置修改了就拿到新的. 原理 因为zookeeper的同步性质,即单线程的分两段式(当发生修改时,第一阶段:l ...
- RPC分布式网络通信框架(三)—— 服务配置中心Zookeeper模块
文章目录 一.使用Zookeeper的意义 二.Zookeeper基础 1 文件系统 2 通知机制 3 原生zkclient API存在的问题 4 服务配置中心Zookeeper模块 三.Zk类实现 ...
- [配置中心] --- consul
mac下载安装consul 1.下载:consul下载地址 2.解压到目录/usr/local/bin下 3.执行consul文件 4.验证:控制台输入consul验证 5.启动consul:cons ...
- Dubbo(五)之动态配置中心
转载自 Dubbo动态配置中心 Dubbo 2.7 中的动态配置中心 配置中心(v2.7.0)在 Dubbo 中承担两个职责: 外部化配置.启动配置的集中式存储 (简单理解为 dubbo.prope ...
- springcloud记录篇6-分布式配置中心
一.分布式配置中心简介 Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对Spr ...
- FastD 最佳实践二: 构建配置中心
过去专门做了一篇文档来构建配置中心,基于 zookeeper 的配置中心. 环境要求及构建步骤可参考: QConf搭建配置中心 随着业务增长,部署的机器可能会随着增长,增加配置难度和维护难度.配置会因 ...
- Spring Cloud 如何选择分布式配置中心
##微服务必备的几样武器有了,才能独闯武林, 有哪几样呢? 注册中心(eureka, consul, zk, etcd) 配置中心 (Spring Cloud Config, disconf ) AP ...
最新文章
- Depends, python2.7-minimal (= 2.7.15_rc1-1) 问题解决方法使用 aptitude 安装以及与 apt-get 的区别
- ubuntu运行python ide_打造vim中的python IDE
- c语言设计一个按时间片轮转法实现处理器调度的程序,设计一个按时间片轮转法实现处理器调度的程序...
- php xml 返回 微信,php版微信返回用户text输入的方法
- Android Note-android studio 无法创建android项目
- 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
- 解决mysql地区时间错误_mysql time zone时区的错误解决
- 18.高性能MySQL --- 大文件传输
- jsp调用servlet方法_Servlet的运行原理
- juki贴片机是什么牌子,juki贴片机型号一览表
- Gateway服务网关
- pbs转换html,pbs 脚本实例说明.docx
- 锐捷交换机密码恢复操作
- 小愿景,职业发展,思维拓展
- .net 基于wkhtmltopdf插件,Rotativa包在后端根据html代码生成pdf文件
- vue中使用echarts自定义主题
- (附源码)springboot基于java的超市购物管理系统 毕业设计 271611
- 26进制(A到Z表示1到26,例27:AA,2019:BYQ)
- 第12周项目2—摩托车继承自行车和机动车
- 十岁不愁、二十不悔、三十而立、四十不惑、五十知天命、六十耳顺、七十古来稀...