SpringCloud微服务(06):Config组件,实现配置统一管理

Easter79
• 阅读 635

一、Config简介

在微服务系统中,服务较多,相同的配置:如数据库信息、缓存、参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置。spring cloud提供配置中心,来解决这个场景问题。 系统中的通用配置存储在相同的地址:GitHub,Gitee,本地配置服务等,然后配置中心读取配置以restful发布出来,其它服务可以调用接口获取配置信息。

二、配置服务端

1、项目结构

SpringCloud微服务(06):Config组件,实现配置统一管理

  • 核心注解:@EnableConfigServer

2、核心依赖

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

3、核心配置文件

这里注意读取文件的配置

  • active :native,读取本地配置;

  • active :git,读网络仓库配置;

    server: port: 9001 spring: application: name: config-server-9001 profiles: # 读取本地 # active: native # 读取Git active: git cloud: config: server: native: search-locations: classpath:/config git: # 读取的仓库地址 uri: https://gitee.com/cicadasmile/spring-cloud-config.git # 读取仓库指定文件夹下 search-paths: /cloudbaseconfig # 非公开需要的登录账号 username: password: label: master

4、读取配置内容

不同的环境读取的结果不同。

info:
  date: 20190814
  author: cicada
  sign: develop
  version: V1.0

三、配置客户端

1、核心依赖

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

2、核心配置文件

在上面的配置中心,配置读取Git资源,所以这里的配置也就是读取Git资源。

server:
  port: 8001
spring:
  application:
    name: config-client-8001
  profiles:
    active: dev
  cloud:
    config:
      # 读取本地配置 ---------------------------
      #uri: http://localhost:9001
      ## 读取策略:快速失败
      #fail-fast: true
      ## 读取的文件名:无后缀
      #name: client-8001
      ## 读取的配置环境
      #profile: dev  # client-8001-dev.yml
      # ----------------------------------------

      # github上的资源名称 -----------------------
      name: client-8001
      # 读取的配置环境
      profile: dev
      label: master
      # 本微服务启动后,通过配置中心6001服务,获取GitHub的配置文件
      uri: http://localhost:9001
      # ----------------------------------------

3、测试接口

@RestController
public class ClientController {
    @Value("${info.date}")
    private String date ;
    @Value("${info.author}")
    private String author ;
    @Value("${info.sign}")
    private String sign ;
    @Value("${info.version}")
    private String version ;
    /**
     * 获取配置信息
     */
    @RequestMapping("/getConfigInfo")
    public String getConfigInfo (){
        return date+"-"+author+"-"+sign+"-"+version ;
    }
}

四、基于Eureka配置

上面的模式,通过服务中心,直接获取配置。下面把注册中心Eureka加进来。

1、项目结构

启动顺序也是如下:

node06-eureka-7001
config-server-9001
config-client-8001

2、修改配置项

  • 将config-server-9001添加到注册中心;
  • 配置config-client-8001读取注册中心;

完成后Eureka注册中心效果图,启动顺序如下:

SpringCloud微服务(06):Config组件,实现配置统一管理

3、修改客户端配置

通过注册中心获取服务,避免使用URI地址。

SpringCloud微服务(06):Config组件,实现配置统一管理

经过测试后,正确无误。

  • 提醒:国内如果读取git的配置,可能经常出去无法加载的问题,该案例使用的是Gitee的地址。

五、源代码地址

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-cloud-base
码云地址:知了一笑
https://gitee.com/cicadasmile/spring-cloud-base

SpringCloud微服务(06):Config组件,实现配置统一管理

点赞
收藏
评论区
推荐文章
捉虫大师 捉虫大师
2年前
nacos配置中心模块详解
本文已收录https://github.com/lkxiaolou/lkxiaolou欢迎star。配置中心业务上的配置,功能开关,服务治理上对弱依赖的降级,甚至数据库的密码等,都可能用到动态配置中心。在没有专门的配置中心组件时,我们使用硬编码、或配置文件、或数据库、缓存等方式来解决问题。硬编码修改配置时需要重新编译打包,配置文件需要重启应用,数据库受
Wesley13 Wesley13
2年前
JavaEE进阶知识学习
SpringCloudConfig配置中心概述就前面项目而言,分布面临的问题是配置问题,每一个项目都有一个yml文件,不好运维管理,所有需要一套集中式,动态的配置管理设施,SpringCloud提供了ConfigServer来解决这个问题。SpringCloudConfig是为微服务架构中的微服
Stella981 Stella981
2年前
Spring Cloud Alibaba系列(二)nacos作为服务配置中心
SpringCloudAlibaba系列(二)nacos作为服务配置中心Nacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用SpringCloudAlibabaNacosConfig,您可以在NacosServer集中管理你SpringCloud应用的外部
Stella981 Stella981
2年前
Nepxion Discovery Agent
前言基于SpringCloud的全链路灰度蓝绿发布功能,其中一个场景是,基于Header传递的全链路灰度路由,采用配置中心配置路由策略映射在网关或者服务上,支持根据用户自定义Header跟路由策略整合,最终转化为路由Header信息而实现,路由策略传递到全链路服务中。这是一个非常普遍的需求,但如果业务方用了服务之间异步调用的方式,会导致存储在Th
Stella981 Stella981
2年前
Spring Cloud Alibaba Nacos 服务配置中心和注册中心
学习在SpringCloud中使用Nacos实现服务配置中心和注册中心,类似SpringCloudConfig和SpringCloudNetflixEureka提供的功能。1概述SpringCloudAlibaba是阿里巴巴提供的一套微服务开发一站式解决方案。主要提供的功能:分布式配置中心
Easter79 Easter79
2年前
SpringCloud配置中心——ConfigServer搭建
_在实际应用中,一个系统的每个微服务都会有相同的配置,如数据库配置信息等等。为了将每个微服务的公共配置可以抽取出来。SpringCloud提供了Config配置中心的配置,作为配置中心(ConfigServer),提供给微服务(ConfigClient)读取并且加载配置。使用git仓库存放配置文件,SpringCloudConfig读取到之后会自
Easter79 Easter79
2年前
SpringCloud 进阶之分布式配置中心(SpringCloud Config)
1\.SpringCloudConfigSpringCLoudConfig为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置;SpringCloudConfig分为服务端和客户端:服务端也称为分布式配置中心,它是一个独立的微服务应用,
Stella981 Stella981
2年前
Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)
技术背景如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多。此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启,运维也是苦不堪言,而且还很容易出错。于是,配置中心便由此应运而生了。目前市面上开源的配置中心有很多,像Spring家族的SpringCloud
Easter79 Easter79
2年前
SpringCloud学习笔记(七)之SpringCloud Config分布式配置中心
微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自带一个application.yml。上百个配置管理。是什么
京东云开发者 京东云开发者
5个月前
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k