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

本章主要讲述如何使用微服务架构中的配置中心

在微服务架构中,每个微服务应用都有自己的应用外部配置,在以前大多是使用配置文件或者数据库的形式和应用一起部署,而在SpringCloud体系下,需要有一个配置中心,专门管理各个微应用的配置信息,并且配置发生更新后,所有微应用都能马上读取到最新的配置。解决了每个应用都要去手动维护配置的不便。

上一章节中,使用了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 来配置。目前只支持 properties 和 yaml 类型。

配置内容:格式根据选择的格式类型而定,比如我这里选择了“properties”,则配置内容就按照平时项目内部的properties文件配置的方式来就行了。

在SpringCloud项目中使用

(直接在上一章节中的工程中进行改造:https://blog.csdn.net/u011177064/article/details/104107033

首先需要在pom.xml中添加nacos的config依赖

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

然后是在项目的配置文件中添加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 = "/config/version")
	    public String version() {
	        return "Hello Nacos Config " + version;
	    }
}

在上面代码里,使用了 @RefreshScope 注解,这个注解主要用于配置的自动更新,即在Nacos中该项配置发生变化时,在接口中就能感知到,获取到最新的值。

启动代码,并调用刚写的接口,可以发现读取到了在Nacos中的配置。

接下来尝试更新此项配置,将version值改为1.1

刷新接口

发布了24 篇原创文章 · 获赞 75 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/u011177064/article/details/104118986