SpringCloud使用Zookeeper作为配置中心的示例

作者:布禾 时间:2023-08-03 12:30:51 

目录
  • 相关依赖

  • 配置文件application.yml

  • 在Zookeeper中创建配置节点和数据

  • 测试类

  • 自定义Zookeeper配置

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

相关依赖


<?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


spring:
 application:
   name: zkdemo
 profiles:
   active: dev
 cloud:
   zookeeper:
     # Zookeeper服务器地址,集群使用逗号分隔
     connect-string: localhost:2181
 # 从Zookeeper中导入配置数据
 config:
   import: 'optional:zookeeper:'

server:
 port: 8005

在Zookeeper中创建配置节点和数据

创建配置根节点/config:


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

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


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

添加全局配置nickname1:


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

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


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

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


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

最终结构如下:

SpringCloud使用Zookeeper作为配置中心的示例

测试类


@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);
}
}

输出结果:

从application全局配置中读取配置:nickname1=布禾
从zkdemo服务配置中读取配置:nickname2=buhe

自定义Zookeeper配置

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


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

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

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

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

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

来源:https://www.cnblogs.com/seve/archive/2021/04/30/14708719.html

标签:SpringCloud,Zookeeper,配置中心
0
投稿

猜你喜欢

  • Android Jetpack架构组件 ViewModel详解

    2021-09-08 00:29:20
  • 五分钟手撸一个Spring容器(萌芽版)

    2021-07-29 02:41:54
  • OKhttp拦截器实现实践环节源码解析

    2023-04-27 05:00:21
  • Java函数式编程(十二):监控文件修改

    2022-08-11 10:21:01
  • Android实现异步加载图片

    2021-08-14 16:44:20
  • Android使用Matrix旋转图片模拟碟片加载过程

    2022-08-22 21:07:32
  • SpringMVC @RequestBody出现400 Bad Request的解决

    2021-10-18 11:50:50
  • Android 操作excel功能实例代码

    2021-07-02 23:48:23
  • Java微信公众平台之获取地理位置

    2021-05-28 19:36:40
  • JavaWeb项目部署到服务器详细步骤详解

    2023-11-29 11:15:20
  • Java源码解析之接口List

    2022-06-13 08:46:44
  • android实现文件读写功能

    2022-03-10 16:31:23
  • Android CheckBox中设置padding无效解决办法

    2022-09-07 01:35:48
  • 讲解使用Docker搭建Java Web运行环境

    2023-02-05 15:58:12
  • java虚拟机学习笔记进阶篇

    2022-01-07 04:53:06
  • Android开源项目PullToRefresh下拉刷新功能详解

    2022-02-02 15:14:54
  • 浅试仿 mapstruct实现微服务编排框架详解

    2022-07-12 13:20:44
  • myeclipse安装Spring Tool Suite(STS)插件的方法步骤

    2023-02-22 00:56:02
  • SpringCloud OpenFeign超详细讲解模板化远程通信的实现

    2023-04-27 06:43:29
  • java list去重操作实现方式

    2021-09-22 13:26:08
  • asp之家 软件编程 m.aspxhome.com