天天看点

springcloud(六):配置中心git示例

随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错。配置中心便是解决此类问题的灵丹妙药。

市面上开源的配置中心有很多,bat每家都出过,360的qconf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心apache的apache commons configuration、owner、cfg4j等等。这些开源的软件以及解决方案都很优秀,但是我最钟爱的却是spring cloud config,因为它功能全面强大,可以无缝的和spring体系相结合,够方便够简单颜值高我喜欢。

在我们了解spring cloud config之前,我可以想想一个配置中心提供的核心功能应该有什么

提供服务端和客户端支持

集中管理各环境的配置文件

配置文件修改之后,可以快速的生效

可以进行版本管理

支持大的并发查询

支持各种语言

spring cloud config可以完美的支持以上所有的需求。

spring cloud config项目是一个解决分布式系统的配置管理方案。它包含了client和server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。spring cloud使用git或svn存放配置文件,默认情况下使用git,我们先以git为例做一套示例。

首先在github上面创建了一个文件夹config-repo用来存放配置文件,为了模拟生产环境,我们创建以下三个配置文件:

每个配置文件中都写一个属性neo.hello,属性值分别是 hello im dev/test/pro 。下面我们开始配置server端

只需要加入spring-cloud-config-server包引用既可。

启动类添加<code>@enableconfigserver</code>,激活对配置中心的支持

到此server端相关配置已经完成

返回信息如下:

上述的返回的信息包含了配置文件的位置、版本、配置文件的名称以及配置文件中的具体内容,说明server端已经成功获取了git仓库的配置信息。

返回:<code>neo.hello: hello im dev</code>

仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:

/{application}/{profile}[/{label}]

/{application}-{profile}.yml

/{label}/{application}-{profile}.yml

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

以neo-config-dev.properties为例子,它的application是neo-config,profile是dev。client会根据填写的参数来选择读取对应的配置。

主要展示如何在业务项目中去获取server端的配置信息

引入spring-boot-starter-web包方便web测试

需要配置两个配置文件,application.properties和bootstrap.properties

application.properties如下:

bootstrap.properties如下:

spring.application.name:对应{application}部分

spring.cloud.config.profile:对应{profile}部分

spring.cloud.config.label:对应git的分支。如果配置中心使用的是本地存储,则该参数无用

spring.cloud.config.uri:配置中心的具体地址

spring.cloud.config.discovery.service-id:指定配置中心的service-id,便于扩展为高可用配置集群。

特别注意:上面这些与spring-cloud相关的属性必须配置在bootstrap.properties中,config部分内容才能被正确加载。因为config的相关配置会先于application.properties,而bootstrap.properties的加载也是先于application.properties。

启动类只需要<code>@springbootapplication</code>注解就可以

使用<code>@value</code>注解来获取server端参数的值

<a href="https://github.com/ityouknow/spring-cloud-starter">示例代码</a>

作者:纯洁的微笑

版权归作者所有,转载请注明出处