• SpringCloud学习笔记(三)


    Nacos配置管理

    统一配置管理

    1. 配置更改更新
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MnXbKnQe-1660791087286)(C:\Users\everybody\AppData\Roaming\Typora\typora-user-images\image-20220722152246919.png)]

      第一步:在Nacos中添加配置信息
      第二部:在弹出表单中填写配置信息(不要填写application中所有配置)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bg886qIb-1660791087287)(C:\Users\everybody\AppData\Roaming\Typora\typora-user-images\image-20220722152257805.png)]

    微服务配置拉取

    1、引入Nacos的配置依赖

    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-config
    
    
    • 1
    • 2
    • 3
    • 4

    2、在userservice的resource目录中添加一个bootstrap.yml文件,优先级高于application.yml

    spring:
      application:
        name: userservice
      profiles:
        active: dev
      cloud:
        nacos:
          server-addr: 121.196.41.104:8848
          config:
            file-extension: yaml   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    总结
    将配置交给Nacos管理的步骤

    1. 在Nacos中添加配置文件
    2. 在微服务中引入nacos的config依赖
    3. 在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件。

    配置热更新

    配置自动刷新
    Nacos中配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现:

    • 方式一:在@Value注入新的变量所在类上添加注解@RefreshScope
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kQQntYsb-1660791087287)(C:\Users\everybody\AppData\Roaming\Typora\typora-user-images\image-20220722152323527.png)]

    • 方式二:使用@ConfigurationProperties注解
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-obiwuteP-1660791087288)(C:\Users\everybody\AppData\Roaming\Typora\typora-user-images\image-20220722152331656.png)]

    注意事项:

    • 不是所有配置都适合放到配置中i性能,维护起来比较麻烦
    • 建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置

    多环境配置共享

    微服务启动时会从nacos读取多个配置文件:

    • [spring.aplication.name]-[spring.profiles.active].yaml, 例如:userservice-dev.yaml
      • 名称-环境.后缀
    • [spring.application.name].yame , 例如:userservice.yaml
      • 微服务名称.后缀
        无论profile如何变化,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件

    多种配置优先级
    服务名-profile.yaml(带环境配置) > 服务名称(共享配置) > 本地配置
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z7dzf2tR-1660791087288)(C:\Users\everybody\AppData\Roaming\Typora\typora-user-images\image-20220722152345131.png)]

    总结
    微服务会从nacos读取的配置之文件

    • [服务名]-[spring.profile.active].yaml 环境配置
    • [服务名].yaml,默认配置,多环境共享
      优先级:
      服务名-profile.yaml(带环境配置) > 服务名称(共享配置) > 本地配置

    Feign远程调用

    基于Feign 远程调用

    RestTemplate方式调用存在的问题
    String url = "http://userservice/user/" + order.getUserId();
    User user = restTemplate.getForObject(url, User.class);
    
    • 1
    • 2

    存在一下问题:

    • 代码可读性差,编程体验不统一
    • 参数复杂URL难以维护

    Feign介绍
    Feign是一个声明式的http客户端,作用就是帮助我们优雅的实现http请求的发送,解决上面的问题

    定义和使用feign客户端
    1、引入依赖

  • 相关阅读:
    仿牛客网项目---Elasticsearch分布式搜索引擎
    《Python3 网络爬虫开发实战》Session 和 Cookie
    jvs-rules(规则引擎)和jvs智能bi(自助式数据分析)9.22更新内容
    java开发优秀编程习惯,大佬的必经之路
    什么是Vue.js的响应式系统(reactivity system)?如何实现数据的双向绑定?
    pandas 100题
    微信小程序在TS模板下引入TDesign组件
    【深度学习】——损失函数(均方差损失和交叉熵损失)
    多对一和一对多的处理P21,P22
    腾讯云88,阿里云99,现在都这么卷了吗?!
  • 原文地址:https://blog.csdn.net/qq_17514043/article/details/126401397