Spring Cloud Alibaba - Nacos(四)配置中心



一、Nacos配置中心使用

官方文档: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

1. 快速开始

准备配置,在nacos server中新建order-service.yaml

Namespace:代表不同环境,如开发、测试、生产环境。
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程(微服务),每个配置集(DataId)是一个工程(微服务)的主配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lc2TLAQY-1651046962146)(./img/4-1.jpg)]

我们需要在public下创建一个order.yml的配置文件

2. 搭建nacos-config服务

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更

2.1 引入依赖
<!--nacos-配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.2 添加bootstrap.yml

配置文件的信息需要写在bootstrap.yml文件中,才可以正常加载配置文件,然而我们这个版本没有自动依赖加载bootstrap的包,所以还得添加如下依赖:

<!--加载bootstrap文件-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

添加配置

server:
  port: 8010
spring:
  application:
    name: order
  cloud:
    nacos:
      server-addr: 192.168.28.129:8848
      config:
        file-extension: yml
2.3 在程序中使用配置
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {

    @Value("${str}")
    private String str;
    @Resource
    private StockFeign stockFeign;


    @GetMapping("/add")
    public String add() {
        log.info("添加商品!{}", str);
        String forObject = stockFeign.reduce("666");
        return "添加商品成功." + forObject;
    }
}

这样启动项目,访问/order/add就可看到拿到了配置的参数 str 了。

3. Config相关配置

Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP

如下配置:就是读取地址在192.168.28.129:8848的nacos上namespace = dc2ec31d-1f60-4aa8-8c90-921cbb59b92d中group=BUSINESS_GROUP的order.yaml文件中的配置。

spring:
  application:
    name: order
  cloud:
    nacos:
      server-addr: 192.168.28.129:8848
      config:
        file-extension: yaml
        namespace: dc2ec31d-1f60-4aa8-8c90-921cbb59b92d
        group: BUSINESS_GROUP

当然我们在开发中有很多的公共配置文件,这时候我们可以直接引用公共文件

spring:
  application:
    name: order
  cloud:
    nacos:
      server-addr: 192.168.28.129:8848
      config:
        file-extension: yaml
        namespace: dc2ec31d-1f60-4aa8-8c90-921cbb59b92d
        group: BUSINESS_GROUP
        shared-configs: # 公共配置 数组类型的 可以配置多个
          - dataId: common.yaml
            group: COMMON_GROUP
            refresh: true

还有一种是spring.cloud.nacos.config.extension-configs[n].data-id的配置方式,和shared-configs是一模一样的,就不展示了,可见我们的配置是灵活的也是多种多样的,那么这么多的配置方式同时配置同一个属性的时候,以什么为准呢?

配置的优先级

Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。

  • A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置
  • B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置
  • C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

当处于同一个方式里,就是谁在后用谁,extension-configs[n].data-id,也就是n越大越优先。

--------------最后感谢大家的阅读,愿大家技术越来越流弊!--------------

在这里插入图片描述

--------------也希望大家给我点支持,谢谢各位大佬了!!!--------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值