Springcloud结合zookeeper配置中心 - Go语言中文社区

Springcloud结合zookeeper配置中心


Springcloud结合zk实现动态配置

SpringCloud结合git配置不足:需要一个应用作为服务端,并且没有自动监听配置的更改功能。于是我们就借助zk来帮我们完成这个通知。

  • 安装zk
    首先我们需要一个zk集群。下载地址 我们的项目需要配置ssh能够直接访问集群,测试就直接在本地进行。

  • 安装zkui
    因为配置文件统一在zk上管理。所以安装个zkui方便修改(安装方式如下)。登录端口默认 9090。http://localhost:9090

git clone https://github.com/DeemOpen/zkui.git
cd zkui/
# 根据自身集群修改config.cfg 下面zkServer,userSet(登录账户)
mvn clean install
cp config.cfg target
# 启动
java -jar target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar
  • pom 配置
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 提供zookeeper整合的包 -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-zookeeper-config</artifactId>
    </dependency>
    <!-- 提供自动监听的 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  • 定制属性配置
    SpringCloud官方文档 ,搜索 Distributed Configuration with Zookeeper,下面有写着bootstrap.yml/bootstrap.properties配置,因为springboot加载文件顺序,zookeeper相关配置需要放到这个文件,而不能放到application.properties中。建议配置参照官网教程(不然人家写的东西可能忽略某些细节)下面是我的bootstrap.properties
spring.application.name=didispace
#根据自身环境
spring.profiles.active=dev
#指定zookeeper的地址,多个用逗号拼接
spring.cloud.zookeeper.connect-string=localhost:2181
#指定springcloud 读取zookeeper路径的开始位置。选取你自己的目录
spring.cloud.zookeeper.config.root=/config
#开始zk的配置
spring.cloud.zookeeper.config.enabled=true
#是否监听配置
spring.cloud.zookeeper.config.watcher.enabled=true
#配置文件分隔符
spring.cloud.zookeeper.config.profile-separator=-

server.port=7001
  • 测试类
@SpringBootApplication
@RefreshScope
@RestController
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }

    @Value("${from}")
    private String from;

    @RequestMapping("/from")
    //动态修改配置文件的值。
    public String from() {
        return this.from;
    }
}

读取配置路径:
/{root}/{application-name}-{profile}
/{root}/{application-name}
根据我们这里的{root} 为 config,profile分隔符取你们自定义的,默认为‘,’。{profile}的话我这里是dev。

  • 写入配置到zk
    方式一:通过手动添加Node(目录)和属性。我这里根据之前properties配置创建也config目录。再创建didispace-dev,然后添加一个Property,key=from。value=test
    zkui
    方式二:点击Import导入文件。txt格式:/{root}/{application-name}-{profile}={key}={value}。所以对于我的配置txt:/config/didispace-dev=from=test

  • 测试
    配置完成后就剩下测试了。如果能正常启动,并且有 State change: CONNECTED的日志就是链接zk成功了。然后我们修改配置from的值为dev,打开REST Client或者Postman等测试工具发一个 localhost:7001/from 请求,如果请求返回dev那就完成。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yyoc97/article/details/80140544
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 22:18:17
  • 阅读 ( 1381 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢