Springcloud-Config部分学习笔记


视频学习地址:https://www.bilibili.com/video/BV18E411x7eT
源码地址:https://gitee.com/zhu_xinmiao/springcloud
spring cloud版本:H版
在这里插入图片描述
在这里插入图片描述

Config控制中心搭建

  1. 写pom

    主要新增以下依赖:

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

    热部署可根据自己的需求选择加或不加:

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
  2. 配yml

    server:
      port: 3344
    spring:
      application:
        name: cloud-config-center
      cloud:
        config:
          server:
            git:
              uri: https://gitee.com/zhu_xinmiao/Springcloud-Config.git #gitee上的git仓库名
              search-paths:
                - springcoud-config
          #读取分支
          label: master
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka
    

    gitee仓库里的配置文件如果不修改,直接填别人的地址也是可以访问的,但后续如果需要自己修改配置内容,则还是需要自己建一个仓库来修改。

  3. 建git仓库(主要是git方面的操作,不是这次学习的重点)

    我是fork了https://gitee.com/exclusiver/springcloud-config这位大佬写好的代码,然后本地仓库clone了一下,再上传到自己的gitee仓库。

    本地上传可以参考https://blog.csdn.net/sclibingqing/article/details/81179470。

    在上传的过程中,最后一步push我始终没有反应,研究很久也没弄懂,最后直接强制上传git push -u origin2 master -f

    origin2 是我自己改的名字,一般都是origin。

  4. 写主启动类

    @SpringBootApplication
    @EnableConfigServer
    public class ConfigCenterMain3344 {
        public static void main(String[] args) {
            SpringApplication.run(ConfigCenterMain3344.class);
        }
    }
    
  5. 修改hosts文件(也可不修改,访问时对应的域名用localhost替代即可)

    127.0.0.1 config-3344.com

  6. 访问http://config-3344.com:3344/master/config-dev.yml,得到配置文件中的信息即代表配置成功。

    • 另一种访问形式

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j9CLmMpy-1596513748268)(../Gateway/image-20200804092444603.png)]

    默认访问的分支是yml中配置的分支

    #读取分支
    label: master
    
    • 第三种访问形式,分支写在最后面,返回的是json字符串形式,需要自己解析。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PbVY1acG-1596513748272)(../Gateway/image-20200804092826315.png)]

  • 总结

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGxPUPPK-1596513748275)(../Gateway/image-20200804092913141.png)]

Config客户端配置和调试

  1. 写pom,新引入以下依赖,注意没有server

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    
  2. 写yml,这里用到了bootstrap.yml

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f0GMx7L6-1596513748276)(../Gateway/image-20200804104342114.png)]

    server:
      port: 3355
    
    spring:
      application:
        name: config-client
      cloud:
        config:
          label: master
          name: config
          profile: dev
          uri: http://localhost:3344
          # 上述四个综合将会拼成http://config-3344.com:3344/master/config-dev.yml
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka
    
  3. 主启动类

    @SpringBootApplication
    @EnableEurekaClient
    public class ConfigClientMain3355 {
        public static void main(String[] args) {
            SpringApplication.run(ConfigClientMain3355.class);
        }
    }
    
  4. controller类,去访问yml配置文件中的内容,去读取3344

    @RestController
    public class ConfigClientController {
        @Value("${config.info}")
        private String configInfo;
    
        @GetMapping("/configInfo")
        public String getConfigInfo(){
            return configInfo;
        }
    }
    
  5. 测试http://localhost:3355/configInfo,看是否能得到对应的3344gitee中的内容。

  6. 但这还存在着以下问题:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VBqEGi00-1596513748278)(../Gateway/image-20200804113756377.png)]

Config动态刷新

  1. 加入以下依赖,这个依赖表示我这个微服务能被别人监控

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. 修改yml,暴露监控端口

    # 暴露监控端点
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    
  3. 业务类加上注解@RefreshScope,它具备刷新功能

  4. gitee上修改version后发现不重启3355的情况下仍然没有刷新,是因为这里需要运维发一下post请求去刷新一下客户端,这时不用重启微服务就能动态刷新,模仿运维的测试命令如下:

    • 打开cmd,输入curl -X POST “http://localhost:3355/actuator/refresh”

    这时再去刷新3355,在没有重启的情况下,版本也能对应gitee中的version进行刷新。

总结

总的来说,config为微服务提供了一个外部配置的渠道,而不用频繁的修改yml。但是尽管引入了动态刷新方法,当有多个配置客户端要调取3344时,那就需要多次发送post请求,并且,如果利用编写脚本循环来发送,对于精确选择部分客户端更新有很大的困难。

这就引出了下一部分要学习的内容,bus消息总线

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值