配置中心系列一:SpringCloud Config的接入与使用

一、springcloud config介绍

Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入。

二、原理

SpringCloud Config采用pull(拉)的读取模式获取git仓库的配合信息
在这里插入图片描述

Spring Cloud Config 规定了一套配置文件访问规则

访问规则示例
/{application}/{profile}[/{label}]/config/dev/master
/{application}-{profile}.{suffix}/config-dev.yml
/{label}/{application}-{profile}.{suffix}/master/config-dev.yml

访问规则内各参数说明如下

{application}:应用名称,即配置文件的名称,例如 config-dev。

{profile}:环境名,一个项目通常都有开发(dev)版本、测试(test)环境版本、生产(prod)环境版本,配置文件则以 application-{profile}.yml 的形式进行区分,例如 application-dev.yml、application-test.yml、application-prod.yml 等。

{label}:Git 分支名,默认是 master 分支,当访问默认分支下的配置文件时,该参数可以省略,即第二种访问方式。

{suffix}:配置文件的后缀,例如 config-dev.yml 的后缀为 yml。

三、springboot接入方式

1.创建git配置仓库

这里使用的是gitee,创建完成代码仓库,工程内部如下
在这里插入图片描述

2.创建服务端config服务

服务端需要单独创建一个普通的springboot的web工程,具体创建这里不再赘述,下面是对于该工程的springcloud config的改造。(这里使用eurek作为注册中心,发现springcloud config服务)

2.1依赖引入

 <!-- spring cloud config 服务端包 -->
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-config-server</artifactId>
 </dependency>

2.2启动配置

启动类中需要加入@EnableConfigServer注解

@EnableConfigServer
@EnableDiscoveryClient //这是使用eureka注册中心的时候用到的注解
@SpringBootApplication
public class ConfigServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServiceApplication.class, args);
    }
}

2.3配置文件

bootstrap.yml

spring:
  cloud:
    config:
      server:
        git:
          username: git仓库的用户名
          password: git仓库的密码

application.yml

spring:
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/lk0423/springcloud-study-config #配置文件所在仓库
          search-paths: '{application}'  #配置文件所在根目录
          default-label: master #配置文件分支
#指定eureka服务地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://root:root@localhost:8761/eureka/

3.客户端对接config服务

需要接入配置中心的服务加入对应的依赖和配置即可使用

3.1依赖引入

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

3.2配置文件

这里使用eurek作为注册中心,发现springcloud config服务

spring:
  application:
    name: springcloud-demo
  cloud:
    config:
      discovery:
        enabled: true
        service-id: springcloud-config
      fail-fast: true
      retry:
        initial-interval: 1000
        max-attempts: 6
        max-interval: 2000
        multiplier: 1.1
      label: master
      profile: dev
eureka:
  client:
    serviceUrl:
      defaultZone: http://root:root@localhost:8761/eureka/

四、关于自动刷新

刷新微服务配置有以下几种方式:

  • 1.使用 Spring Cloud Bus 的推送机制,告诉所有客户端有配置发生更改的消息。需要一个额外的中间件(如:RabbitMQ)运行,但 Consul 注册中心不支持这种推送机制;
  • 2.使用 Spring Boot Actuator 提供的 @RefreshScope 注解;
  • 3.重新启动所有服务器或容器;

五、优缺点

1.优点

  • 提供服务端和客户端支持(spring cloud config server和spring cloud config client)
  • 集中式管理分布式环境下的应用配置
  • 基于Spring环境,无缝与Spring应用集成
  • 可用于任何语言开发的程序
  • 默认实现基于git仓库,可以进行版本管理
  • 可替换自定义实现

2.缺点

  • 没有界面,管理麻烦
  • 没有权限管理
  • 依赖繁多,例如:
    如果使用Git作为后端存储,需要搭建GitLab或其他Git服务器集群
    如需实现配置批量刷新,需要借助Spring Cloud Bus,依赖Kafka或RabbitMQ
  • 由于依赖太多,集群搭建很麻烦——GitLab、MQ、Config Server本身都得做集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是lk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值