SpringCloud之Config配置中心

Config简介

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

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

SpringCloud Config 也支持本地参数配置的获取。如果使用本地存储的方式,在 application.properties 文件添加 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 配置中心实现方式

本文在上一篇的基础上进行的。

1.创建config-server模块

在这里插入图片描述

2.创建仓库

2.1:使用 github 或 gitee 创建仓库,用于存放统一管理的配置文件
在这里插入图片描述
2.2:创建两个文件夹,分别存放不同服务配置文件
在这里插入图片描述
2.3:在eureka-consumer-server目录创建consumer-server-dev.yml文件

在这里插入图片描述

2.4:在eureka-provider-server目录创建consumer-provider-dev.yml文件

在这里插入图片描述
Spring Cloud Config 有它的一套访问规则,我们通过这套规则在浏览器上直接访问就可以。

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
{application} 就是应用名称,对应到配置文件上来,就是配置文件的名称部分,例如我上面创建的配置文件。

{profile} 就是配置文件的版本,我们的项目有开发版本、测试环境版本、生产环境版本,对应到配置文件上来就是以 application-{profile}.yml 加以区分,例如application-dev.ymlapplication-test.ymlapplication-prod.yml

{label} 表示git分支,默认是 master 分支,如果项目是以分支做区分也是可以的,那就可以通过不同的 label 来控制访问不同的配置文件了。

3.配置confing-server服务

3.1:修改pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud-demo</artifactId>
        <groupId>com.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.demo.config</groupId>
    <artifactId>config-server</artifactId>


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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    </dependencies>



</project>

3.2:创建application.yml文件:

server.port=8070

#注册进eureka的名称
spring.application.name=config-server

eureka.client.service-url.defaultZone=http://localhost:8080/eureka
eureka.instance.prefer-ip-address=true

#gitee的仓库地址
spring.cloud.config.server.git.uri=https://gitee.com/lianaozhe/springcloud-config.git
spring.cloud.config.server.git.username=123456
spring.cloud.config.server.git.password=123456
#配置仓库需要找的文件路径
spring.cloud.config.server.git.search-paths=eureka-*

#通过Bus组件连接到mq服务
#mq主机
spring.rabbitmq.host=81.142.27.137
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/

#启动时当远端配置还没有拉取完整时,项目启动过程中的所有失败都是允许的
spring.cloud.config.fail-fast=true

#开启所有web端点暴露
management.endpoints.web.exposure.include=*

3.3:添加启动类:

package com.demo.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
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConfigServerApplication.class, args);
	}
}

4.配置消费者

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

spring.application.name=consumer-server

spring.cloud.config.uri=http://127.0.0.1:8070
spring.cloud.config.label=master
spring.cloud.config.profile=dev

5.配置提供者

application.yml的配置全部复制到 gitee 仓库的 eureka-provider-server 文件夹下的 eureka-provider-dev.yml文件中,然后将 application.yml的配置全部注释掉。再然后在 provider 提供方创建配置文件 bootstrap.properties,内容如下:

spring.application.name=provider-server

spring.cloud.config.uri=http://127.0.0.1:8070
spring.cloud.config.label=master
spring.cloud.config.profile=dev

6.测试

重启consumer-server,provider-server,config-server服务

浏览器访问:http://127.0.0.1:8070/provider-server-dev.yml

在这里插入图片描述
可以看到,获取到了提供方 provider-server的配置信息

然后访问 provider-server服务的接口:
http://localhost:8081/provider/selectUserById/1

在这里插入图片描述
请求成功,证明我们的配置都是正确的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值