SpringCloud Config分布式配置中心_学习笔记

分布式系统面临的问题:

微服务意味着将单体的应用拆分成一个个子服务,系统中会出现大量的服务.由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的.
SpringCloud提供了ConfigServer来解决这个问题.不然,一套服务室系统中可能会有上百套配置文件…

SpringCloud Config

在这里插入图片描述

Config服务端配置与测试

1.在GitHub上新建一个名为springcloud-config的新Repository
2.获取git地址:https://github.com/binhaizhijun/springcloud-config.git
3.新建Module作为Cloud的配置中心模块
4.在pom中添加依赖,因为需要注册到Eureka服务中心,记得需要添加Eureka的相关依赖

  <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>

5.在yml中填写配置

server:
  port: 3344
spring:
  application:
    name: cloud-config-center #注册进Eureka服务器的服务名
  cloud:
    config:
      server:
        git:
          uri: https://github.com/binhaizhijun/springcloud-config.git
        ###搜索目录
          search-paths:
            - springcloud-config
      ####读取分支
      label: master
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka

6.写主启动类

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

7.在windows下修改hosts文件.增加映射
8.测试通过Config微服务是否可以从GitHub上获取配置内容

配置读取规则

在这里插入图片描述

Config客户端配置与测试

1…新建cloud-config-client-3355
2.在pom中添加config客户端依赖,注意与服务端的依赖有区别

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

3.写配置文件:bootstrap.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  #配置中心地址

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka
   # fetch-registry: false
    #register-with-eureka: false


④controller

@RestController
public class ConfigClientController {

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

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

⑤主启动类

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

⑤访问localhost:3355/configInfo

分布式配置动态刷新问题

在远程(GitHub)上修改了配置文件后,Config配置中心也能及时更新,但是ConfigClient却还是之前的数据,没有及时更新新数据.如果要更新的话不得不需要重新启动,这样势必会很麻烦…
①在pom中引入actuator监控依赖

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

一般这个依赖除了网关不添加,其他的微服务基本都要引入.
②修改yml文件,暴露监控端点

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

③在业务类上添加刷新功能的注解@RefreshScope
④发送Post请求刷新3355(Client)
在这里插入图片描述
以上是手动刷新,如果有一百台也可以用批量脚本的方式执行刷新;
下面研究广播方式–一次刷新,处处生效
SpringCloud Bus 消息总线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值