笔者的微服务项目中需要使用一个统一的管理分布式系统的配置中心,之前试用过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,读者可以尝试一下:
- 增加profile参数,http://localhost:8888/my-client/uat/master
- yml格式,http://localhost:8888/my-client.yml
- properties格式,http://localhost:8888/my-client.properties
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的核心概念。它由两个主要组件构成:Config Server(配置服务器)和Config...
为了简化配置管理,并且在不同环境(如开发、测试、生产)中灵活切换,我们可以使用Spring Cloud Config实现统一配置管理。 本文将详细介绍如何使用Spring Cloud Config实现统一配置管理,涵盖以下内容: Spring ...
- **配置服务器(Config Server)**:Spring Cloud Config Server是配置中心的核心,它负责存储和提供所有微服务的配置信息。 - **配置客户端(Config Client)**:运行在每个微服务中的组件,用于与配置服务器...
Spring Cloud Config 是一个用于微服务架构的外部配置中心,它允许开发者在运行时动态地管理和配置应用程序。这个详细Demo将涵盖Spring Cloud Config的使用方法,包括集群搭建和与Eureka服务发现组件的集成。让我们...
22.分布式配置中心Spring Cloud Config初窥 23.Spring Cloud Config服务端配置细节(一) 24.Spring Cloud Config服务端配置细节(二)之加密解密 25.Spring Cloud Config客户端配置细节 26.Spring Cloud Bus之...
### Spring Cloud Config 配置中心搭建与 Git 多文件夹存放配置文件 #### 一、Spring Cloud Config 配置中心简介 Spring Cloud Config 是一种分布式配置解决方案,它为微服务架构中的应用程序提供了一种集中式的...
### Spring Cloud Config 配置中心搭建详解 #### 一、背景与问题分析 在现代软件开发尤其是采用微服务架构的应用程序开发过程中,每个独立的服务都需要维护自己的配置文件(如 `application.yml`)。这种方式虽然...
以上就是Spring Cloud Alibaba项目搭建及配置的基本步骤,主要涉及到了Spring Cloud的配置中心Nacos和Dubbo服务治理。实际开发中,还需要考虑异常处理、熔断机制、负载均衡等高级特性,这些可以通过Spring Cloud ...
8. 使用Spring Cloud Config建立配置中心,实现配置的集中管理和动态刷新。 9. 最后,通过Docker或者Kubernetes进行服务的部署和扩展。 在学习和实践中,你可以参考提供的链接:http://blog.tbaqkj.com/article/25...
SpringCloud Config 分布式配置中心 SpringCloud Bus 消息总线 SpringCloud Stream 消息驱动 SpringCloud Sleuth 分布式请求链路跟踪 SpringCloud Alibaba入门简介 SpringCloud Alibaba Nacos 服务注册和配置...
客户端示例部分会介绍如何在Spring应用中使用Spring Cloud Config客户端,通过配置客户端引入配置服务器的信息,并与之进行通信以获取配置信息。 **配置服务Spring Cloud Config Server** 配置服务端是整个Spring ...
SpringCloud是微服务架构中的一个核心组件集合,它提供了包括服务发现、配置管理、负载均衡、熔断机制等在内的多种功能。...开发者可以通过这个压缩包学习如何搭建和使用配置中心,从而实现微服务的高效运维。
亲自搭建,下载直接就可以运行。里面主要包括基本的组件: 注册中心:Spring Cloud ... 配置中心:Spring Cloud Config 鉴权中心:Spring Cloud OAuth2 hystrix、feign、Zuul、Eureka等。 所有工程的都实现了负载。
在本文中,我们将深入探讨如何搭建一个基础的SpringCloud环境,包括设置Eureka服务注册中心、Ribbon负载均衡配置、Zuul网关配置以及分布式配置中心的配置。这些都是SpringCloud框架中的关键组件,用于构建高效、可靠...
本实例将详细介绍如何使用 Spring Cloud Config 搭建配置中心。 首先,我们需要引入 `spring-cloud-config-server` 组件。在 Maven 的 `pom.xml` 文件中添加以下依赖: ```xml <groupId>org.springframework....
SpringCloud搭建微服务架构 SpringBoot 版本1.5.6.RELEASE Dalston.SR3 与时俱进,一起学习进步。...经过几天学习实践整理,已经完成SpringCloud 注册中心 、SpringCloud Config配置中心 搭建。
在这个"springcloud框架搭建模板"中,我们将关注几个核心组件的使用:Spring Cloud Gateway、Nacos以及一个客户端微服务。 首先,Spring Cloud Gateway作为整个系统的入口点,它充当了API网关的角色。Gateway是...
- Spring Cloud Config Server提供了集中化的配置管理,允许开发者在不同的环境中统一管理应用程序的配置。配置文件存储在Git仓库中,服务启动时会从Config Server拉取配置。 2. **服务注册与发现**: - 使用...
1. **Spring Cloud Config**:配置管理工具,用于集中管理和推送应用的配置。`crm-parent1.rar` 可能包含了配置中心的父项目,可能包含配置服务器的相关配置和代码。 2. **Eureka**:服务发现组件,服务提供者注册...
2. SpringBoot与SpringCloud的结合:SpringBoot简化了Spring应用的初始搭建和配置过程,而SpringCloud则是基于SpringBoot实现的一套微服务解决方案,两者结合可以快速构建微服务应用。 3. 创建并部署第一个Spring...