2-CloudAlibaba-Nacos(配置中心)学习笔记 2020.10.15

36 篇文章 2 订阅
13 篇文章 0 订阅

2-CloudAlibaba-Nacos(配置中心)学习笔记 2020.10.15

前言:

以前项目单独使用CloudConfig, 只能实现配置文件从云端(git、svn)拉取下来,作为项目启动使用。

没有集成CloudBus的情况下, 更改了配置文件只能重新启动项目使其生效。

现在使用Nacos的配置中心功能就能非常简单实现CloudConfig+CloudBus 云端拉取配置文件作为项目启动, 并实时更新配置文件。

下面进行快速入门。

1.0 新建模块/引入依赖

<!--nacos-config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

1.1 NacosWeb界面管理中的配置管理模块说明

在 Nacos Spring Cloud 中,创建配置文件要遵从下面格式:

dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

  • 最终通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8bfWLwI-1602757649786)(https://s1.ax1x.com/2020/10/13/0hJ42Q.jpg)]

1.1 添加bootstrap.yml(名称固定值)

Nacos加载配置文件顺序是优先从bootstrap.yml加载, 保证应用的正常启动, 然后在去加载application.yml(这里单独只留有bootstrap.yml)

server:
  port: 9888

spring:
  application:
    name: nacos-config
  profiles:
    active: dev # 选择使用那个环境的配置文件
  cloud:
    nacos:
      discovery:
        server-addr: 公网IP:8848 #Nacos服务注册中心地址
      config:
        server-addr: 公网IP:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        prefix: myConfig # 指定配置文件名前缀, 没有则是默认项目名nacos-config

1.2 启动项目进行测试

@SpringBootApplication
@RestController
@RefreshScope //加上此注解,支持Nacos的动态刷新功能。
public class NacosConfig
{
    //读取配置中心的属性
    @Value("${myUser.name}")
    private String name;

    public static void main(String[] args) {
        SpringApplication.run(NacosConfig.class, args);
    }

    @GetMapping("/getName")
    public String getName(){
        return name;
    }
}

进行访问http://localhost:3377/getName

返回结果: 张韶涵, 接着在nacos上配置中心修改配置文件属性myUser.name = 张韶涵6666

不用重启服务, 再次进行访问, 发现结果已经更改, 返回 张韶涵6666

2.0 使用命名空间/Data ID/分组来区分,隔离不同运行环境的配置文件(官网)

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

就是通过: 命名空间 + Group(分组) + Data ID , 来实现不同环境与一个应用多个实例的配置文件。

更为具体自行观看官网。

2.1 使用Data ID 来区分不同环境的配置文件

  1. nacos配置管理上创建2个配置文件。
  2. 一个命名为myConfig-dev.yaml (代表开发环境) , 另一个命名为: myConfig-test.yaml (代表测试环境)
  3. 项目中的bootstrap.yml配置文件选择拉取那个配置文件作为项目启动使用, 来区分。
spring:
  application:
    name: nacos-config
  profiles:
    active: dev # 选择使用那个配置文件 (现在更为test)
  cloud:
    nacos:
      discovery:
        server-addr: 119.xxxx:8848 
      config:
        server-addr: 119.xxxx:8848 
        file-extension: yaml 
        prefix: myConfig # 指定配置文件名前缀

到这就简单实现了, 不同环境使用不同配置文件的情况。

2.2 使用Group(分组) 来区分一个应用多个实例不同配置文件

  1. nacos配置管理上创建2个配置文件。

  2. 一个命名为myConfig-dev.yaml, 分组Group 选择为开发组DEV_GROUP(代表环境实例1)

    , 另一个命名为: myConfig-dev.yaml, 分组Group 选择为开发组DEFAULT_GROUP (代表环境实例2)

  3. 项目中的bootstrap.yml配置文件选择拉取那个配置文件作为项目启动使用, 来区分。

# 实例1 配置文件
spring:
  application:
    name: nacos-config-1
  profiles:
    active: dev # 选择使用那个配置文件
  cloud:
    nacos:
      discovery:
        server-addr: 119.xxxx:8848 
      config:
        server-addr: 119.xxxx:8848 
        file-extension: yaml 
        group: DEFAULT_GROUP # 选择DEFAULT_GROUP分组
        prefix: myConfig # 指定配置文件名前缀
---------------------------------------------------------------------------------        

# 实例2 配置文件
spring:
  application:
    name: nacos-config-2
  profiles:
    active: dev # 选择使用那个配置文件
  cloud:
    nacos:
      discovery:
        server-addr: 119.xxxx:8848 
      config:
        server-addr: 119.xxxx:8848 
        file-extension: yaml #指定yaml格式的配置
        group: DEV_GROUP # 选择DEV_GROUP分组
        prefix: myConfig

到这就配置完毕。

2.3 使用优先级最大的命名空间来区分不同环境的配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qrWlZWZ-1602757649790)(https://s1.ax1x.com/2020/10/14/05Q0vn.jpg)]

  1. nacos命令空间上创建命名空间。
  2. 在配置管理新创建的命名空间中创建配置文件myConfig-test.yaml, (代表开发环境)
  3. 项目中的bootstrap.yml配置文件选择拉取那个命名空间的配置文件作为项目启动使用, 来区分。
spring:
  application:
    name: nacos-config
  profiles:
    active: test # 选择使用那个环境的配置文件
  cloud:
    nacos:
      discovery:
        server-addr: 119.xxxx:8848 
      config:
        server-addr: 119.xxxx:8848 
        file-extension: yaml 
        prefix: myConfig 
        namespace: 41ac85c6-98b8-4310-82be-8561d34013a1 # 使用新创建的命名空间

可以配合使用 : 命名空间 + Group(分组) + Data ID

到此配置完成。

3.0 使用自定义数据库进行持久化配置

1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懵懵懂懂程序员

如果节省了你的时间, 请鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值