对于单体应用架构来说,会使用配置文件管理我们的配置,这就是之前项目中的application.properties或application.yml。如果需要在多环境下使用,传统的做法是复制这些文件命名为application-xxx.properties,并且在启动时配置spring.profiles.active={profile}来指定环境。
在微服务架构下我们可能会有很多的微服务,所以要求的不只是在各自微服务中进行配置,我们需要将所有的配置放在统一平台上进行操作,不同的环境进行不同的配置,运行期间动态调整参数等等。总之一句话,使用集中管理配置是很有必要的。
可基于之前springclouddemo项目改造,也可以创建为新的项目
一、在github创建一个git仓库用来存放git配置
{application}-{profile}.properties并将配置项粘贴到新建的文件中,如:创建zuul-dev.properties,并将原来的zuul模块中的application.properties全部配置粘贴进来
二、 创建config server端
创建maven项目,可在原项目中创建module
引入pom依赖
<dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-config-server</artifactid> </dependency>
创建启动类
package cn.kxtop.blog.configserver; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.cloud.client.discovery.enablediscoveryclient; import org.springframework.cloud.config.server.enableconfigserver; // 注入到eureka中,使高可用 @enablediscoveryclient @springbootapplication @enableconfigserver public class configserverapplication { public static void main(string[] args) { springapplication.run(configserverapplication.class); } }
配置配置文件application.properties
server.port=9999 # 配置git仓库的地址(修改为你自己的git仓库地址) spring.cloud.config.server.git.uri=https://github.com/qupengkun/spring-cloud-config-repo.git # git仓库账号 spring.cloud.config.server.git.username=you_name # git仓库秘密 spring.cloud.config.server.git.password=you_password #eureka,确保spring cloud config 高可用 eureka.client.serviceurl.defaultzone = http://www.lhsxpumps.com/_localhost:8761/eureka/
启动项目并访问测试
http请求localhost:9999/zuul/dev
三、创建config client端
<dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-config-client</artifactid> </dependency>
#对应之前git仓库的文件名,如zuul-dev.properties spring.application.name=zuul #config server 地址 spring.cloud.config.uri=http://localhost:9999 #{profile}名(环境) spring.cloud.config.profile=dev #{label}名,git仓库分支 spring.cloud.config.label=master
以上基本演示了spring cloud config的用法,还是比较简单的,我们引入了eureka使config server能保证高可用,还可以增加@refreshscope手动刷新配置文件,如果配置对安全要求较高,也可以引入jce(java cryptography extension)进行加解密操作。
其实每次都去手动刷新配置还是比较麻烦且有很大的局限性的,那么如何修改配置后自动感知并刷新呢?请关注下一章基于spring cloud bus实现自动刷新配置。
持续学习,记录点滴。更多文章请访问
如对本文有疑问, 点击进行留言回复!!
14、Ribbon整合断路器监控Hystrix Dashboard
网友评论