为什么需要分布式配置中心呢?
随着我们的分布式项目越来越大,我们可能需要将配置文件抽取出来单独管理,Spring Cloud Config对这种需求提供了支持。Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。我们可以使用Config Server在所有环境中管理应用程序的外部属性,Config Server也称为分布式配置中心,本质上它就是一个独立的微服务应用,用来连接配置仓库并将获取到的配置信息提供给客户端使用;客户端就是我们的各个微服务应用,我们在客户端上指定配置中心的位置,客户端在启动的时候就会自动去从配置中心获取和加载配置信息。Spring Cloud Config可以与任何语言运行的应用程序一起使用。服务器存储后端的默认实现使用git,因此它轻松支持配置信息的版本管理,当然我们也可以使用Git客户端工具来管理配置信息。
基本流程
把配置文件传到Git仓库里面去,然后这个分布式配置中心即Spring Cloud Config启动之后会从Git仓库加载配置文件并且存在这个项目里面,其他的微服务启动之后,就都来找这个Spring Cloud Config并且从它里面读取配置文件,然后就可以运行了。
下面来写一个简单的例子,创建一个名为config-server的Module,然后加入如下依赖,暂时不急着把它注册到eureka:
然后在config-servier的启动类中加入@EnableConfigServer 注解开启分布式配置
然后在GitHub上面创建一个仓库。
我这里创建了一个名为sp的仓库:
然后创建一个文件夹 如下:
里面定义三个文件,内容分别如下,定义三种不同的环境:
然后在该文件夹下右击选择Git Bash Here(前提是装了Git),进入如下窗口,执行相应命令,然后把这三个文件提交到GitHub上:
提交成功后就能在GitHub上刚刚创建的仓库中看到这个文件了,:
然后配置config-server的配置文件:
spring.application.name=config-server
server.port=7000
#配置文件在git仓库中的位置
spring.cloud.config.server.git.uri=https://github.com/shuping1234/sp.git
#仓库的名字
spring.cloud.config.server.git.search-paths=client1
#仓库的用户名
spring.cloud.config.server.git.username=username
#仓库的密码
spring.cloud.config.server.git.password=password
这样就可以了,一会儿当我这个项目一启动,它就会自动去https://github.com/shuping1234/sp.git这个地方去找client1下面的配置文件
然后启动项目,访问http://localhost:7000/client1/dev/master地址(主机+端口+文件的名字+环境+在GitHub上面的分支),运行结果如下:
另外两个分支也都是这样访问。
可以在本地查看到这些文件: