SpringCloud使用Zookeeper作为配置中心的示例
作者:布禾 发布时间:2023-08-03 12:30:51
标签:SpringCloud,Zookeeper,配置中心
目录
相关依赖
配置文件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
最终结构如下:
测试类
@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


猜你喜欢
- 找到framework/base/core/res/res/values/dimens.xml,在其中把Navigation的配置改成0 &
- Android:Field can be converted to a local varible.的解决办法前言:使用 Android S
- 要实现关机后数据也不会丢失,需要使用到 AndroidViewModel,SaveStateHandle 和 SharePreference
- 前言对于Java程序员,可以说对于ArrayList和LinkedList可谓是十分熟悉了对于ArrayList和LinkedList,他们
- 0x00:前言参考之前的《MyBatis 中 SqlMapConfig 配置文件详解》记了一下 MyBatis 中的核心配置文件各个标签的作
- 背景:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了
- RunnableRunnable接口非常简单,就定义了一个方法run(), 实现Runnable接口的run方法就可以实现多线程// 函数式
- 一:背景1. 讲故事周五下午运营反馈了一个紧急bug,说客户那边一个信息列表打不开,急需解决,附带的日志文件也发过来了,看了下日志大概是这样
- 以一个web项目为例,代码是可以移植的首先要导入mail.jar包,然后创建自己的类1:HTMLSender类package com.txq
- 运行环境windows 7下载地址环境下载最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是wi
- 本文实例为大家分享了Unity实现VR中在黑板上写字的具体代码,供大家参考,具体内容如下一、工具1.开发用的是Unity 5.6.2版本2.
- 若要在 C++ 中实现异常处理,你可以使用 try、throw 和 catch 表达式。首先,使用 try 块将可能引发异常的一个或多个语句
- TabHost控件默认使用LinearLayout包裹TabWidget和FrameLayout,布局文件如下:<TabHost xm
- Spring Security的本质Spring Security 本质上是一连串的 Filter , 然后又以一个独立的 Filter 的
- Java源码系列三-工具类Arrays今天分享java的源码的第三弹,Arrays这个工具类的源码。因为近期在复习数据结构,了解到Array
- 前言如何下载和使用MyBatis Generator 插件,只说代码,不讲感情。如果有问题还请多多指点。开发环境开发工具:IntelliJ
- Spring bean配置单例或多例模式单例spring bean 默认是单例默认,在对应.xml文件中的配置是:<bean id=&
- 在c#中"??"为空合并运算符,用于定义可空类型和引用类型的默认值。(1)如果此运算符的左操作数不为 null,则此运算
- 问题换了台开发机,重新安装了下开发环境。突然发现Visual Studio Code无法用来调试Unity了。明明流程都是按照Unity官方
- 前言:阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消