说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。
前言
本篇文章我们将讲述Nacos的服务配置中心,在使用Nacos的服务配置中心前,您需要对Nacos的服务注册中心有一定的了解,如果您对想了解Nacos的服务注册发现中心,可查看往期的文章《微服务系列:Nacos服务注册发现中心》
对于服务配置中心组件,在SpringCloud中也有优秀的配置中心组件SpringCloudConfig,我们在前面的文章中也有提及,如果你想了解SpringCloudConfig,可查看往期的文章《微服务系列:SpringCloudConfig配置中心》
启动nacos-server
使用命令startup.cmd -m standalone以单机部署的方式启动nacos-server。(启动成功如下图)
创建nacos-client
我们需要创建一个nacos客户端来测试配置中心,具体步骤如下:
①依赖配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>Bosen</artifactId>
<groupId>com.bosen.www</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nacos-client</artifactId>
<dependencies>
<!-- nacos-discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<!-- nacos-config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
</dependencies>
</project>
②启动类:
package com.bosen.nacos.client;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosClientApplication {
public static void main(String[] args) {
SpringApplication.run(NacosClientApplication.class, args);
}
}
③配置文件:
spring:
application:
name: nacos-client
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # 服务注册中心地址
config:
server-addr: 127.0.0.1:8848 # 服务配置中心地址
file-extension: yml
④编写一个控制器:
package com.bosen.nacos.client.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IndexController {
@Value("${author}")
String author;
@RequestMapping("/")
public String index() {
return "Author is " + author;
}
}
⑤nacos-client保存在nacos-config中的配置文件:nacos-config对于配置文件的匹配,根据${spring.application.name}-${profiles}.yml的方式匹配,因为现在为测试阶段我们没有添加开发环境参数,因此配置文件命名为${spring.application.name}.yml即可。(访问http://localhost:8848/,输入用户名密码nacos进入,具体流程如下图)
⑥启动nacos-client:(启动成功如下图)
⑦查看服务是否读取了配置中心上的配置文件:(查看日志信息,可以看到,程序启动时,已经成功读取了配置中心的配置文件)
Nacos配置动态刷新
nacos的配置文件是支持动态刷新的,只需要在对应的获取配置信息的类上添加注解@RefreshScope即可,如下修改之前编写的控制器(为控制器IndexController添加注解@RefreshScope,修改完后重启nacos-client)
package com.bosen.nacos.client.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope// 开启动态更新
@RestController
public class IndexController {
@Value("${author}")
String author;
@RequestMapping("/")
public String index() {
return "Author is " + author;
}
}
现在我们来访问nacos-client路径为“/”的控制器http://localhost:8001/(显示页面如下)
修改配置文件nacos-client.yml,将author从Bosen,修改为Bosen_once(如下)
修改好配置文件后,我们再次访问http://localhost:8001/,页面信息如下,说明动态修改配置信息成功。
总结
此篇文章,主要讲述了nacos的配置中心的使用流程以及使用配置中心实现配置文件的统一管理,并且运用nacos-config的强大功能,实现配置文件的动态更新。