Spring Cloud 全家桶之Spring Cloud Config

在分布式系统中由于服务数巨多,为了方便服务配置文件统一管理,实时更新,所以需要一个分布式配置中心组件。在Spring Cloud中有Spring Cloud Config组件,它支持配置服务放在配置服务的内存中,也支持放在运程仓库中。在Spring Cloud Config 组件中,有两个角色,一个是ConfigServer 一个是ConfigClient。Spring Cloud Config实现了与Spring的无缝集成,支持Spring 里面的Environment和PropertySource的接口,对于已有的Spring的迁移成本非常低,在配置获取的接口上完全一致。

Spring Cloud Config:把应用原本放在本地的配置文件抽取出来放在中心服务器,从而获得更好的管理,发布能力

服务端:git/svn中存储的配置文件发布成REST接口

客户端:从服务端的REST接口获取配置,不能主动感知到配置的变换(更新),需要客户端的POST触发/refresh


服务端配置:

  • 添加依赖 

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

  • 开启服务注册:@EnableConfigServer注解开启Spring Cloud Config服务端

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {

    public static void main(String[] args) {

        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

  • 配置文件

spring.application.name=config-server
server.port=8888
spring.cloud.config.label=master
spring.cloud.config.server.git.uri=https://github.com/souyunku/spring-cloud-config.git
spring.cloud.config.server.git.search-paths=spring-cloud-config

#spring.cloud.config.server.git.username=your username
#spring.cloud.config.server.git.password=your password

spring-cloud-config-server-git-uri:配置git仓库地址

spring-cloud-config-server-git-searchPaths:配置仓库路径

spring-cloud-config-label:配置仓库分支

HTTP请求资源和地址映射如下:

  • /{application}/{profile}[/{label}]
  • /{application}--{profile}.yml
  • /{label}/{application}--{profile}.yml
  • /{application}--{profile}.properties
  • /{label}/{application}--{profile}.properties

  • 测试服务

证明配置服务中心可以从远程仓库获取配置信息


客户端配置:

  • 添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

  • 开启服务注册

通过@value注解获取服务端content的值

@RestController
@SpringBootApplication
public class ConfigClientApplication {

    @Value("${content}")
    String content;

    @RequestMapping("/")
    public String home() {
        return "content:" + content;
    }

    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

  • 配置文件

spring.application.name=config-client
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri=http://localhost:8888/
server.port=8088

spring-cloud-profile:

    dev开发配置文件

    test测试环境

    pro正式环境

spring-cloud-config-uri:配置服务中心网址

  • 测试服务:访问http://localhost:8088/

参考:https://www.w3cschool.cn/spring_cloud/spring_cloud-vca32ixm.html

附上原作者源码地址:https://github.com/souyunku/spring-cloud-examples/tree/master/spring-cloud-config


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值