使用 Nacos 作为 Spring Cloud 微服务架构中的配置和注册、发现服务

在 Spring Cloud 项目中,通常使用 Eureka Server 作为注册与发现服务,但其实上有很多开源的注册与发现服务可以选择,今天要演示的就是在 Spring Cloud 微服务系统中使用阿里的 Nacos 作为注册与发现服务,因为 Nacos 自带了配置服务,所以我们也会演示配置服务的相关功能。

加入依赖库

要在项目中使用 nacos,需要在 pom.xml 文件中加入以下两个依赖为:

1
2
3
4
5
6
7
8
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

注意:Spring Cloud 的版本只支持 2.2 到 2.3 之间

加入动态配置项

假设在 Controller 中,有一个名为 greeting 的变量需要通过配置来进行设置,可以添加如下的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
@RequestMapping("/")
@RefreshScope
public class HealthApi {

@Value("${greeting:hello}")
private String greeting;

@GetMapping
public String get() {
return this.greeting;
}
}

@Value 告诉 Spring Boot, 该值需要通过配置文件取,如果取不到,则使用默认值: “hello”

@RefreshScope 定义动态刷新配置项

配置启动项

在 src/resources 目录中添加一个名为: bootstrap.properties 的文件,加入以下内容:

1
2
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=account-srv-with-nacos

spring.cloud.nacos.config.server-addr 指定了环境中配置服务器的部署地址,也就是运行 nacos 的地址(单机或集群,多个地址用”,”进行分割)

不需要改动项目启动类,也不需要特别指明注册与发现服务器地址

然后就可以启动服务了。 启动以后,可以在 nacos 的控制台的服务列表中查看。

更改配置项

进入 nacos 的控制台, 选择配置 -> 添加(右上角的加号)。

增加一个名为: account-srv-with-nacos 的配置文件(**该文件名必须与应用名:spring.application.name 一致),可选择多种类型,本例中使用 yaml 类型。

然后在项目的编辑框中输入:

1
greeting: "ok"

然后保存,如果以上步骤没出错的话,可以在应用的 log 文件中看到配置被主动推送到了应用服务中,这个时候在访问应用的 api, 就可以看到配置的结果了。

本文标题:使用 Nacos 作为 Spring Cloud 微服务架构中的配置和注册、发现服务

文章作者:Morning Star

发布时间:2020年11月05日 - 18:11

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/microservice/spring-cloud/springcloud-with-nacos/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。