SpringCloud-配置中心 zookeeper

微信公众号:glmapper工作室
掘金专栏:glmapper
微 博:疯狂的石头_henu
欢迎关注,一起学习分享技术


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。

  • 解压
sudo tar -zxvf zookeeper-3.4.13.tar.gz
  • 目录重命名(可选)
sudo mv zookeeper-3.4.13 zookeeper
  • 在 zookeeper 下加一个data目录
> cd zookeeper
> mkdir data
  • 修改 zoo.cfg
vim zoo.cfg
  • 修改 dataDir 地址:
dataDir=/${your path}/zookeeper/data
  • 其他随意,启动 zk
zkServer.sh start

zkui

下载zkui代码,然后本地安装:

$ git clone https://gitee.com/ilanni/zkui.git
$ cd zkui/ 
$ mvn clean install # 进行maven打包,执行成功后会生成target文件夹,其中有jar文件。

执行结束后在zkui文件夹下生成一个target文件夹。

  • 将config.cfg文件复制到target文件夹下
cp config.cfg target/

target文件夹中有两个jar包,我们只需要启动zkui-2.0-SNAPSHOT-jar-with-dependencies.jar就可以了。

  • 修改 config.cfg文件
> cd target
> vim config.cfg

按需修改serverPort、zkServer、userSet 等。

  • 启动
java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar
# nohup java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &   #退出窗口不退出进程

配置文件

既然是以 zk 作为配置中,那么就需要将测试用的配置数据先在zk上进行初始化。有两种方式(均基于zkui):

  • zkui 界面通过 import 进行导入,这里新建一个 config.txt ,内容如下:
/config/sofa/sofa-config-zk,dev=server.port=8085

设置当前应用启动的端口,这里的 root 为 /config/sofa,应用名是 sofa-config-zk,dev是环境 ,server.port=8085 是具体的配置kv。

  • 手动 add node

这里为了方便,采用import的方式,结果如下:
image.png

新建 sofa-config-zookeeper

新建一个 SOFABoot 工程,项目为 sofa-config-zookeeper。

依赖引入

<!-- spring-cloud-config zk 的依赖,必选-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zookeeper-config</artifactId>
</dependency>
<!-- spring-cloud-config zk 的依赖,为了自动刷新监听等-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

配置文件

spring:
  application:
    name: sofa-config-zk
  profiles:
    active: dev
  cloud:
    zookeeper:
      enabled: true  # true:开启zookeeper外部化配置, false:读取本地配置;
      connect-string: sofa.cloud.alipay.net:2181
      config:
        root: /config/sofa   #指定zookeeper中属性的根目录
        enabled: true
        watcher:
          enabled: true    #默认值是true, 监控配置变更后是否自动更新,需配合Spring Boot Actuators 使用

启动类

@SpringBootApplication
public class SofaConfigZookeeperApplication {
    public static void main(String[] args) {
        SpringApplication.run(SofaConfigZookeeperApplication.class,args);
    }
}

没有任何特殊,不需要加额外的注解。

资源类

其实这里可以完全不用通过rest来打印这个属性值,但是为了方便看,还是写一下:

@RestController
public class ZookeeperConfigController {

    @Value("${server.port}")
    private String serverPort;

    @RequestMapping("/config")
    public String getConfig(){
        return serverPort;
    }
}

启动&验证

启动应用,如果成功的话,会有如下的日志:State change: CONNECTED

image.png

tomcat 启动端口:

image.png

因为在上面配置文件部分是没有指定 server.port 的,通常情况下默认是 8080 ,所以可以确定,已经拿到了配置中心的数据了。

动态刷新

这里还是需要依赖 actuator 的 /refresh 。上面依赖中已经加入了 actuator的相关依赖,所以只需要在资源类上加一个 @RefreshScope 注解即可。

需要注意,这里因为我们启动时应用时拿到的配置是8085,所以当前服务对外提供服务暴露的端口就是8085 ,当我们修改了zk上的值之后,他会改变 当前运行环境中 Enviroment 的值,但是不会使得服务的端口发生变化,除非重启。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

glmapper_2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值