Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

阿里在技术的道路上越走越远,野心也越来越大,实力越来越强。Nacos凭借一己之力,单挑Eureka,Spring Cloud Config。勇气可嘉。

本篇文章来实战一下nacos作为配置中心。

  • 基本配置

  • 配置动态刷新

  • 分类配置

    • 使用不同的data ID区分不同的配置

    • 使用不同的GROUP

    • 使用不同的命名空间

 

1.基本配置

按照如图所示,新建module,对应的类,配置文件。

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

启动类:ConfigMain

package com.xhc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ConfigMain {

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

ConfigControlle类

package com.xhc.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope // 支持Nacos的动态刷新功能
public class ConfigController {

    @Value("${config.info}")
    private String configInfo;

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

application.yml

spring:
  profiles:
    active: dev  # 配置什么环境就加载什么环境的配置

bootstrap.yml

server:
  port: 7777

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式配置

然后登录nacos,在nacos中新建配置

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

由于我们在配置文件中**的是dev,所以Data ID也可以写成:nacos-config-dev.yaml

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

配置新建完成后,启动项目,访问http://localhost:7777/config/info,即可从nacos中得到配置信息。

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

 

2. 配置动态刷新

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

在需要刷新配置的类上加上@RefreshScope注解即可实现动态配置动态刷新,操作十分简便。

再一次访问http://localhost:7777/config/info,即可发现信息已经发生了变化。

3.分类配置

Nacos设计使用NameSpace+Group+Data ID来实现多环境多项目的管理。

NameSpace用于区分部署环境,Group和Data ID逻辑上区分两个目标对象。

通常我们的环境分为:开发,测试,灰度,生产,这个时候我们就可以创建4个nameSpace,不同的nameSpace之间是隔离的。

Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。

下面我们分别实践三种情况

3.1.使用不同的data ID区分不同的配置

Data ID的命令规范:项目名称-**的环境-配置文件后缀(nacos-config-dev.yaml)

新建一个test的配置,命名:nacos-config-test.yaml

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

修改application.yml中的active为test

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

启动项目访问,即可看见test的配置信息。

3.2.使用不同的GROUP

新建DEV_GROUP的配置信息

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

新建TEST_GROUP的配置信息

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

新建完成后,会有两个不同GROUP的配置信息

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

修改配置文件:

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

启动,即可读取到指定的GROUP配置信息。

3.3.使用不同的命名空间

如下图所示,nacos默认命名空间是public,不能删除和修改。

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

新建dev和test的命名空间。

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

点击配置列表菜单,可以看见已经有了刚刚新建的命名空间

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

点击dev,切换到dev的命名空间下,发现此时是没有配置的,我们新建一个配置信息

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

在项目中如何使用到的dev命名空间的配置呢?

如下图,添加namespace配置即可实现不同命名空间配置的切换。namespace的参数是命令空间的id。

Alibaba Nacos 四 :Nacos的野心,不仅仅是服务注册,我还要配置中心

启动项目,发现读取的配置已经更换到指定的命名空间下了。

按照上述方法在test命名空间下新建配置,然后将namespace的配置更换成test命名空间的id,重新启动项目,会发现配置信息变成了test命名空间下的配置。