作为SpringCloud Alibaba的一个重要的组件,Nacos可实现动态服务发现、服务配置、服务元数据及流量管理
(官网地址:https://nacos.io/zh-cn/docs/what-is-nacos.html)
- 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求;
- 动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置;
- 动态 DNS 服务:动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务;
- 服务及其元数据管理:支持从微服务平台建设的视角管理数据中心的所有服务及元数据。

我们先做一下准备工作,安装一下Nacos,本次使用的是最新版本的2.1.1
参考官网,在腾讯云服务器上使用docker部署单机版,也可以在本机部署(mac/linux)
(1)安装docker
linux:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io
mac:(使用Homebrew 安装:https://brew.sh/)
brew install --cask --appdir=/Applications docker
(2)安装docker-compose
linux:
yum install docker-compose
mac: 一般安装docker已经带了compose,所以不需要安装,可以检测一下是否已安装
docker-compose -v
(3)安装nacos
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
docker-compose -f example/standalone-derby.yaml up -d
等待完成后,在地址上输入http://127.0.0.1:8848/nacos/ 账号/密码:nacos

注:若自己的云服务器上安装,想要外部测试使用,则需要去对应云服务上设置防火墙,把8848端口放行
1、服务发现
用Nacos作为注册中心,创建一个项目引用以下(官方wiki:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置文件配置nacos服务
server:
port: 8206
spring:
application:
name: nacos-biz-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
启动服务后查看nacos

2、配置中心
作为配置中心时,需要引入
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
注:如果不引入spring-cloud-starter-bootstrap读取不了bootstarp.yml/bootstrap.properties
将application.yml调整
spring:
profiles:
active: dev
新增bootstarp.yml
server:
port: 8206
spring:
application:
name: nacos-biz-service
cloud:
nacos:
config:
file-extension: yaml #这里我们获取的yaml格式的配置
server-addr: 127.0.0.1:8848#Nacos地址 可在此处统一配置
注:此处使用的是nacos2.x版本, 根据官方文档需要开放9849端口(官方文档:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html)
然后我们去nacos页面上添加配置文件,匹配的规则如下:
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

在项目中添加一个读取配置的接口方便测试
@RestController
@RefreshScope//动态刷新的注解
public class NacosConfigController {
@Value("${biz.info}")
private String bizInfo;
@GetMapping("/biz-info")
public String getBizInfo() {
return bizInfo;
}
}

接着我们测试一下动态刷新功能



测试成功,完成动态刷新和配置中心对接