Zookeeper系列(6):使用Zookeeper作为配置中心

在上一篇文章中介绍了Zookeeper作为注册中心使用,在这篇文章中将介绍Zookeeper作为配置中心的使用,废话不多说,直接上代码。

相关依赖
Copy
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>zkdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>zkdemo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>2020.0.2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
配置文件application.yml
Copy
spring: application: name: zkdemo profiles: active: dev cloud: zookeeper: # Zookeeper服务器地址,集群使用逗号分隔 connect-string: localhost:2181 # 从Zookeeper中导入配置数据 config: import: 'optional:zookeeper:' server: port: 8005
在Zookeeper中创建配置节点和数据

创建配置根节点/config:

Copy
[zk: localhost:2181(CONNECTED) 3] create /config Created /config

创建全局配置节点/config/application,/config/application节点下的配置所有服务都能使用。

Copy
[zk: localhost:2181(CONNECTED) 4] create /config/application Created /config/application

添加全局配置nickname1:

Copy
[zk: localhost:2181(CONNECTED) 5] create /config/application/nickname1 布禾 Created /config/application/nickname1

创建zkdemo服务dev环境的配置节点/config/zkdemo,dev,该节点的配置只能被特定服务的特定环境使用,当该节点的配置和全局配置冲突时,优先使用该节点的配置:

Copy
[zk: localhost:2181(CONNECTED) 6] create /config/zkdemo,dev Created /config/zkdemo,dev

添加zkdemo服务dev环境配置nickname2:

Copy
[zk: localhost:2181(CONNECTED) 7] create /config/zkdemo,dev/nickname2 buhe Created /config/zkdemo,dev/nickname2

最终结构如下:

测试类
Copy
@SpringBootTest class ZkdemoApplicationTests { @Value("${nickname1}") private String nickname1; @Value("${nickname2}") private String nickname2; @Test public void testZkConfig() { System.out.println("从application全局配置中读取配置:nickname1=" + nickname1); System.out.println("从zkdemo服务配置中读取配置:nickname2=" + nickname2); } }

输出结果:

Copy
从application全局配置中读取配置:nickname1=布禾 从zkdemo服务配置中读取配置:nickname2=buhe
自定义Zookeeper配置

如果不想使用默认的Zookeeper配置,可以在application.yml更改:

Copy
spring: cloud: zookeeper: config: enabled: true root: configuration default-context: apps profile-separator: '::'

enabled:将该值设置为false将禁用Zookeeper配置,默认true。

root:配置根节点名称,默认为config。

default-context:全局配置节点名称,默认为application。

profile-separator:设置服务名和环境名称之间的分隔符,默认为英文逗号。

posted @   布禾  阅读(2370)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· .NET 9 new features-C#13新的锁类型和语义
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 《SpringBoot》EasyExcel实现百万数据的导入导出
点击右上角即可分享
微信分享提示