SpringCloud(六):分布式配置中心——Config

概述

前言

  • 由于微服务架构提倡将项目划分为很多细粒的小服务,每个小服务都有一个application.yml
  • 对于一个具体的服务,应根据业务上下文,选择合适的语言,工具进行构建
  • 综上,可以有一个非常 轻量级的集中式管理 来协调这些服务

是什么?

  1. 架构图
    将配置文发布到github或者码云上,客户端从config server请求配置文件,config server从github或者码云获取配置文件在这里插入图片描述
  2. SpringCLoud为微服务架构中的微服务提供集中化的外部配置支持,config server为 各个不同的微服务应用 提供一个 中心化的外部配置

Config的组成

  • 分成服务端和客户端两部分
  • 服务端也称为 分布式配置中心 ,是一个 独立的微服务应用 ,用来连接配置服务器并为客户端提供获取配置信息,加密/解密等访问接口
  • 客户端通过指定的配置中心管理应用资源,以及与业务相关的配置内容,在启动的时候从配置中心获取配置信息

Config Server的配置

在github或者gitee上创建配置的Repository

  • 新建 appication.yml ,注意文件的编码格式需要保存为 UTF-8 格式

    spring: 
        profiles: 
            active: 
            - dev
    ---
    spring: 
        profiles: dev
        application: 
            name: springcloud-config-abor-dev
    ---
    spring: 
        profiles: test
        application: 
            name: springcloud-config-abor-test
    

注意两种环境的服务名称不一样

构建ConfigServer项目(springcloud-config-3344)

POM.XML

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

application.yml

server:
  port: 3344
spring:
  application:
    name: springcloud-config
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/Abor/SpringCloud_Study_Config.git

主启动类

@SpringBootApplication
@EnableConfigServer
public class Config_3344_App {
    public static void main(String[] args) {
        SpringApplication.run(Config_3344_App.class,args);
    }
}

修改hosts

127.0.0.1	config-3344.com

测试

  1. 启动3344项目
  2. 分别访问 http://config-3344.com:3344/application-dev.ymlhttp://config-3344.com:3344/application-test.yml ,两者的name属性是不一样的
    在这里插入图片描述
    在这里插入图片描述

配置读取规则

  1. /{application}-{profile}.yml
    • http://config-3344.com:3344/application-dev.yml
    • http://config-3344.com:3344/application-test.yml
    • http://config-3344.com:3344/application-xxx.yml(不存在的配置)
  2. /{application}/{profile}[/{label}]
    • http://config-3344.com:3344/application/dev/master
    • http://config-3344.com:3344/application/test/master
    • http://config-3344.com:3344/application/xxx/master
  3. /{label}/{application}-{profile}.yml
    • http://config-3344.com:3344/master/application-dev.yml
    • http://config-3344.com:3344/master/application-test.yml

客户端的配置

在github上创建配置文件

  • 注意不同的环境下(dev/test)端口号是不一样的,eureka server的地址也是不一样的
spring:
  profiles:
    active:
      - dev
---
server:
  port: 8201
spring:
  profiles: dev
  application:
    name: springcloud-config-client
eureka:
  client:
    service-url:
      defaultZone: http://eureka-dev.com:7001/eureka/
---
server:
  port: 8202
spring:
  profiles: test
  application:
    name: springcloud-config-client
eureka:
  client:
    service-url:
      defaultZone: http://eureka-test.com:7001/eureka/

构建Client项目

POM.XML

<!-- springCloud Config -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config</artifactId>
        </dependency>

application.yml

spring:
  application:
    name: springcloud-config-client

bootstrap.yml

  • 是系统级的资源配置项,优先级更高
  • application.yml是用户级的
  • springcloud会创建Bootstrap Context作为Application上下文
spring:
  cloud:
    config:
      name: springcloud-config-client
      profile: dev
      label: master
      uri: http://config-3344.com:3344
  • 注意 name属性就是文件的名称

修改hosts

127.0.0.1	client-config.com

添加一个controller便于测试

@RestController
public class ConfigClientRest {
    @Value("${spring.application.name}")
    private String applicationName;
    @Value("${eureka.client.service-url.defaultZone}")
    private String eurekaServers;
    @Value("${server.port}")
    private String port;

    @GetMapping("/config")
    public String config(){
        String str="applicationName:"+applicationName+"\t eurekaSevers:"+eurekaServers+"\t port:"+port;
        System.out.println(str);
        return str;
    }
}

测试

  1. 启动3344 Config Server
  2. 启动3355 Config Client,可以看到Client已经启动在了8201端口,说明成功的从Config Server获取到了配置信息
    在这里插入图片描述
  3. 访问http://client-config.com:8201/config,可以获得Controller中获取到的信息
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值