官方文档: https://docs.spring.io/spring-cloud-config/docs/current/reference/html/
经过前面的学习,我们对于一个分布式应用的技术选型和搭建已经了解得比较多了,但是各位有没有发现一个问题,如果我们的微服务项目需要部署很多个实例,那么配置文件我们岂不是得一个一个去改,可能十几个实例还好,要是有几十个上百个呢?那我们一个一个去配置,岂不直接猝死在工位上。
所以,我们需要一种更加高级的集中化地配置文件管理工具,集中地对配置文件进行配置。
Spring Cloud Config 为分布式系统中的外部配置提供服务器端和客户端支持。使用 Config Server,您可以集中管理所有环境中应用程序的外部配置。
实际上 Spring Cloud Config 就是一个配置中心,所有的服务都可以从配置中心取出配置,而配置中心又可以从 GitHub 远程仓库中获取云端的配置文件,这样我们只需要修改 GitHub 中的配置即可对所有的服务进行配置管理了。
回到目录…
①这里我们接着创建一个新的项目 config-server,并导入依赖:
org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-starter-netflix-eureka-client
②写启动类,用 @EnableConfigServer
注解修饰
@SpringBootApplication
@EnableConfigServer
public class ConfigApplication {public static void main(String[] args) {SpringApplication.run(ConfigApplication.class, args);}
}
③接着就是配置文件:
server:port: 8700
spring:application:name: configserverprofiles:active: native # 配置使用本地储存。否则如果你不指定远程仓库,启动会报错,eureka:client:service-url:defaultZone: http://localhost:8801/eureka, http://localhost:8802/eureka
先启动一次看看,能不能成功:
回到目录…
①本地文件夹:
spring:application:name: configserverprofiles:active: native # 配置使用本地储存cloud:config:server:native:search-locations: classpath:/config/ # 本地配置文件路径
②Git仓库: 参考文章
spring:cloud:config:server:git:# 这里填写的是本地仓库地址,远程仓库直接填写远程仓库地址 http://git...uri: file://${user.home}/Desktop/config-repo# 默认分支设定为你自己本地或是远程分支的名称default-label: main
这里我们以本地仓库为例(就不用 GitHub了,卡到怀疑人生了),首先在项目目录下创建一个本地 Git 仓库,打开终端,在桌面上创建一个新的本地仓库:
然后我们在文件夹中随便创建一些配置文件,注意名称最好是{服务名称}-{环境}.yml
:
然后我们在配置文件中,添加本地仓库的一些信息,详细使用教程:https://docs.spring.io/spring-cloud-config/docs/current/reference/html/#_git_backend
回到目录…
http://localhost:8700/{服务名称}/{环境}/{Git分支}
http://localhost:8700/{Git分支}/{服务名称}-{环境}.yml
比如我们要访问图书服务的生产环境代码,可以使用 http://localhost:8700/bookservice/prod/main
链接,它会显示详细信息:
也可以使用 http://localhost:8700/main/bookservice-prod.yml
链接,它仅显示配置文件原文:
当然,除了使用 Git 来保存之外,还支持一些其他的方式,详细情况请查阅官网。
回到目录…
服务端配置完成之后,我们接着来配置一下客户端,那么现在我们的服务既然需要从服务器读取配置文件,那么就需要进行一些配置,我们删除原来的application.yml
文件(也可以保留,最后无论是远端配置还是本地配置都会被加载),改用bootstrap.yml
(在application.yml之前加载,可以实现配置文件远程获取):
org.springframework.cloud spring-cloud-starter-config
org.springframework.cloud spring-cloud-starter-bootstrap
spring:cloud:config:# 名称,其实就是文件名称name: bookservice# 配置服务器的地址uri: http://localhost:8700# 环境profile: prod# 分支label: main
配置完成之后,启动图书服务:
可以看到已经从远端获取到了配置,并进行启动。
回到目录…
总结:
提示:这里对文章进行总结:
本文是对SpringCloud的学习,学习了部署配置中心的方法、服务端的配置、存放配置文件的仓库选择,以及客户端如何配置。之后的学习内容将持续更新!!!