Nacos配置中心

前言

  • Nacos既可以做注册中心,也可以做配置中心。
  • 随着分布架构的应用,配置文件会随着应用的拆分而拆分,每个应用都有自己的配置文件,但是一个微服务中不同应用的配置会存在冗余,所以为了统一管理配置文件,可以引入nacos配置中心。它可以实现在配置中心的后台修改文件后发布,配置中心服务端是可以感知文件的变化,然后将信息推送到客户端。

nacos界面上配置服务

在Nacos界面上面添加配置文件

开始 :在配置管理-->配置列表-->点击加号

 中间:添加配置信息

结束:配置完成以及查看

 

 从微服务上面拉取配置

nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置并且与本地的application.yml配置合并之后,才能保证项目正常运行启动.

但是如果尚未读取application.yml,怎么得知nacos地址呢?

这时就是springboot 中配置文件的加载是存在优先级顺序的, bootstrap 的优先级高于 application ,所有我们通常把通用配置放在bootstrap 中。
1.首先添加nacos配置必要的依赖
<!-- nacos config  配置管理-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
2.添加bootstrap.yaml
server:
    port: 9003
spring:
  application:
    name: nacos-config-client
  profiles:
    active: test
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yaml

这里会根据spring.cloud.nacos.server-addr获取nacos地址,再根据配置规则公式${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 作为文件id,来读取配置。本例,就是去读取nacos-config-client.yaml :

3.读取nacos配置
这里解释一下@RefreshScope注解,它是spring clou的原生注解,主要是实现配置的自动更新,即修改nacos中的配置后,微服务中无需重启即可让配置生效 
@RestController
@RefreshScope
public class ConfigclientController {

    @Value("${config.info}") //在注册中心上配置的config.info 注意 名称要相同
    private String configInfo;

    @GetMapping("/config/info")
    public String getconfigInfo() {
        return configInfo;
    }
}

4.访问路径 http://localhost:9003/config/info

Nacos命名空间namespace、分组group和服务名Data id三者关系  

  • Nacos默认的命名空间是public,Namespace主要用来实现隔离
  • Group默认是DEFAULT GROUP,Group可以把不同的微服务划分到同一个分组里面去
  • Service就是微服务;一个Service可以包含多个Cluster(集群)Nacos默认ClusterDEFAULT,Cluster是对指定微 服务的一个虚拟划分

Naco环境隔离

Nacos创建namespace默认情况下,所有service、data、group都在同一个namespace,名为public,

Namespace主要用来实现隔离 比方说我们现在有三个环境:开发dev、测试test、生产produce环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的

修改消费者的yml,将T的命名空间随便修改一个

server:
  port: 83

spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        namespace: 4da815f8-5480-411b-a42d-329a0058a500  #test命名空间id

# 消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

重启,登录nacos页面

 NacosDataId配置

我们在 nacos界面上的配置列表里,新增nacos-config-client-test.yaml,nacos-config-client-dev.yaml,nacos-config-client-produce.yaml配置,然后会发现我们这三个配置 (dataId)目前是在同一个组内,但是没有进行命名空间的分配,默认就是public

我们主要就是通过spring.profile.active这个属性进行多环境下的配置文件的读取,来进行data id 的修改配置

Nacos分组

在bookstrap.yaml里面,在config下增加一条group的配置即可,配置格式:组名_GROUP,可配置为DEV_GROUPTEST_GROUP或PRODUCE_GROUP.

如果不分组,没有标明注释,走的是默认DEFAULT_GROUP

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值