阿里在技术的道路上越走越远,野心也越来越大,实力越来越强。Nacos凭借一己之力,单挑Eureka,Spring Cloud Config。勇气可嘉。
本篇文章来实战一下nacos作为配置中心。
基本配置
配置动态刷新
分类配置
使用不同的data ID区分不同的配置
使用不同的GROUP
使用不同的命名空间
按照如图所示,新建module,对应的类,配置文件。
启动类: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中新建配置
由于我们在配置文件中激活的是dev,所以Data ID也可以写成:nacos-config-dev.yaml
配置新建完成后,启动项目,访问http://localhost:7777/config/info,即可从nacos中得到配置信息。
在需要刷新配置的类上加上@RefreshScope注解即可实现动态配置动态刷新,操作十分简便。
再一次访问http://localhost:7777/config/info,即可发现信息已经发生了变化。
Nacos设计使用NameSpace+Group+Data ID来实现多环境多项目的管理。
NameSpace用于区分部署环境,Group和Data ID逻辑上区分两个目标对象。
通常我们的环境分为:开发,测试,灰度,生产,这个时候我们就可以创建4个nameSpace,不同的nameSpace之间是隔离的。
Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。
下面我们分别实践三种情况
Data ID的命令规范:项目名称-激活的环境-配置文件后缀(nacos-config-dev.yaml)
新建一个test的配置,命名:nacos-config-test.yaml
修改application.yml中的active为test
启动项目访问,即可看见test的配置信息。
新建DEV_GROUP的配置信息
新建TEST_GROUP的配置信息
新建完成后,会有两个不同GROUP的配置信息
修改配置文件:
启动,即可读取到指定的GROUP配置信息。
如下图所示,nacos默认命名空间是public,不能删除和修改。
新建dev和test的命名空间。
点击配置列表菜单,可以看见已经有了刚刚新建的命名空间
点击dev,切换到dev的命名空间下,发现此时是没有配置的,我们新建一个配置信息
在项目中如何使用到的dev命名空间的配置呢?
如下图,添加namespace配置即可实现不同命名空间配置的切换。namespace的参数是命令空间的id。
启动项目,发现读取的配置已经更换到指定的命名空间下了。
按照上述方法在test命名空间下新建配置,然后将namespace的配置更换成test命名空间的id,重新启动项目,会发现配置信息变成了test命名空间下的配置。