SpringCloud学习笔记(五)——Spring Cloud Config
配置中心的作用
- 最重要的是可以动态调整配置参数,更改配置不停服务。
- 微服务数量比较多的时候,便于集中管理。
- 可以管理不同环境的配置。
配置中心介绍
分布式配置中心包括3个部分:
- 配置文件存储仓库:如git,svn等。
- config server。从仓库中拉取配置文件。
- config client。微服务作为客户端从config server拉取配置信息。
![配置中心
配置中心搭建
配置文件仓库
基于GitHub创建配置文件存储仓库
上传一个provider-dev.properties文件到仓库中。文件内容如下:
config.info=this is config info from config center.
文件命名规则
/{label}/{name}-{profiles}.properties
/{label}/{name}-{profiles}.yml
/{label}/{name}-{profiles}.json
lable:仓库分支、默认master分支
name:服务名称
profile:环境名称,开发、测试、生产:dev it pro
匹配原则:根据微服务的服务名自动查找对应name的文件列表,然后根据profiles拉取文件。
配置中心服务器
新建配置中心工程,并在pom中添加如下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- 作为Eureka客户端存在 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
application.properties中添加如下配置:
#配置文件仓库地址
spring.cloud.config.server.git.uri=https://github.com/piziniao/config-center.git
#配置文件分支
spring.cloud.config.label=master
#Eureka服务器地址
eureka.client.service-url.defaultZone=http://xxx.xxx.xxx.xxx:port/eureka/
#向Eureka注册的应用名
spring.application.name=config-center
#服务端口
server.port=6001
启动类中添加配置中心服务器声明:
@EnableConfigServer
微服务端配置
为了在微服务启动时就可以加载到配置中心存储的配置文件,需要把application.properties的文件名修改为bootstrap.properties,这样才能提高加载顺序。
然后在bootstrap.properties中添加如下配置:
#直接URL方式查找配置中心
#spring.cloud.config.uri=http://xxx.xxx.xxx.xxx:6001/
#通过注册中心查找,推荐这种方式,尤其是生产环境,可以多台配置中心,降低宕机风险
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-center
#配置文件分支
spring.cloud.config.label=master
#环境名:dev,it,st,pro
spring.cloud.config.profile=dev
在pom中添加客户端配置依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
在服务类(Controller/Service)中添加以下声明:
@RefreshScope
在服务中使用拉取到的配置参数:
@Value("${config.info}")
String info;
手动刷新配置
- 开启actuator中的refresh端点
- Controller中添加@RefreshScope注解
- 向微服务端 url http://xxx.xxx.xxx.xxx:port/actuator/refresh发送Post请求
自动刷新配置
erlang安装
http://www.erlang.org/downloads
环境变量:
path中添加 %ERLANG_HOME%\bin
RabbitMQ安装
http://www.rabbitmq.com/install-windows.html
#开启RabbitMQ节点
cmd> rabbitmqctl start_app
#开启RabbitMQ管理模块的插件,并配置到RabbitMQ节点上
cmd> rabbitmq-plugins enable rabbitmq_management
RabbitMQ管理界面
用户名密码均为guest
http://localhost:15672
微服务端pom中添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
微服务端bootstrap.properties中添加:
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
测试
通过url http://xxx.xxx.xxx.xxx:port/actuator/bus-refresh发送Post请求,刷新全部服务配置。
这里的url可以是某个服务端点,也可以是配置中心的url。
上一篇: SpringCloud极简入门(十一)Spring Cloud Config(Config Client)
下一篇: mac安装homebrew,报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refuse
推荐阅读
-
跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh
-
SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版
-
SpringCloud学习笔记(7):使用Spring Cloud Config配置中心
-
SpringCloud实战(六)-高可用的分布式配置中心(Spring Cloud Config)
-
Spring Cloud Alibaba 学习(4)- 客户端使用nacos config
-
SpringCloud 2.x学习笔记:5、Config(Greenwich版本)
-
SpringCloud学习笔记【十三】Spring Cloud Bus消息总线
-
SpringCloud学习笔记二:Spring Cloud Eureka 服务治理
-
SpringCloud教程 | 第11篇:分布式配置中心(Spring Cloud Config) 客户端实战
-
spring cloud系列学习(SpringCloud之服务注册之Ribbon负载均衡)