当前位置:   article > 正文

spring cloud config配置中心详细教程_项目中写cloud config的流程

项目中写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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

创建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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

*下面这段配置需要注意,我被整了半天才找到原因,难受~~~~~*
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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/243554
推荐阅读
相关标签
  

闽ICP备14008679号