• springcloud之config配置中心


    目录

    config 简介

    springcloud config 项目是一个解决分布式系统的配置管理方案。它包含了 clientserver 两个部分,server 端提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client 端通过接口获取数据、并依据此数据初始化自己的应用

    目前 springcloud config 的使用主要是通过 git/svn 方式做一个配置中心,然后每个服务从其中获取自身配置所需的参数

    springcloud config 也支持本地参数配置的获取。如果使用本地存储的方式,在 application.propertiesapplication.yml 文件添加 spring.profiles.active=native 配置即可,它会从项目的 resources 路径下读取配置文件。如果是读取指定的配置文件,那么可以使用 spring.cloud.config.server.native.searchLocations = file:D:/properties/ 来读取

    config 作用

    springcloud config 是一个基于 http 协议的远程配置实现方式。通过统一的配置管理服务器进行配置管理,客户端通过 https 协议主动的拉取服务的的配置信息,完成配置获取

    简单一点的说就是:在分布式环境中,很多的服务都是集群部署,那就意味着这些集群部署的服务都需要相同的配置文件。所以,这时候就引入了 springcloud config 这个组件,使用该组件来进行众多的配置文件的统一管理。例如,我们在修改某一配置文件时,只需要在远程的 gitHub 等工具上面修改即可,不用多次的在众多的配置文件中来回繁琐的修改

    config 架构

    在这里插入图片描述
    springcloud config 分为服务端和客户端,服务端负责将本地 git 或者 svn 中存储的配置文件发布成 REST 风格的接口,客户端可以从服务端 REST 接口获取配置。但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过 POST 方法触发各自的 /refresh 接口

    config 配置中心的实现

    创建子模块项目 config 配置中心

    依然使用 上一篇 文章的项目,然后创建子模块项目 config 配置中心,如下

    在这里插入图片描述

    Maven 依赖

    消费方与提供方

    作为 config 配置中心的客户端,消费方与提供方都添加如下依赖

    
    
        org.springframework.cloud
    	spring-cloud-config-client
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    config 配置中心

    作为 config 配置中心的服务端,也是要注册进 eureka 注册中心的

    
    
    	org.springframework.cloud
    	spring-cloud-config-server
    
    
    
    	org.springframework.cloud
    	spring-cloud-starter-netflix-eureka-client
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置文件

    git 创建仓库

    使用 githubgitee 创建仓库,用于存放统一管理的配置文件

    在这里插入图片描述

    config 配置中心的 application.properties

    server.port=8070
    
    #注册进eureka的名称
    spring.application.name=eureka-client-config
    
    eureka.client.service-url.defaultZone=http://eureka7001:8761/eureka/
    eureka.instance.prefer-ip-address=true
    
    #gitee的仓库地址
    spring.cloud.config.server.git.uri=https://gitee.com/chaojiangcj/springcloud-learn-config.git
    spring.cloud.config.server.git.username=你的用户名
    spring.cloud.config.server.git.password=你的密码
    #配置仓库需要找的文件路径
    spring.cloud.config.server.git.search-paths=eureka-client-*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • spring.cloud.config.server.git.search-paths:需要访问仓库的子目录的话就配置
    • spring.cloud.config.server.git.urispring.cloud.config.server.git.searchPaths 同时配置的情况下,springcloud 会先在 searchPaths 中寻找,寻找不到再到 uri 中配置的库的根目录直接寻找

    consumer 消费方配置文件

    application.properties 的配置全部复制到 gitee 仓库的 eureka-client-consumer 文件夹下的 eureka-client-consumer-dev.properties 文件中,然后将 application.properties 的配置全部注释掉。再然后在 consumer 消费方创建配置文件 bootstrap.properties,内容如下

    spring.application.name=eureka-client-consumer
    
    spring.cloud.config.uri=http://127.0.0.1:8070
    spring.cloud.config.label=master
    spring.cloud.config.profile=dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • spring.cloud.config.uri:要访问 config 配置中心的 url
    • spring.cloud.config.label:指明要访问远程仓库的分支
    • spring.cloud.config.profile:指明要访问配置文件的环境,dev 开发环境配置文件,test 测试环境,prod 正式环境

    producer 消费方配置文件

    与上述方法一样,创建配置文件 bootstrap.properties,内容如下

    spring.application.name=eureka-client-producer
    
    #连接config服务端,才能获取配置
    spring.cloud.config.uri=http://localhost:8070
    #需要读取文件的所在分支
    spring.cloud.config.label=master
    spring.cloud.config.profile=dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    启动类

    只需要在 config 配置中心服务端添加注解 @EnableConfigServer,@EnableEurekaClient 即可

    @Slf4j
    @EnableConfigServer
    @EnableEurekaClient
    @SpringBootApplication
    public class AppConfig {
    
        public static void main(String[] args) {
            SpringApplication.run(AppConfig.class, args);
            log.info("------AppConfig Running------");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    测试

    http 访问 config 配置中心配置文件的 url 形式

    • /{application}/{profile}[/{label}]
    • /{application}-{profile}.yml
    • /{label}/{application}-{profile}.yml
    • /{application}-{profile}.properties
    • /{label}/{application}-{profile}.properties

    分别启动 eureka 注册中心 config,producer,consumer4 个项目,postman 测试如下

    在这里插入图片描述
    访问成功,获取到了提供方 producer 的配置信息。我们再次请求消费方 consumer 的接口,postman 测试结果如下

    在这里插入图片描述
    请求消费方 consumer 的接口成功,证明我们的配置都是正确的

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    基于 Rainbond 的 Pipeline(流水线)插件
    Ribbon框架原理及解析
    redis-高级篇
    uvm_config_db传递的参数类型统计
    y49.第三章 Kubernetes从入门到精通 -- k8s实战案例(二二)
    基于深度学习的目标检测和语义分割:机器视觉中的最新进展
    Python学习基础笔记二十七——内置函数
    一个好的聆听者
    pg-备份和还原
    Android系统签名介绍
  • 原文地址:https://blog.csdn.net/m0_67392811/article/details/126116307