微服务实战(四) 配置中心的使用 - Nacos

本章主要讲述如何使用微服务架构中的配置中心 在微服务架构中,每个微服务应用都有自己的应用外部配置,在以前大多是使用配置文件或者数据库的形式和应用一起部署,而在SpringCloud体系下,需要有一个配置中心,专门管理各个微应用的配置信息,并且配置发生更新后,所有微应用都能马上读取到最新的配置。解决了每个应用都要去手动维护配置的不便。
上一章节中,使用了Nacos作为服务注册发现中心,其实Nacos还自带了配置中心的功能,直接使用即可。
用Nacos控制台维护配置
如下图所示,下面演示新增一个配置
微服务实战(四) 配置中心的使用 - Nacos
文章图片

Data ID : 官方解释如下, 我这里直接填写nacos-provider.properties

在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profile.active 即为当前环境对应的 profile。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。
配置内容:格式根据选择的格式类型而定,比如我这里选择了“properties”,则配置内容就按照平时项目内部的properties文件配置的方式来就行了。

在SpringCloud项目中使用
(直接在上一章节中的工程中进行改造:https://blog.csdn.net/u011177064/article/details/104107033)
首先需要在pom.xml中添加nacos的config依赖
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config

然后是在项目的配置文件中添加nacos config的配置
(官网文档说必须配置在bootstrap.properties ,我尝试把这个配置放到application.yml中,读取不到,暂且先按照官方说的来吧)
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

下面写一个接口来测试是否能读取到配置吧
package com.zjf.combat.api.nacos; 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; @RefreshScope @RestController public class NacosConfigApi { @Value("${app.version}") private String version; @GetMapping(value = "https://www.it610.com/config/version") public String version() { return "Hello Nacos Config " + version; } }

在上面代码里,使用了 @RefreshScope 注解,这个注解主要用于配置的自动更新,即在Nacos中该项配置发生变化时,在接口中就能感知到,获取到最新的值。
启动代码,并调用刚写的接口,可以发现读取到了在Nacos中的配置。
微服务实战(四) 配置中心的使用 - Nacos
文章图片


接下来尝试更新此项配置,将version值改为1.1
微服务实战(四) 配置中心的使用 - Nacos
文章图片


刷新接口
【微服务实战(四) 配置中心的使用 - Nacos】微服务实战(四) 配置中心的使用 - Nacos
文章图片

    推荐阅读