第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备

一、配置问题分析及解决方案

1、问题分析

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第1张图片

        通过上图可知,每个微服务都有一个配置文件,目前只是11个微服务,就需要11个配置文件,若有上百个微服务呢?常规配置管理解决方案缺如下:

  • 硬编码(需要修改代码、繁琐、风险大)
  • properties 或者 yml(集群环境下需要替换和重启)
  • xml(重新打包和重启) 

2、解决方案

        使用Spring Cloud Config集中式配置管理中心,用来实现微服务系统中服务配置的统一管理。

        组件:统一配置中心服务端集中管理配置文件、统一配置中心客户端就是各微服务。

二、Spring Cloud Config 介绍

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第2张图片

1、Spring Cloud Config特性

  • 提供服务端和客户端支持(Spring Cloud Config Server 和 Spring Cloud Config Client)
  • 集中式管理分布式环境下的应用部署
  • 属性值的加密和解密(对称加密和非对称加密)
  • 基于 Spring 环境,无缝与 Spring 应用集成
  • 可用于任何语言开发的程序
  • 默认实现基于 Git ,可以进行版本管理

2、Spring Cloud Config作用    

  • Spring Cloud Config集中管理配置文件
  • 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release
  • 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取自己的配置
  • 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置
  • 将配置信息以REST接口的形式暴露

3、Spring Cloud Config 组件

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第3张图片

        Spring Cloud Config 在微服务分布式系统中,采用Server 服务端「Client 客户端」的组件方式来提供可扩展的配置服务。

    统一配置中心服务端

  • 是一个独立的微服务应用
  • 集中管理配置文件
  • 提供配置文件的存储
  • 以接口的形式将配置文件的内容提供出去; 

   统一配置中心客户端

  • 是各个微服务
  • 在启动的时候通过接口从配置中心获取和加载获取数据(配置信息)
  • 并依据此配置信息初始化自己的应用。

4、Spring Cloud Config 工作流程

       工作流程:微服务即config client 到 config Server 获取配置文件,config Server 到远端仓库获取配置。

       详细说明:统一配置中心服务端 config Server 也是一个微服务,这个微服务将来可能是个小集群,如果把所有配置都放到 config Server,一旦有版本改动,则整个小集群都需要改。因此,可以将所有微服务的配置统一放到 git 远程仓储上进行版本管理。config Server 只需要配置 git 远程仓储地址,在 config Server 启动时候,config Server 会到 git 远程仓储上进行拉取配置到本地仓储,启动后如果远程仓储的配置有改动,则 config Server 会自动检测到远程仓储的配置改动,进行自动拉取最新配置。其他微服务即config client 可以通过  config Server  获取所需配置信息。
因此需要搭建 git 远程仓储环境。

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第4张图片

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第5张图片

       注意: 统一配置中心服务端 config Server 读取远程仓储的配置的时候是有一定的规则,因此在远程仓储中的配置文件命名也要有一定的规则。

  • 远程仓储配置文件命名规则

       {application}-{profile}.yml/{application}-{profile}.properties

       如:order-dev.yml、order-test.yml、order-prod.yml

  • config Server 读取远程仓储的配置规则:    第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第6张图片

       其中 label 代表的是分支例如master分支,profile代表的是环境。

       如:http://localhost:7001/master/order-dev.yml
       如:http://localhost:7001/master/order-test.yml
       如:http://localhost:7001/order-dev.yml/master
       如:http://localhost:7001/order-test.yml/master

三、 配置中心使用

       配置中心使用步骤

  • 搭建统一配置服务中心服务端
  • 搭建统一配置服务中心客户端

1 搭建远程 git 仓库

1.1 新建远程仓储   

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第7张图片

1.2.创建远程仓储管理的配置文件 

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第8张图片

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第9张图片

 

    1.2 创建本仓库

第十二章 Spring Cloud Config 统一配置中心详解-介绍及环境准备_第10张图片

  • 2搭建统一配置服务中心

    2.1创建项目,引入依赖

       搭建统一配置服务中心服务端,创建项目,引入 统一服务配置中心 config 依赖。




    
        springcloudbase
        com.hwadee.springcloud2022
        0.0.1-SNAPSHOT
    
    4.0.0

    configServer7009

    
        
        
            org.springframework.cloud
            spring-cloud-config-server
        
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
    


    2.2 创建启动类 添加注解@EnableConfigServer

       创建启动类,添加 注解@EnableConfigServer 启动 config服务端 应用。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient// 启动 eureka 客户端
@EnableConfigServer// 启动 config 服务端
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

    2.3 配置 config Server 管理的远端仓储信息

       配置config Server服务端 要管理的远程仓库地址。

server:
  port: 7009
spring:
  application:
    name: config-service # 为当前商品服务命名
  cloud:
    config:
      server:
        git:
          #  username: xiashanzhu
          #  password: aa@86886830622
          uri: https://gitee.com/xiashanzhu/config-repo #要读取的远程仓库的配置文件的地址。
          default-label: master # 指定分支,不指定则默认master
eureka:
  client:
    service-url: # 配置服务注册地址,与 eureka-server 中暴露地址保持一致
      defaultZone: http://localhost:8000/eureka
  instance:
    prefer-ip-address: true  # 是否使用 IP 地址注册,默认 false
    # instance-id: product-service  # 实例 id,服务的唯一标识
    instance-id: ${spring.cloud.client.ip-address}:${server.port} # 如果想在控制页面看到服务地址与端口,可以将 instance-id 这样配置
    lease-renewal-interval-in-seconds: 5  # 发送心跳的间隔,单位秒,默认 30
    lease-expiration-duration-in-seconds: 10 # 续约到期时间,单位秒,默认90

    2.4 启动测试

    2.5 配置读取的规则

3搭建统一配置服务中心客户端

你可能感兴趣的:(springcloud,java,spring,cloud,spring)