SpringCloud组件学习笔记系列
【SpringCloud组件学习笔记系列】(1)Eureka组件
【SpringCloud组件学习笔记系列】(2)Hystrix组件
【SpringCloud组件学习笔记系列】(3)OpenFeign组件
【SpringCloud组件学习笔记系列】(4)Gateway组件
【SpringCloud组件学习笔记系列】(5)Config组件
完整代码已在Github开源:
https://github.com/Aliang99/SpringCloud_Bill
5、SpringCloud Netflix Config的使用以及讲解
5.1、简介
在分布式系统中,由于服务数量非常多,配置文件分散在不同的微服务项目中,管理不方便。
Spring Cloud Config组件主要用于集中管理配置文件,它支持配置文件放在配置服务的本地,也支持放在Git仓库(Github、Gitee)
配置中心本质上也是一个微服务,同样需要注册到Eureka注册中心。
5.2、Git平台的选择
github访问太慢,本次学习使用码云(gitee)
5.3、创建远程仓库
5.3.1、新建仓库
5.3.2、配置仓库信息
5.3.3、创建配置文件
直接创建配置文件
配置文件命名规则:
配置文件的命名方式:{application}-{profifile}.yml
或 {application}-{profifile}.properties
application
为应用名称
profifile
用于区分开发环境(dev),测试环境(test)、生产环境(prod)等
5.4、创建Config模块
5.4.1、引入依赖
<!-- 引入Eureka客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入Config服务类依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
5.4.2、配置文件
server:
port: 12000
spring:
application:
name: Config-Server
cloud:
config:
server:
git:
uri: https://gitee.com/superAliang/spring-cloud-config-demo.git # gitee上项目的地址,即远程库地址,公开的仓库不需要用户名和密码
# username: 用户名
# password: 密码
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka # 指定Eureka地址,用于将config这个服务注册到Eureka
5.4.2、启动类
@SpringBootApplication
@EnableConfigServer // 开启配置服务
public class SpringCloud_Config_12000_Application {
public static void main(String[] args) {
SpringApplication.run(SpringCloud_Config_12000_Application.class, args);
}
}
5.5、测试访问远程配置文件
浏览器输入http://localhost:12000/user-dev.yml
,Config服务模块就会从Gitee上获取到指定名称的文件。
查看Eureka是否注册成功
5.6、使用远程仓库的配置文件
使用之前,需要改造User-Service
服务,也就是SpringCloud-User-8001
模块。
5.6.1、引入依赖
<!-- config组件依赖,实现配置中心获取配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
5.6.2、配置文件改造
删除原来的配置文件
创建一个文件名为bootstrap.yml
的配置文件,bootstrap.yml
的文件名的特殊地方在于
bootstrap.yml
文件也是Spring Boot的默认配置文件,而且其加载的时间相比于application.yml
更早。
application.yml
和bootstrap.yml
虽然都是Spring Boot的默认配置文件,但是定位却不相同。
bootstrap.yml
可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
application.yml
可以用来定义应用级别的参数,如果搭配 spring cloud confifig 使用,application.yml
里面定义的文件可以实现动态替换。总结就是,
bootstrap.yml
文件相当于项目启动时的引导文件,内容相对固定。application.yml
文件是微服务的一些常规配置参数,变化比较频繁。
bootstrap.yml
spring:
cloud:
config: # 注意:仓库中创建的文件是: user-dev.yml ,要根据这个文件名去配置下面的参数
# 要与仓库中的配置文件的application保持一致
name: user
# 要与仓库中的配置文件的profile保持一致
profile: dev
# 要与仓库中的配置文件所属的版本(分支)一样
label: master
discovery:
# 使用配置中心
enabled: true
# 配置中心服务名
service-id: Config-Server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
5.7、测试使用远程配置文件
关闭Gateway的过滤器,重启服务,测试
该请求需要经过的业务逻辑:
输入地址
请求到达consumer的mapping
discoveryClient根据“User-Service”获取真实的请求主机地址
拼接User-Service的请求路径
RestTemplate发送请求到达User-Service的对应接口
对应接口处理业务完毕,将结果封装成CommonVo,并序列化后返回到consumer
consumer将响应内容反序列化,再封装成CommonVo返回到前端
前端页面显示请求的响应内容