当前位置: 首页 > article >正文

nacos 笔记2-配置中心

本文属于b站图灵课堂springcloud笔记系列。讲得好还不要钱,值得推荐。

一 多环境profile 配置

Nacos profile 是用来在 Nacos 中区分不同环境的配置,比如开发环境、测试环境、生产环境等。在 Nacos 中,可以为不同的 profile 配置不同的配置信息。

1测试准备

controller增加一个测试方法,增加一个配置属性,我举例就用了env字符串

    @Value("${env}")
    private String env;

    @GetMapping(value = "/get1")
    public String test(@RequestParam("userId") String userId) {
        return "服务提供者:" + userId+",env:"+env;
    }

修改application.yml

增加一行配置:env: local

重启服务后,就是本地的值。

2 profile 配置

nacos 新增两个配置文件,用于区分环境

dev就配置了dev,prod 配置了prod.

修改application.yml,新增spring.profiles.active

spring:
  application:
    name: tlmall-order01
  profiles:
    active: dev
  • spring.profiles.active即为当前环境对应的profile。测试接口

通常会在启动脚本加入参数,-Dspring.profiles.active=prod ,这样就能灵活根据环境进行切换。

二 namespace隔离

官网对于namespace介绍

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

可以测试下。nacos新建namespce:

nacos 配置管理导入对应的dataID

里面的值加以区分改为bohu-prod

修改application.yml,增加namespce选项。

重启后测试。可见 namespace 配置生效了。

三 业务GROUP隔离

   Nacos提供了group进行隔离,官方介绍:

Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

就是常用的数据库、mq这种公共组件,可以针对不同服务进行不同配置。

新建两个yml,其中dataid 相同,GROUP 不同。

其中bohu_group配置了66,defalut配置了50

 @Value("${min-idle}")
    private String minIdle;

    @GetMapping(value = "/getMinIdle")
    public String getMinIdle() {
        return minIdle;
    }

修改配置文件:application.yml,指定group, 引入新的配置文件 

四 动态刷新:

spring-cloud-starter-alibaba-nacos-config 支持动态刷新,会把值推送到Environment。

可|以从Environment获取到配置中心更改的值,但是OrderController(Bean对象)中@Value修饰的值没有变化

使用注解:@RefreshScope

注意:使用不当可能会导致@Scheduled定时任务失效。

原因分析:

@RefreshScope修饰的bean的属性发生变更后,会从缓存中清除。此时没有这个bean,定时任务当然也就不生效了。

解决办法:

老师推荐使用 RefreshScopeRefreshedEvent 事件监听事件

XXcontroller implements ApplicationListener<RefreshScopeRefreshedEvent>

还可以使用Environment获取。或者想办法吧定时任务跟配置拆出来。


http://www.kler.cn/a/464901.html

相关文章:

  • 使用CSS 和 JavaScript 实现鼠标悬停时图片放大、缩小和抖动
  • Linux驱动开发学习准备(Linux内核源码添加到工程-Workspace)
  • SpringCloud源码分析-Gateway
  • Elasticsearch DSL版
  • 从企业级 RAG 到 AI Assistant,阿里云 Elasticsearch AI 搜索技术实践
  • C语言面的向对象编程(OOP)
  • 高效管理deepin和Docker中的后台任务
  • 如何查看docker默认的网段的4种办法
  • [python SQLAlchemy数据库操作入门]-16.CTE:简化你的复杂查询
  • 计算机网络•自顶向下方法:路由选路算法
  • neo4j学习笔记
  • Kali Linux 和Xshell的安装和使用
  • java04 1个简单程序/ 输入输出/ 方法(子函数)/ 数组
  • Windows注册表的HKEY_CLASSES_ROOT是HKEY_LOCAL_MACHINE\SOFTWARE\Classes合并HKEY_CURRENT_USER\Software\Classes
  • HCIE-day9-OSPF2
  • 五年制物联网专业智能家居实训室建设方案
  • MySQL_增删改查基础
  • Webpack、Vite区别知多少?
  • 高等数学学习笔记 ☞ 数列与数列的极限
  • GXUOJ-算法-补题:22级《算法设计与分析》第一次课堂练习