微服务架构中,配置文件众多,各个服务的配置文件也有可能不一样,Spring为我们提供了相应的配置中心组件--Spring Cloud config,他是一个配置管理中心,用于集中管理程序中各个环境下的配置,我们可以将配置通过git或svn等方式推送到我们的应用程序。同Eureka一样,他也分为server端与client端,有了之前Eureka的基础再来学习config会感觉简单许多。
首先来搭建一个config server端。一般来说我们的环境主要有三种,即正式生产环境,开发环境以及测试环境,Spring-config通过相应的文件名对这三种环境做了支持。他规定配置文件的命名规则为{application}-{profile}.properties,其中application为应用名,profile为环境名,他可以是dev、production、test,分别对应三种环境。接下来让我们进行config server的入门
环境搭建
新建项目,导入pom依赖,启动类开启configserver功能。接下来让我们上传一个文件到git。
有了远程的配置文件,再来编写本地的配置文件。
填写好相应的仓库地址后,启动项目访问:http://localhost:8080/jdbc-dev.properties
浏览器显示内容浏览器显示出了配置文件的内容。这样一个最简单的config-server就搭建好了。
client端入门
有了server端后,让我们来编写一个简单的client端获取配置信息。
还是一样的步骤,导入pom依赖,不过这里的启动类上不用加开启功能的注解。接下来新建bootstrap.yml配置文件(他的优先级比application.yml要高)
对应项后面的注释都已经写了,接下来写一个相应的配置类,并注入到容器中。
可以看到,spring cloud config client的使用和使用本地配置文件并无区别。接下来就是在需要的地方将配置类注入,调用即可。
上面写了一个简单的测试方法,通过debug我们可以看见,我们通过这种方式获取到了git仓库配置文件的内容。
手动更新配置文件内容
此时假设我们更新了git上配置文件的内容,我们不重启应用的话是看不到更新的。让我们增加手动更新的功能。首先加入actuator依赖,接着在application.yml中配置关闭actuator验证management.security.enabled=false(注意并不是bootstrap.yml),接着在刚刚编写的配置类中加入@RefreshScope注解即可。启动项目,更改git中配置文件后,我们借助pow工具手动的post请求一次client端的/refresh地址,再次请求配置类,即可看到更新后的内容了。
通过git的webhook更新
每次更新git上的文件,我们都需要手动的请求地址才能获取内容,显然比较麻烦,我们可以通过git的webhook功能实现自动请求。
我们在url处填上上面我们请求更新的地址,选中push事件,这样在git上有文件更新时,他将自动的对这个url发起请求。但是这里需要注意,如果是本机测试是不会成功的,因为我们的ip并不是公网ip,github并不能访问到我们,我们可以搭建一个本地的私服进行测试。借助webhook省去了我们手动更新的麻烦。
网友评论