在这里插入图片描述

前言

上一章简单了解了Nacos配置中心的基本用法,这一章将开始Nacos配置中心的实战案例。

配置中心 - 数据隔离

在这里插入图片描述
在Nacos配置中心里面一个命名空间对应多个组,一个组对应多个Data Id
在这里插入图片描述
使用Dataid区分多套配置
使用分组区分多种微服务
使用Namespace(名称空间)区分多套环境

示例

1.先创建命名空间

在这里插入图片描述
在这里插入图片描述
创建好命名空间后,在配置列表中也可以看到命名空间
在这里插入图片描述

2.创建配置

点击创建配置
order组通用配置common.properties,填写好点击发布

order.timeout=1min
order.auto-confirm=1h

在这里插入图片描述
order组数据库配置database.properties

order.db-url=order_dev

在这里插入图片描述

3.克隆配置

创建完成后,勾选需要克隆的配置点击克隆
在这里插入图片描述
选择需要克隆的组
在这里插入图片描述
克隆完成后点击test组修改需要的配置属性值
在这里插入图片描述

4.动态切换环境

在nacos中配置完后进行项目配置
application.yml

#配置中心
server:
  port: 8080
  servlet:
    context-path: /
spring:
  application:
    name: qf-service-order
  # 配置nacos地址(告诉当前应用nacos在哪里)
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      config:
        # 指定命名空间
        namespace: dev
  config:
    # 从Nacos配置中心导入两个配置文件,并属于order分组
    import:
      - nacos:common.properties?group=order
      - nacos:database.properties?group=order

配置类

@Component
@ConfigurationProperties(prefix = "order") //配置批量绑定在nacos下,可以无需@RefreshScope就能实现自动刷新
@Data
public class OrderProperties {

    String timeout;

    String autoConfirm;

    String dbUrl;
}

Controller

@Autowired
OrderProperties orderProperties;

@GetMapping("/config")
public String config(){
    return "order.timeout="+orderProperties.getTimeout()+"; " +
            "order.auto-confirm="+orderProperties.getAutoConfirm() +";"+
            "order.db-url="+orderProperties.getDbUrl();
}

启动项目,先查看日志
在这里插入图片描述
可以看到加载配置文件成功,访问接口查看加载值。

5.yml多文档模式

场景:在开发环境需要3个配置文件,而在生成环境需要6个配置文件。此时就需要使用yml的多文档模式
application.yml

# yml多文档模式
server:
  port: 8080
  servlet:
    context-path: /
spring:
  profiles:
    active: dev
  application:
    name: qf-service-order
  # 配置nacos地址(告诉当前应用nacos在哪里)
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      config:
        import-check:
          # 禁用配置导入检,这里主要让程序忽略test分组中不存在的配置文件
          enabled: false
        # 动态指定命名空间,默认为dev
        namespace: ${spring.profiles.active:public}
---
spring:
  config:
    # 从Nacos配置中心导入两个配置文件,并属于order分组
    import:
      - nacos:common.properties?group=order
      - nacos:database.properties?group=order
    activate:
      on-profile: dev
---
spring:
  config:
    # 从Nacos配置中心导入两个配置文件,并属于order分组
    import:
      - nacos:common.properties?group=order
      - nacos:database.properties?group=order
      # 写一个没有在nacos中配置的配置文件
      - nacos:test.properties?group=order
    activate:
      on-profile: test
---
spring:
  config:
    # 从Nacos配置中心导入两个配置文件,并属于order分组
    import:
      - nacos:common.properties?group=order
      - nacos:database.properties?group=order
      - nacos:prod.properties?group=order
    activate:
      on-profile: prod

上面application.yml中dev、test、prod这里为了方便写在一起了,正常是需要拆分为3个yml文件。
在这里插入图片描述
测试以上配置是否生效

spring.profiles.active=dev

启动项目,查看日志
在这里插入图片描述
访问接口返回数据

order.timeout=1min; order.auto-confirm=1h;order.db-url=order_dev

spring.profiles.active=test

启动项目,查看日志
在这里插入图片描述
访问接口返回数据

order.timeout=10min; order.auto-confirm=10h;order.db-url=order_test

在这里插入图片描述

总结

在这里插入图片描述


相关文章:
Spring Cloud Alibaba快速入门
Spring Cloud Alibaba快速入门-Nacos注册中心(上)
Spring Cloud Alibaba快速入门-Nacos注册中心(下)
Spring Cloud Alibaba快速入门-Nacos配置中心(上)
Spring Cloud Alibaba快速入门-Nacos配置中心(下)
Spring Cloud Alibaba快速入门-OpenFeign
Spring Cloud Alibaba快速入门-OpenFeign进阶用法
Spring Cloud Alibaba快速入门-Sentinel
Spring Cloud Alibaba快速入门-Sentinel流量控制(FlowRule)
Spring Cloud Alibaba快速入门-Sentinel熔断规则
Spring Cloud Alibaba快速入门-Sentinel热点参数限流
Spring Cloud Alibaba快速入门-Gateway
Spring Cloud Alibaba快速入门-分布式事务Seata
Spring Cloud Alibaba快速入门-分布式事务Seata(下)

Spring Cloud Netflix快速入门

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐