一、服务配置Config的概述

在这里插入图片描述
在这里插入图片描述

  • 随着微服务数量的增大,你不能一个一个地去改配置,你要一处修改处处生效。
  • SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。

二、Config服务端的搭建

1.克隆Git上的仓库

1.在GitHub上新建一个名为springcloud-config的新Repository

在这里插入图片描述

2.由上一步获得刚新建的git地址
https://gitee.com/Redhur/springcloud-config.git

3.本地硬盘目录上新建git仓库并clone

在这里插入图片描述
在这里插入图片描述

2.新建3344端口

1.新建Module

在这里插入图片描述

2.改pom

在这里插入图片描述

    <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-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


3.写yml

在这里插入图片描述
在这里插入图片描述

4.主启动类

@SpringBootApplication
@EnableConfigServer
public class ConfigCenterMain3344
{
    public static void main(String[] args) {
            SpringApplication.run(ConfigCenterMain3344.class, args);
    }
}

4.windows下修改hosts文件,增加映射
跟eureka一样,作为所有微服务的总代理都需要修改host文件

在这里插入图片描述

3.测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

成功实现了用SpringCloud Config通过GitHub获取配置信息在这里插入图片描述

4.读取配置的方式

在这里插入图片描述

三、Config客户端

1.Config客户端配置

在这里插入图片描述
1.建Module

在这里插入图片描述

2.改pom

在这里插入图片描述

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</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-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


3.写yml

这里是引用
在这里插入图片描述

server:
  port: 3355

spring:
  application:
    name: config-client
  cloud:
    #Config客户端配置
    config:
      label: master #分支名称
      name: config #配置文件名称
      profile: dev #读取后缀名称   上述3个综合:master分支上config-dev.yml的配置文件被读取http://config-3344.com:3344/master/config-dev.yml
      uri: http://localhost:3344 #配置中心地址,当你访问3355时我会去找localhostt:3344/master/config-dev.yml

#服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka

4.主启动类

@EnableEurekaClient
@SpringBootApplication
public class ConfigClientMain3355
{
    public static void main(String[] args)
    {
        SpringApplication.run(ConfigClientMain3355.class,args);
    }
}

5.业务类

@RestController
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo() 
    {
        return configInfo;
    }
}

6.测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.小问题

在这里插入图片描述

2.Config动态刷新

1.修改3355的pom

在这里插入图片描述

2.修改3355的yml

server:
  port: 3355

spring:
  application:
    name: config-client
  cloud:
    #Config客户端配置
    config:
      label: master #分支名称
      name: config #配置文件名称
      profile: dev #读取后缀名称   上述3个综合:master分支上config-dev.yml的配置文件被读取
      uri: http://localhost:3344 #配置中心地址k

#服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka
# 暴露监控端点(这样才能被监控到)
management:
  endpoints:
    web:
      exposure:
        include: "*"

3.改写业务类

在这里插入图片描述

5.当运维人员修改git配置后,运维人员必须发送一次post请求来刷新3355

curl -X POST "http://localhost:3355/actuator/refresh"

6.测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.问题

在这里插入图片描述
请查看“消息总线—Bus”

四、消息总线Bus概述

1.消息总线Bus概述

  • Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。
  • Spring Cloud Bus整合了Java的事件处理机制和消息中间件的功能。
  • Spring Clud Bus目前只支持RabbitMQ和Kafka。

在这里插入图片描述
在这里插入图片描述

2.两种广播方式

在这里插入图片描述
在这里插入图片描述

你一定要分清楚,是bus发给服务端config-server然后由服务端config-server通知给全局呢 还是 bus通知一个客户端然后由该客户端传播出去。但是我们使用的是bus发给服务端config-server然后由服务端config-server通知给全局,理由如下:
在这里插入图片描述

五、准备工作

1.启动rabbitmq

①到Linux环境下运行"cd /root"
在这里插入图片描述
②访问192.168.56.103:15672,登录名admin,密码111111,

2.新建3366客户端

1.新建Module

在这里插入图片描述

2.改pom

   <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</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-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.写yml

server:
  port: 3366

spring:
  application:
    name: config-client
  cloud:
    #Config客户端配置
    config:
      label: master #分支名称
      name: config #配置文件名称
      profile: dev #读取后缀名称   上述3个综合:master分支上config-dev.yml的配置文件被读取http://config-3344.com:3344/master/config-dev.yml
      uri: http://localhost:3344 #配置中心地址

#服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka

# 暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

4.主启动类

@EnableEurekaClient
@SpringBootApplication
public class ConfigClientMain3366
{
    public static void main(String[] args)
    {
        SpringApplication.run(ConfigClientMain3366.class,args);
    }
}

5.业务类Controller

@RestController
@RefreshScope
public class ConfigClientController
{
    @Value("${server.port}")
    private String serverPort;

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String configInfo()
    {
        return "serverPort: "+serverPort+"\t\n\n configInfo: "+configInfo;
    }

}

六、完成SpringCloud Bus动态刷新全局广播

1.技术选型

在这里插入图片描述
由3344来通知3355和3366

2.给服务端3344添加消息总线支持

1.修改3344的pom文件

这里是引用

2.修改3344的yml文件

在这里插入图片描述

3.给客户端3355添加消息总线支持

1.修改3355的pom

这里是引用

2.修改3355的yml

在这里插入图片描述

4.给客户端3366添加消息总线支持

1.修改3366的pom

这里是引用

2.修改3366的yml

在这里插入图片描述

5.测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、Bus动态刷新的定点通知

有的时候我们没必要让所有客户端都动态刷新,只想要定点通知,只通知3355不通知3366

公式:http://localhost:配置中心的端口号/actuator/bus-refresh/{destination}
这样/bus/refresh请求不再发送到具体的服务实例上,而是发给config server并通过destination参数类指定需要更新配置的服务或实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐