用Zookeeper作为Spring cloud的配置中心(转)

本文转自https://blog.csdn.net/CSDN_Stephen/article/details/78856323

Spring Cloud 配置中心的主流实现方式

Spring cloud config
Spring cloud zookeeper config
以下是这两者的简介

Srping Cloud Config

Spring cloud config就是和git(svn)集成来实现配置中心。Spring cloud config分服务端、客户端和git(svn)三部分,服务端负责将Git(SVN)中存储的配置文件发布成REST接口,客户端可以从服务端REST接口获取配置(但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过POST方法触发各自的/refresh)。其中通过git本身的属性可以达到配置版本控制的目的。有缓存形式,先把config下载到服务端本地再提供给客户端,提高可靠性。

Srping Cloud Zookeeper Config

该项目通过自动配置并绑定到Spring环境,为Spring Boot应用程序提供Zookeeper集成。Zookeeper提供了一个分层命名空间,允许客户端存储任意数据,如配置数据。Spring Cloud Zookeeper Config是Config Server和Client的替代方案。

两者的比较
Spring Cloud Config 通过文件系统,git/svn仓库来管理配置文件。包含客户端、服务端和git/svn仓库。通过git/svn特性可以达到版本控制

Spring Cloud Zookeeper Config 通过Zookeeper分级命名空间来储存配置项数据,另外Zookeeper可以实时监听节点变化和通知机制。

Spring Cloud Zookeeper Config 主要分为两部分,client端和zookeeper,client端内嵌在spring-cloud-starter-zookeeper-config中,用的是netflix开源的CuratorFramework 来连接zookeeper获取配置数据。在微服务启动时候加载到environment中。

如何使用Spring Cloud Zookeeper Config

1、在客户端(调用方)pom.xml中加入以下依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-config</artifactId>
</dependency>

2、在客户端配置文件bootstrap.yml / bootstrap.properties中加入zookeeper连接信息

spring:
application:
name: testApp
cloud:
zookeeper:
enabled: true # true:开启zookeeper外部化配置, false:读取本地配置;
connect-string: IP1:port1,IP2:port2,IP3:port3
config:
root: /config/dev
enabled: true
watcher:
enabled: false

属性详解:
connect-string:ZooKeeper的地址,如果是集群,逗号分隔节点,格式:ip:port[,ip2:port2,.....]
root:指定zookeeper中,属性的根目录
spring.application.name: 定义你的项目的名称,zk会在你指定的根目录下寻找以这个项目名命名的目录下的配置
watcher.enabled: 默认值是true, 监控配置变更后是否自动更新,需配合Spring Boot Actuators 使用

3、导入配置文件到Zookeeper

3.1、属性命名规则(假设你在上面的root配置项设置为/config/dev):

/config/dev/{application-name},{profile}={key}={value}

服务名和dev (profile名)以逗号隔开,可以设置spring.cloud.zookeeper.config.profile-separator 来用其他符号隔开,譬如”-”等

3.2、配置文件例子:
testApp-dev.txt

/config/dev/testApp,dev=server.port=8080

3.3、使用ZKUI来可视化管理Zookeeper,登录ZKUI->import 选择对应文件导入即可。
ZKUI安装使用请自行百度。

4、客户端获取配置方式
我了解到有三种,可能还有其他的,大家可以自行百度
4.1、通过@Value注解

@Value("${db.url}")
String dbUrl;

4.2、配置文件(xml)中直接使用(用${propertyName})

<bean id="globalDbConfig" class="com.demo.connector.GlobalDbConfig">
<property name="globalDbUsername" value="${global.username}"/>
<property name="globalDbPassword" value="${global.password}"/>
</bean>

如何让客户端自动更新zookeeper变更的配置

1、客户端pom.xml添加如下依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2、在bootstrap.yml/bootstrap.properties 配置文件中打开watcher

spring.cloud.zookeeper.config.watcher.enabled=true

3、Bean上添加@RefreshScope注解

配置读取简介

配置信息在服务启动时加载到Spring Environment中。配置信息默认存放在/config命名空间下。
例如,应用名为“testApp”,环境“dev”,则下列配置源会被创建:
- config/testApp,dev
- config/testApp
- config/application,dev
- config/application
最为具体的配置源放在最上面,最泛化的放在最下面。config/application命名空间下的属性会被用于所有应用。config/testApp命名空间下的属性只会被“testApp”服务的实例使用,其他服务不能使用。

配置优先级

远程配置(zookeeper等) > 命令行参数配置 > application.yml> bootstrap.yml

原文地址:https://www.cnblogs.com/xun1989/p/10039999.html

时间: 2024-08-12 04:56:16

用Zookeeper作为Spring cloud的配置中心(转)的相关文章

Spring Cloud学习--配置中心(Config)

Spring Cloud学习--配置中心(Config) 一 Spring Cloud Config简介 二 编写 Config Server 三 编写Config Client 四 使用refresh端点手动刷新配置 五 Spring Config Server与Eurelka配合使用 六 Config Server的高可用 一. Spring Cloud Config简介 微服务要实现集中管理微服务配置.不同环境不同配置.运行期间也可动态调整.配置修改后可以自动更新的需求,Spring Cl

微服务SpringCloud之Spring Cloud Config配置中心SVN

在回来的路上看到一个个的都抱着花,吃了一路的狗粮,原本想着去旁边的工业园里跑跑步呢,想想还是算了,人家过七夕,俺们过巴西.上一博客学习了Spring Cloud Config使用git作为配置中心,本篇学习下使用svn作为配置中心. 一.Server 端 1.准备配置文件 这里在本地电脑安装了下svn server,并在https://cuiyw/svn/config-repo/config目录下提交了上一博客的3个配置文件. 2.创建Spring Cloud Config SVN  Serve

spring cloud 的配置中心config

为啥要配置中心? 微服务架构中,每个项目都有一个yml配置,管理起来麻烦.要使用spring cloud config来统一管理. 它支持配置服务放在配置服务的内存中(即本地),也支持放在远程码云(码云中国的github)仓库中. 在spring cloud config 组件中,分两个角色,一是config server(配置中心),二是config client(客户端配置). 1.1.1. 架构 操作 一:操作码云 1.在码云中建立仓库 下一步 最好选择私有,据说访问要快些 下一步,在新建

Spring Cloud Config 配置中心 自动加解密功能

使用  jasypt-spring-boot-starter  进行加解密功能. 整个流程说明: 配置一个 spring cloud config server ,将要使用的配置文件存放到github上,然后从这个配置源拿配置. 我们使用 jasypt 进行自动加解密,将需要加密的数据,通过jasypt进行加密,然后将该内容放入 github.如下图: 使用 ENC() 将加密后的原文包裹,这样spring cloud config client 客户端拿到这个串之后,会自动解密,拿到原文. 下

Spring Cloud Config 配置中心

1.构建config-server 创建一个pom.xml <?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://

Spring Cloud 核心组件——注册中心

1. 什么是微服务的注册中心 注册中心:服务管理,核心是有个服务注册表,心跳机制动态维护. 为什么要用? 微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对于动态新增机器,维护带来很大问题. 主流的注册中心:Zookeeper.Eureka.Consul.ETCD 等. 服务提供者 Provider:启动的时候向注册中心上报自己的网络信息. 服务消费者 Consumer:启动的时候向注册中心上报自己的网络信息,拉取 Provider 的相关网络信息.

基于Spring Cloud的微服务构建学习-3 Spring Cloud Eureka配置详解

配置详解 在Eureka的服务治理体系中,主要分为服务端与客户端.服务端为服务注册中心,而客户端为各个提供接口的微服务应用.当部署高可用注册中心时,每个服务端也已经成为了客户端,因此,在使用Spring Cloud Eureka的过程中,我们所做的配置内容几乎都是对Eureka客户端配置进行的操作,所以了解这部分的配置内容,对于用好Eureka非常有帮助. 而Eureka服务端更多类似于一个现成产品,大多数情况下,我们不需要修改它的配置信息. Eureka客户端配置分类 服务注册相关配置,包括服

spring cloud 分布式配置(使用git进行远程配置)

我们使用分布式架构 搭建项目时 就比如说我们更改了数据库的密码 那如果有十几个微服务配置在不同的服务器上 我们是不是得一个一个服务器的去更改 那样就相当的麻烦 不光麻烦 还及其容易错 所以基本是不可能这样实现 这里有一个解决方式 可以把项目的配置放到gitlab上 从gitlab来读取 这样就方便了我们的配置 那么就要登陆到gitlab上创建账号 发布项目 等等 这些东西可以到 https://blog.csdn.net/Adelly/article/details/79099772 这个教程看

Spring Cloud之注册中心搭建

一.注册中心服务端搭建 1)引入相关Maven坐标 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> 2)加入相关注解 @EnableEurekaServer 3)相关配置属性,application.yml