【Spring Cloud】05--Config配置中心

一,基本介绍

在这里插入图片描述
yml 配置文件保存到git服务器,例如 github.com 或 gitee.com
微服务启动时,从服务器获取配置文件

二,准备工作

1)在父工程springcloud1下新建文件夹 config
在这里插入图片描述
2)把2,3,4三个项目的配置文件,复制到config目录,并修改名称
在这里插入图片描述
注:一般运行配置用dev,测试用test,生产用prod,官方文档这么写的,当然,取名没有要求,这样会显得更专业些。
3)分别在三个配置文件中添加配置
默认情况下,git仓库中的命令会覆盖本地命令参数,端口这样的参数,不可以被随便修改,所以设置不覆盖。

cloud:
    config:
      override-none: true

在这里插入图片描述
注意是在spring下
4)创建仓库
双击 shift
在这里插入图片描述
可以选用父工程作为仓库
在这里插入图片描述
5)提交文件
在这里插入图片描述
没创建远程仓库的话,创建远程仓库。
push
在这里插入图片描述

三,搭建配置中心服务器

1.新建模块

在这里插入图片描述
添加eureka client,config server依赖
在这里插入图片描述

2.修改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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud1</artifactId>
        <groupId>com.drhj</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.drhj</groupId>
    <artifactId>sp09-config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>sp09-config</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

3.配置application.yml

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/ronghuading/springcloud1
          search-paths: /config #/子目录/子目录/子目录 不用写/tree/master
server:
  port: 6001
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka

如果起不来,把注解删除了
注意,这里的uri是仓库地址,search-paths是config所在仓库的子目录

4.启动类添加@EnableConfigServer

package com.drhj.sp09;

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

@EnableConfigServer
@SpringBootApplication
public class Sp09ConfigApplication {

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

}

5.测试

1)启动eureka服务器,检查是否又config-server 的注册信息
http://eureka1:2001/
在这里插入图片描述
2)访问配置中心的配置文件
http://localhost:6001/item-service/dev
在这里插入图片描述
http://localhost:6001/user-service/dev
在这里插入图片描述
http://localhost:6001/order-service/dev
在这里插入图片描述

四,配置中心客户端

1.注销服务原有配置

将item-service,user-service,order-service的application.yml中的所有配置都注销

2.添加config依赖

在三个服务的pom.xml中添加如下

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

3.配置bootstrap.yml

创建bootstrap.yml文件,这里以user-service为例,因为user服务中添加用户信息的原因,所以没有获取配置信息启动不了

eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
spring:
  cloud:
    config:
      discovery:
        enabled: true #从注册中心发现配置中心的地址
        service-id: config-server
      name: user-service
      profile: dev

item-serice,order-service同样的配置,改变 对应的name

4,重启服务

重启user-service,获取到仓库配置,启动成功
在这里插入图片描述
在这里插入图片描述

五,config bus + rabbitmq 消息总线配置刷新

在这里插入图片描述
post 请求消息总线刷新端点,服务器会向 rabbitmq 发布刷新消息,接收到消息的微服务会向配置服务器请求刷新配置信息
Bus 是spring cloud config 提供的一个辅助完成消息收发操作的组件以及配置的刷新
RabbitMQ详见:RabbitMQ基础运用

1.准备工作

在配置项目 config中添加 actuaor 依赖

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

在需要刷新配置的项目即这里的 item-service,user-service,order-service和配置项目config中添加 Bus, RabbitMQ, binder-rabbit 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>

在配置项目config的yml文件中添加配置

1)暴露 bus-refrush: m.e.w.e.i=bus-refrush
2)rabbitmq连接

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/ronghuading/springcloud1
          search-paths: /config
  rabbitmq:
    host: 192.168.64.140
    port: 5672
    username: admin
    password: admin
    virtual-host: drhj #如果创建了虚拟空间,则添加,注意加斜杠,使用默认的无需添加
server:
  port: 6001
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

2.配置刷新

修改config目录的三个文件并提交

1)添加rabbitmq的连接
在这里插入图片描述

2)提交推送到远程仓库
在这里插入图片描述
在这里插入图片描述

启动项目测试

注意启动顺序是
eureka -> config -> item,user,order -> zuul
正常启动后,清空控制台信息
使用postman 访问 http://localhost:6001/actuator/bus-refresh 注意要把所有参数,请求头等等都清空,最好创建新的测试
在这里插入图片描述
查看控制台
在这里插入图片描述
出现如上表示刷新成功
想只刷新某一个服务,添加子路径即可,如:http://localhost:6001/actuator/bus-refresh/item-service
在这里插入图片描述
在这里插入图片描述

3.刷新注入

业务描述

在用户模块中,由于是测试,所以并没有连接数据库,而是在application.yml中手动添加一些用户数据,在需要查询数据时注入即可
在这里插入图片描述
在这里插入图片描述
现在我需要添加用户,或者修改用户信息,我们需要在配置中心进行相关操作。

配置修改

1)在config中的对应配置添加信息,如下
在这里插入图片描述

2)提交远程仓库
在这里插入图片描述
3)刷新配置
在这里插入图片描述
4)查看效果
在这里插入图片描述
按道理说,我们配置中有的用户数据,出现的时如上的现象,然而

在这里插入图片描述
刚添加的用户信息并没有注入到对象中。

@RefreshScope

该注解是把刷新的配置信息,重新注入到对象中
在需要重新注入配置数据的对象上添加这个注解,刷新的配置才能重新注入到对象中;
如果没有这个注解,即使刷新到新配置,也不会重新向对象注入
1)在需要注入的类上添加注解
在这里插入图片描述
2)重启修改的服务
3)刷新配置
在这里插入图片描述
4)查看效果
在这里插入图片描述
注入刷新成功!

4.总结

所以要实现配置的更改,只需要在存放yml文件的config中对对应的yml文件进行修改,然后上传git远程仓库,通过使用rabbitmq,手动bus刷新,即可完成配置的修改。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值