SpringCloud-配置中心 Config Zookeeper
SpringCloud 除了config自己的client/server 这套配置中心之外,还可以集成使用 zookeeper 。本篇将演示如何使用 spring-cloud-confg-zookeeper。
环境准备
类别 | 值 |
---|---|
JDK |
1.8.0_162 |
SOFABoot/SpringBoot |
3.0.0/2.0.x.RELEASE |
SpringCloud |
Finchley.RC1 |
IDE |
IDEA |
zk & zkui
这里我是把 zk 和 zkui 部署在一台 linux 服务器上的。
zk
从 ZooKeeper官网 下载 zookeeper-3.4.13.tar.gz。
解压
1
sudo tar -zxvf zookeeper-3.4.13.tar.gz
目录重命名(可选)
1 | sudo mv zookeeper-3.4.13 zookeeper |
- 在 zookeeper 下加一个data目录
1 | > cd zookeeper |
- 修改 zoo.cfg
1 | vim zoo.cfg |
- 修改 dataDir 地址:
1 | dataDir=/${your path}/zookeeper/data |
- 其他随意,启动 zk
1 | zkServer.sh start |
zkui
下载zkui代码,然后本地安装:
1 | $ git clone https://gitee.com/ilanni/zkui.git |
执行结束后在zkui文件夹下生成一个target文件夹。
- 将config.cfg文件复制到target文件夹下
1 | cp config.cfg target/ |
target文件夹中有两个jar包,我们只需要启动zkui-2.0-SNAPSHOT-jar-with-dependencies.jar
就可以了。
- 修改 config.cfg文件
1 | > cd target |
按需修改serverPort、zkServer、userSet 等。
- 启动
1 | java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar |
配置文件
既然是以 zk 作为配置中,那么就需要将测试用的配置数据先在zk上进行初始化。有两种方式(均基于zkui):
- zkui 界面通过 import 进行导入,这里新建一个 config.txt ,内容如下:
1 | /config/sofa/sofa-config-zk,dev=server.port=8085 |
设置当前应用启动的端口,这里的 root 为 /config/sofa,应用名是 sofa-config-zk,dev是环境 ,server.port=8085 是具体的配置kv。
- 手动 add node
这里为了方便,采用import的方式,结果如下:
新建 sofa-config-zookeeper
新建一个 SOFABoot 工程,项目为 sofa-config-zookeeper。
依赖引入
1 | <!-- spring-cloud-config zk 的依赖,必选--> |
配置文件
1 | spring: |
启动类
1 |
|
没有任何特殊,不需要加额外的注解。
资源类
其实这里可以完全不用通过rest来打印这个属性值,但是为了方便看,还是写一下:
1 |
|
启动&验证
启动应用,如果成功的话,会有如下的日志:State change: CONNECTED
动态刷新
这里还是需要依赖 actuator 的 /refresh 。上面依赖中已经加入了 actuator的相关依赖,所以只需要在资源类上加一个 @RefreshScope 注解即可。
- 在 ZookeeperConfigController 类上加 @RefreshScope 注解,然后重启应用
- 通过 zkui 修改 server.port 为 8086
- 访问 http://localhost:8085/config ,返回8086
需要注意,这里因为我们启动时应用时拿到的配置是8085,所以当前服务对外提供服务暴露的端口就是8085 ,当我们修改了zk上的值之后,他会改变 当前运行环境中 Enviroment 的值,但是不会使得服务的端口发生变化,除非重启。
SpringCloud-配置中心 Config Zookeeper
http://www.glmapper.com/2018/12/31/springcloud/spring-cloud-config-zookeeper/