配置中心

实战案列

git上搭建配置环境

创建yml配置文件

在springcloud01工程下新建config文件夹,并将sp02-itemservice、sp03-userservice、sp04-orderservice中的application.yml文件复制一份并改名为放入config文件夹。

springcloud 配置sqlserver_配置文件

新增yml配置

三个 yml 文件中都新增下面配置,防止配置中心的配置,覆盖本地命令参数

spring:
  cloud:
    config:
      override-none: true

springcloud 配置sqlserver_cloud native_02

创建Git本地仓库

springcloud 配置sqlserver_云原生_03

选择springcloud01工程创建本地仓库

springcloud 配置sqlserver_配置文件_04


将工程向本地仓库上传(commit 提交本地仓库,ctrl+k,右上角对勾按钮,double shift搜索commit)

springcloud 配置sqlserver_云原生_05

创建Getee远程仓库

gitee上创建一个远程仓库,命名为SpringCloudDemo

springcloud 配置sqlserver_配置文件_06

复制远程仓库的地址

springcloud 配置sqlserver_spring_07

本地仓库上传Getee

将本地仓库的工程上传至gitee上(ctrl+shift+k,右上角向上箭头按钮,double shift搜索push)

springcloud 配置sqlserver_云原生_08


springcloud 配置sqlserver_spring cloud_09

上传成功

springcloud 配置sqlserver_cloud native_10

搭建配置中心

在 springcloud1 下新建模块 sp09-config

springcloud 配置sqlserver_spring_11

pom.xml

添加依赖

  • eureka client
  • config server
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http:///POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http:///POM/4.0.0 https:///xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud01</artifactId>
        <groupId>cn.tedu</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.tedu</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>
application.yml

添加访问远程仓库配置文件的路径

  • 仓库的地址
  • 存放配置文件的文件夹路径
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/deven-lee/spring-cloud-dome
          search-paths: /config

server:
  port: 6001

eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
主程序

添加@EnableConfigServer注解

@EnableConfigServer
@SpringBootApplication
public class Sp09ConfigApplication {

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

}

启动测试

启动 sp09-config 服务,访问eureka,检查config 服务是否正常运行

http://eureka1:2001/

springcloud 配置sqlserver_云原生_12

分别访问配置中心的配置文件,查看信息

http://localhost:6001/item-service/dev
http://localhost:6001/item-service/dev
http://localhost:6001/item-service/dev

springcloud 配置sqlserver_配置文件_13

配置中心的客户端

pom.xml

在02、03、04 模块中添加 config client 依赖

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

把 02、03、04模块的的配置文件全部注释掉,并创建 bootstrap.yml 配置文件。

springcloud 配置sqlserver_云原生_14

在 02、03、04 bootstrap.yml 文件中分别写入下面配置,根据自己的服务名更改name等信息。

添加配置:

  • eureka地址
  • 指定配置中心的服务id:CONFIG-SERVER
  • 指定下载的配置文件和 profile
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: config-server
      name: item-service
      profile: dev

启动服务

当02、03、04服务能成功启动,并显示下面日志,说明连接配置中心成功。

springcloud 配置sqlserver_配置文件_15

springcloud 配置sqlserver_spring_16

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

springcloud 配置sqlserver_配置文件_17


post 请求消息总线刷新端点,服务器会向 rabbitmq 发布刷新消息,接收到消息的微服务会向配置服务器请求刷新配置信息

需要动态更新配置的微服务,添加 spring cloud bus 依赖,并添加 rabbitmq 连接信息

修改以下微服务

sp02-item-service
sp03-user-service
sp04-order-service
sp11-zuul
sp12-config
pom.xml 添加 spring cloud bus 依赖
使用 STS 编辑起步依赖,分别添加 bus、rabbitmq 依赖

management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

postman 向 bus-refresh 刷新端点发送 post 请求
http://localhost:6001/actuator/bus-refresh