Spring Cloud Zookeeper 中心化配置文件

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 为什么要使用zookeeper来管理项目配置? 每当我们的项目需要更改配置文件的时候,我们都会重新打包并重新部署项目。如果一个项目还好说,如果是分布式的服务,那么我们需要停掉左右机器上的服务,上传新的包,然后重启。

为什么要使用zookeeper来管理项目配置?

每当我们的项目需要更改配置文件的时候,我们都会重新打包并重新部署项目。如果一个项目还好说,如果是分布式的服务,那么我们需要停掉左右机器上的服务,上传新的包,然后重启。如果是10台,如果是100台如果是1000台.......
基于zookeeper配置中心,我们只需要更改zk中相应项目的配置,直接重启服务就可以了,省去了冲洗打包,上传,部署等大量操作。且配置中心化易于管理。

准备工作

基于SpringBoot
基于SpringCloud
基于zooKeeper 集群服务

假设你是基于SpringBoot开发,因为Spring对zk的集成整合在了SpringCloud的子项目中,所以我们需要引入SpringCloud,点击链接参考官方文档配置你的pom.xml文件,我使用的是目前Dalston SR2这个release。

然后在pom.xml的依赖中引入如下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zookeeper-config</artifactId>
</dependency>
<!-- zookeeper 依赖的健康检查的jar,所以需要引入actuator这个依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Spring官网对zookeeper这个子项目有个说明,就是项目的配置文件不可以叫application,需要改成bootstrap开头,否则没办法正常读取配置。例如原先叫application.yaml / application.properties,现在改成bootstrap.yaml / bootstrap.properties。

配置ZooKeeper

#ZooKeeper的连接字符串,如果是集群,逗号分隔节点,格式:ip:port[,ip2:port2,.....]
spring.cloud.zookeeper.connect-string = ${ZOOKEEPER_CONNECT_STRING}
#指定zookeeper目录的根目录
spring.cloud.zookeeper.config.root = <ZK_directory>
#启用zk的配置
spring.cloud.zookeeper.config.enabled =  <true | false>
 #定义了你的项目的名称,zk会在你指定的
根目录下寻找以这个项目名命名的目录下的配置
spring.application.name = <Define Name>

关于如何在zookeeper下创建目录,并填写配置,请参考其他资料。

举例说明

spring.cloud.zookeeper.config.enabled = true

在你指定zookeeper下的根目录,zk会在这个根目录下寻找跟你项目名称相同的文件夹,然后找到其下面的所有配置。
例如指定的根目录root(即/root),项目名称叫project,(即/root/project),上面的配置对应就是 /root/project/spring/cloud/zookeeper/config/enabled这个key,enabled的值是true

启动项目即可

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
7天前
|
消息中间件 Java 数据安全/隐私保护
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件
|
7天前
|
负载均衡 监控 Java
我把Spring Cloud的超详细资料介绍给你,面试官不会生气吧?geigei
我把Spring Cloud的超详细资料介绍给你,面试官不会生气吧?geigei
|
7天前
|
负载均衡 Java 应用服务中间件
Spring Cloud 负载平衡的意义什么?
负载平衡是指将网络流量在多个服务器之间分布,以达到提高系统性能、增强可靠性和提供更好用户体验的目的。在负载平衡的架构中,多个服务器被组织成一个集群,共同处理用户的请求。
32 4
|
8天前
|
XML JavaScript Java
【JavaEE】Spring Boot - 配置文件
【JavaEE】Spring Boot - 配置文件
7 0
|
8天前
|
监控 安全 Java
Spring cloud原理详解
Spring cloud原理详解
22 0
|
8天前
|
消息中间件 负载均衡 Java
【Spring Cloud 初探幽】
【Spring Cloud 初探幽】
20 1
|
8天前
|
安全 Java Docker
|
8天前
|
Java 开发者 微服务
Spring Cloud原理详解
【5月更文挑战第4天】Spring Cloud是Spring生态系统中的微服务框架,包含配置管理、服务发现、断路器、API网关等工具,简化分布式系统开发。核心组件如Eureka(服务发现)、Config Server(配置中心)、Ribbon(负载均衡)、Hystrix(断路器)、Zuul(API网关)等。本文讨论了Spring Cloud的基本概念、核心组件、常见问题及解决策略,并提供代码示例,帮助开发者更好地理解和实践微服务架构。此外,还涵盖了服务通信方式、安全性、性能优化、自动化部署、服务网格和无服务器架构的融合等话题,揭示了微服务架构的未来趋势。
39 6
|
8天前
|
JSON Java Apache
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
|
8天前
|
负载均衡 Java 开发者
Spring Cloud:一文读懂其原理与架构
Spring Cloud 是一套微服务解决方案,它整合了Netflix公司的多个开源框架,简化了分布式系统开发。Spring Cloud 提供了服务注册与发现、配置中心、消息总线、负载均衡、熔断机制等工具,让开发者可以快速地构建一些常见的微服务架构。