(初学者)对于Nacos的学习——下

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


 

前言

提高上篇文章了解到nacos的服务注册和发现,今天来了解配置管理功能和集群


提示:以下是本篇文章正文内容,下面案例可供参考

一、Nacos实现配置管理

1:配置文件的读取(以user-service微服务为例)

先来了解一下我们的配置文件是如何获取的

以往我们的项目流程图是先读取配置文件application.yml再创建容器,但是现在多了一个nacos的配置文件,那么就有两个问题,我们去个文件读?又读取什么?
以往我们的nacos的地址存放再application.yml中,当加载完application.yml就开始创建容器了,所以就会导致即使知道了nacos的地址也无法继续读取nacos的配置,所以我们需要再application.yml读取前就得读取nacos的配置信息,因此我们新创建一个bootstrap.yml文件

这个文件是引导文件,读取优先级比application.yml要高,所以我们可以把nacos的地址存放进去,目前的流程图为

 

这样就可以使两个配置文件的信息合并然后创建spring容器了。

2:引导文件如何填写

接下来看看引导文件需要填写什么

spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: dev # 开发环境,名字任意,这里是dev
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      config:
        file-extension: yaml # 文件后缀
# name+active+file-extension: 刚好组成了nacos配置文件的id
# 所以可以在nacos中找到配置文件

由代码可以看到,在里面填写的是配置文件的idnacos的地址 ,application.yml重复的配置可以注释(这里涉及到配置文件信息的优先度,下文会讲到)

2:创建配置文件

接下来我们进入nacos中创建对应了配置文件信息

 

 一般id的格式为 服务名称-配置环境.文件后缀

如:userservice-dev.yaml

这里我填写

 


 

这样我们的nacos的配置文件就填写好了 

二、Nacos配置文件的拉取

创建一个 Nacos的配置文件读取类

使用注解

@ConfigurationProperties(prefix = "pattern" )读取配置文件中前缀以pattern开头的属性

目前本人只能读取有前缀的属性

在类中创建变量,变量名要和配置文件中的名字相同

在user-service的控制层中注入配置文件和测试方法

@Autowired
    private NacosConfig nacosConfig;

    //检验是否读取到nacos的配置信息
    @GetMapping("now")
    public String now(){
//        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat))+name;
//        第二种配置热部署方法 建立配置类管理,@ConfigurationProperties会自动刷新
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(nacosConfig.getDateformat()))+nacosConfig.toString();
    }

访问方法后发现成功读取到nacos配置文件的信息 

 

 

三、Nacos多环境配置

谈到段环境配置要先了解一下环境概念

spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: dev # 开发环境,这里是dev
  cloud:
    nacos:
      server-addr: localhost:4960 # nacos地址
      config:
        file-extension: yaml # 文件后缀
# name: active: file-extension: 刚好组成了nacos配置文件的id
# 所以可以在nacos中找到配置文件

在我们的引导文件中有

profiles:
  active: dev # 开发环境,这里是dev

的属性,这是设置环境的代码,常见的有test,dev等等,这些环境的配置方便我们处于项目其他时间段的开发

那么我们如果想要一个配置文件,所有环境都可以读取要怎么做呢?

先来看一下我们是如何加载nacos的配置文件的

启动微服务

10-29 18:53:44:112  INFO 40792 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-userservice-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-userservice.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-userservice,DEFAULT_GROUP'}]

不难看出,当我们启动微服务的同时,它加载了两个个配置文件,分别是 

userservice-dev.yaml

userservice.yaml

而userservice-dev.yaml是我们处于dev环境的配置文件,从引导文件可以看出

我们是要读取userservice-dev.yaml

而userservice.yaml正好是适用于多环境的配置文件

所以我们只需要在nacos中多建立一个uservice.yml的配置文件即可。

那么这么多配置文件,他们的属性优先度是如何的呢?

不难看出userservice-dev.yaml的优先度最大,可以自行测试一下,这里不多展示

 

四:Nacos集群搭建

参考另一位大佬的文章https://blog.youkuaiyun.com/qq_51277752/article/details/125744997?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166704319916782428695619%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166704319916782428695619&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-125744997-null-null.142^v62^js_top,201^v3^add_ask,213^v1^control&utm_term=nacos%E9%9B%86%E7%BE%A4&spm=1018.2226.3001.4187

 目前踩到的坑是,nginx的端口一定不要冲突!

以及不知道什么原因集群后nacos的热更新就失效了TT

五、Springcloud使用Nacos集群的工作流程图

 


总结

以上是nacos的一些学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值