`

使用Spring Cloud Config搭建配置中心

阅读更多

笔者的微服务项目中需要使用一个统一的管理分布式系统的配置中心,之前试用过Disconf。实际使用发现,Disconf可以很好地满足项目的需求,同时提供了一个友好的图形化界面供操作。但是,其服务器端使用了Nginx, Tomcat, MySQL, Zookeeper和Nginx,安装部署起来比较复杂;客户端也引入了不少的Jar包,可能引起版本冲突。因此,笔者也在留意是否有其它的可选方案。最近接触到Spring Cloud Config,认为也是一个搭建配置中心不错的选择,在此和大家分享一下试用的经验,供大家参考。 
文章中的样例代码可以在https://git.oschina.net/gongxusheng/spring-config-demo下载。 
本案例共有三个项目,分别是:

  • my-sample-config: 简单项目,用于管理配置文件
  • my-config-server: Spring Cloud Config Server即服务器项目
  • my-config-client: Spring Cloud Config Client即客户端项目

配置文件的管理

Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存储库可以很好地支持版本管理,Spring默认配置是使用Git存储库。在本案例中将使用OSChina提供的Git服务存储配置文件。为了能让Config客户端准确的找到配置文件,在管理配置文件项目my-sample-config中放置配置文件时,需要了解application, profile和label的概念:

  • {application}映射到Config客户端的spring.application.name属性
  • {profile}映射到Config客户端的spring.profiles.active属性,可以用来区分环境
  • {label}映射到Git服务器的commit id, 分支名称或者tag,默认值为master

例如在本案例中,计划将客户端my-config-client的spring.application.name设置为my-client,则上传一个文件名为my-client.yml配置文件;另外计划在uat环境上做不同的配置,则再上传一个文件名为my-client-uat.yml配置文件

 

Spring Cloud Config服务器的配置

使用Spring Starter Project快速创建一个Config Server项目。 
1) 增加@EnableConfigServer注解

 

@SpringBootApplication
@EnableConfigServer
public class MyConfigServerApplication {

 2) 配置application.yml文件,设置服务器端口号和配置文件Git仓库的链接

 

 

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: https://git.oschina.net/gongxusheng/spring-config-demo.git
          searchPaths: my-sample-config

 如果配置文件放置在Git存储库的根目录下,则无需使用searchPaths参数,本例中的配置文件在my-sample-config目录中,因此使用searchPaths参数提示Config服务器搜索my-sample-config子目录。 

 

3)启动Config服务器MyConfigServerApplication,在浏览器中输入http://localhost:8888/my-client/master,既可以验证Config服务器从Git存储库读到了配置文件。

 

{
  "name": "my-client",
  "profiles": ["master"],
  "label": null,
  "version": "9bace30e907ff34dc2ce377ceb7831278c856455",
  "propertySources": [
    {
      "name": "https://git.oschina.net/gongxusheng/spring-config-demo.git
        /my-sample-config/my-client.yml",
      "source": {"my-config.appName": "my-app"}
    }
  ]
}

 Config服务器支持带多种形式的URL,读者可以尝试一下:

 

Spring Cloud Config客户端的配置

使用Spring Starter Project快速创建一个Config Client+Web+Actuator项目。Spring Web用于演示获取属性值,Actuator的作用在于提供属性动态刷新、属性查看等功能。 
1) 在bootstrap.yml中设置客户端名称spring.application.name和Config服务器的地址,注意spring.application.name要和配置文件名相符

 

spring:
  application:
    name: my-client
  cloud:
    config:
      uri: http://localhost:8888

 2) 在@SpringBootApplication注解的MyConfigClientApplication类中增加一个方法,验证可以从Environment中获得配置

 

 

@Autowired
void setEnviroment(Environment env) {
    System.out.println("my-config.appName from env: " 
        + env.getProperty("my-config.appName"));
}

 3) 创建一个@RestController注解的类,验证使用@Value注解注入配置的值

 

 

@RestController
@RefreshScope
public class MySampleRestController {
    @Value("${my-config.appName}")
    private String appName;

    @Reque

 

分享到:
评论

相关推荐

    Spring Cloud Config(本地配置中心或git配置中心)

    Spring Cloud Config(本地配置中心或git配置中心)搭建源码

    Spring boot,springCloud精选视频教程

    22.分布式配置中心Spring Cloud Config初窥 23.Spring Cloud Config服务端配置细节(一) 24.Spring Cloud Config服务端配置细节(二)之加密解密 25.Spring Cloud Config客户端配置细节 26.Spring Cloud Bus之...

    尚硅谷SpringCloud第2季2020版.mmap

    SpringCloud Config 分布式配置中心 SpringCloud Bus 消息总线 SpringCloud Stream 消息驱动 SpringCloud Sleuth 分布式请求链路跟踪 SpringCloud Alibaba入门简介 SpringCloud Alibaba Nacos 服务注册和配置...

    springcloud demo搭建

    亲自搭建,下载直接就可以运行。里面主要包括基本的组件: 注册中心:Spring Cloud ... 配置中心:Spring Cloud Config 鉴权中心:Spring Cloud OAuth2 hystrix、feign、Zuul、Eureka等。 所有工程的都实现了负载。

    SpringCloud Eureka搭建微服务

    SpringCloud搭建微服务架构 SpringBoot 版本1.5.6.RELEASE Dalston.SR3  与时俱进,一起学习进步。...经过几天学习实践整理,已经完成SpringCloud 注册中心 、SpringCloud Config配置中心 搭建。

    spring-cloud config详细demo

    spring-cloud config超级详细demo,包括集群搭建,eureka于config的结合使用

    springCloud介绍与搭建流程说明.zip

    Spring Cloud Config:配置管理工具,目前支持本地存储、Git以及Subversion,可以实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等。 Eureka:服务治理组件,包含服务注册中心、服务注册与...

    spring cloud eureka zuul ribbon hystrix feign config 示例

    spring cloud eureka zuul ribbon hystrix feign config 示例代码

    想学习的看过来了spring4.0、springboot、springcloud详细视频课程(硅谷)

    47.硅谷学习_SpringCloud_Config分布式配置中心是什么 48.硅谷学习_SpringCloud_Config服务端与Github通信 49.硅谷学习_SpringCloud_Config客户端通过Config服务端获得Github上的配置 50.硅谷学习_SpringCloud_...

    详解spring cloud config整合gitlab搭建分布式的配置中心

    主要介绍了详解spring cloud config整合gitlab搭建分布式的配置中心,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    SpringCloud微服务框架学习源码

    有兴趣的同学可以结合本人的博客文章系统的学习怎样实现一个微服务框架的搭建,内容包括Eureka服务的注册发现及Eureka集群的实现、客户端负载均衡Ribbon、接口式负载均衡Feign、服务熔断与服务降级Hystrix、Hystrix ...

    springcloud入门

    springcloud-config:远程配置中心,分为git与native两个版本,为producer提供远程配置。 springcloud-connect:数据连接中心,包含DB、Redis、MQ、Mail等组件的配置入口,只需其他模块在pom中添加依赖并提供相关...

    Spring Cloud搭建基本服务配置

    Spring Cloud搭建基本服务配置: 1.Eureka 2.Ribbon 3.Feign 4.HyStrix 5.Zuul 6.Spring Config

    shik项目基于springcloud微服务搭建的分布式项目搭建了shik-config云公共配置

    shik项目基于springcloud微服务搭建的分布式项目。搭建了shik-config云公共配置,通过shik-RA服务注册发现各个模块,通过shik-zuul路由转发与统一接口。并整合了包括mybatis,jpa,jedis,quartz,freemarker和layui...

    使用spring cloud代建完整的分布式微服务架构

    使用spring cloud代建完整的分布式微服务架构,包括spring security oauth2权限控制,docker,config动态修改配置文件,eureka服务发现,zuul路由,实现服务和服务之间的调用。等等

    新版本SpringCloud2学习手册

    SpringCloud分布式配置中心 57 Config架构 58 Git环境搭建 58 服务端详解 58 Maven依赖信息 58 application.yml配置 59 项目启动 60 客户端详解 60 Maven依赖信息 60 bootstrap.yml 61 读取配置文件 62 ...

    spring-cloud

    #使用Spring Cloud Config搭建配置中心 笔者的微服务项目中需要使用一个统一的管理分布式系统的配置中心,之前试用过。实际使用发现,Disconf可以很好地满足项目的需求,同时提供了一个友好的图形化界面供操作。但是...

    史上最全SpringCloud微服务视频教程教程

    详细讲解  微服务技术架构概述 euraka注册中心原理 服务调用工具rest与fegin SpringCloud调用服务原理剖析...搭建SpringCloud分布式配置中心 服务雪崩效应解决办法  使用hystrix实现服务降级、熔断机制、解决雪崩效应

    搭建基于git的手动刷新springcloud config配置中心TOC

    搭建基于git的手动刷新springcloud config配置中心TOC 第一次写文章,写的不好请见谅!工具用的idea 1:首先我们先有一个配置中心模块,新建一个maven工程,直接建Spring Initializr工程 1.1:启动类上注解 @...

    SpringCloud2020.html

    1、基础项目工程搭建 2、Eureka服务注册与发现 ...5、Ribbon负载均衡服务调用 6、OpenFeign服务接口调用 7、Hystrix断路器 8、Gateway新一代网关 9、SpringCloud Config分布式配置中心 ....... 大厂面试之第3季

Global site tag (gtag.js) - Google Analytics