你必须会的微服务之Config配置中心

·  阅读 47

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

微服务已经成当前各大大厂追求的主流技术架构,学习微服务前景非常可观,而SpringCloud已成为主流微服务技术栈。本系列文章将以SpringCloud技术栈进行精讲,全方位剖析讲解SpringCloud技术栈在微服务场景下的实战应用,可以点赞关注,后续持续为大家更新。

Spring Cloud Config

知识索引

  • Spring Cloud Config简介
  • 案例演示

1 Spring Cloud Config简介

分布式系统中,由于服务数量非常多,配置文件分散在不同微服务项目中,管理极其不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持配置文件放在远程仓库Git(GitHub码云)。配置中心本质上是一个微服务,同样需要注册到注册中心

2 案例演示

2.1 创建远程仓库

我们在码云创建一个git仓库用来存储配置信息,真实场景下需搭建git私服

image-20220320185155261

image-20220320185213915

2.2 创建配置文件

在仓库中新建文件命名为config_dev.yml并将gateway_demo的配置文件内容拷贝进去

image-20220320193530440

2.3 搭建配置中心微服务

spring_cloud_demos项目中新增spring_cloud_config_demo模块

2.3.1 添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
复制代码

2.3.2 启动类

/**
 * @Author: yang
 */
@EnableConfigServer
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class,args);
    }
}
复制代码

代码说明:

@EnableDiscoveryClient:由于其他服务需要通过注册中心拉取配置中心服务的配置信息,所以配置中心服务必须注册到注册中心
@EnableConfigServer:开启配置中心服务端
复制代码

2.3.3 配置文件

server:
  port: 1500 # 端口号
spring:
  application:
    name: config-server # 应用名
  cloud:
    config:
      server:
        git:
          # 配置gitee的仓库地址
          uri: https://gitee.com/itmentu/spring_cloud_config_demo.git
    consul:
      host: 192.168.184.128
      port: 8500
      discovery:
        service-name: ${spring.application.name}
        register: true
# com.itheima 包下的日志级别都为Debug
logging:
  level:
    com.itmentu: debug
复制代码

2.3.4 启动测试

访问

http://localhost:1500/config_dev/master
复制代码

可以看到如下结果,说明配置成功

image-20220320194025537

2.4 从配置中心拉取配置信息

接下来改造gateway_demo实现从配置中心拉取配置信息

2.4.1 添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
复制代码

2.4.2 配置文件

新增bootstrap.yml配置文件并删除原本的applicaiton.yml,内容如下:

server:
  port: 8502
# 基本应用信息
spring:
  cloud:
    consul:
      host: 192.168.184.128
      port: 8500
      discovery:
        service-name: ${spring.application.name}
        register: false
    config:
      name: config # 与远程仓库中的配置文件的application保持一致,{application}-{profile}.yml
      profile: dev # 远程仓库中的配置文件的profile保持一致
      label: master # 远程仓库中的版本保持一致
      discovery:
        enabled: true # 使用配置中心
        service-id: config-server # 配置中心服务id
复制代码

代码说明:

1:bootstrap.yml文件是SpringBoot的默认配置文件,而且其加载时间相比于application.yml更早。
2:bootstrap.yml和application.yml都是默认配置文件,但定位不同
2.1:bootstrap.yml相当于项目启动的引导文件
2.2:application.yml文件是微服务的常规配置参数,变化比较频繁
3:搭配spring-cloud-config使application.yml的配置可以动态替换。
4:由于拉取配置文件需要通过注册中心拉取,所以注册中心的配置必须在这里
复制代码

2.4.3 测试

启动gateway_demo,访问

http://localhost:8502/api/consumer/hello-feign
复制代码

结果

image-20220320194153295

说明配置中心生效

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改