spring cloud config配置中心详细教程

配置中心

现有携程的apollo(阿波罗)、蚂蚁金额的disconf、spring cloud config
对于一些简单的项目来说,我们一般都是直接把相关配置放在单独的配置文件中,以 properties 或者 yml 的格式出现,更省事儿的方式是直接放到 application.properties 或 application.yml 中。但是这样的方式有个明显的问题,那就是,当修改了配置之后,必须重启服务,否则配置无法生效。

spring cloud config介绍

Spring Cloud Config 是把应用原本放在本地文件的配置放到github,从而提供更好的管理、发布能力。

执行流程

1.根据客户端传递过来的应用、环境、版本信息来找到对应的Git Repository

2.在拉取到远程仓库的数据之后,切换到指定的节点

3.指定ApplicationContext名字为客户端传过来的应用名字,指定胚子文件路径为本地git目录

4.创建本地git目录,结合profile来加载指定的配置文件信息

5.从配置文件中获取配置,返回给客户端。

eureka、config server、config-client、gitee实现配置分离

怎么解决修改了配置之后,必须重启服务,否则配置无法生效的问题?
通过eureka、spring cloud config、config-client、gitee实现
2.1 eureka
(1)配置文件
spring.application.name=spring-cloud-config-eureka-server
server.port=8761

#fase表示不向注册中心注册自己
eureka.client.register-with-eureka=false
#false表示自己就是注册中心,我的职责就是维护实例,并不需要去检索服务
eureka.client.fetch-registry=false

(2)启动类
添加@EnableEurekaServer注解

2.2 spring cloud config server

//添加config server依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
//添加eureka client依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

1.启动类
@EnableEurekaClient
@EnableConfigServer

2.配置
//注入到注册中心
spring.application.name=spring-cloud-config
server.port=8090
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

#git
spring.cloud.config.server.git.uri=***************************
spring.cloud.config.server.git.username=*************
spring.cloud.config.server.git.password=**************

2.3 config client

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

//eureka client
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

创建bootstrap.properties文件(优先加载)
//这个application.name文件跟git上一致
spring.application.name=config-eureka-client
spring.cloud.config.profile=dev
spring.cloud.config.discovery.enabled=true

spring.cloud.config.discovery.service-id=spring-cloud-config

//注入到注册中心
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

2.4 gitee

在这里插入图片描述

在创建一个config-eureka-client.properties文件

作用就是在加载dev或者prod时,会自动合并config-eureka-client.properties文件的内容整合在一起

实现自动刷新

采用bus结合rabbitmq
1.eureka不变

2.config server
依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

*下面这段配置需要注意,我被整了半天才找到原因,难受~~~~~*
1.x版本配置
#mq配置
spring.rabbitmq.host=******
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
#bus
management.security.enabled=false
————————————————————————————
2.x版本配置
#mq配置
spring.rabbitmq.host=******
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
#bus
spring.cloud.bus.refresh.enabled=true
management.endpoints.web.exposure.include=bus-refresh

请求刷新地址:1.x版本为:http://ip:端口/bus/refresh(如:http://localhost:8040/bus/refresh),2.0以后为:http://ip:端口/actuator/bus-refresh(如:http://localhost:8040/actuator/bus-refresh),特别注意:两个都是POST请求

3.config clent
依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

特别注意:client端在获取配置的方法上需要加上 @RefreshScope 注解。

添加rabbitmq配置
spring.rabbitmq.host=*******
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值