Nacos使用
Nacos简介
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos主要特性:
服务发现和服务健康检测。
动态配置服务。
动态DNS服务。
服务及其元数据管理。

安装Nacos
- 安装包安装
Nacos 依赖 Java 环境来运行,所以,需要确保你的机器上已经安装好了 JDK 1.8+ 版本。
浏览器访问地址:https://nacos.io/download/release-history/ ,找到 2.2.3 版本,点击并下载对应版本的安装包:
下载完成后,解压到某个文件夹下,然后进入 /bin 目录下,打开终端:
在终端中,运行如下启动命令 ( standalone 代表着单机模式运行,非集群模式) :
./startup.cmd -m standalone
- 浏览器访问地址:http://localhost:8848/nacos ,即可进入到 Nacos 的控制后台。
- Docker安装Nacos
在拉取 Nacos 镜像之前,在 E:\docker 文件夹下,创建一个 /nacos 文件夹,等会运行容器时,用于将 Nacos 容器中的配置文件、持久化文件挂载出来,防止容器重启时数据丢失的问题。
那么,下载 2.2.3 版本的 Nacos 镜像,运行命令如下:
docker pull nacos/nacos-server:v2.2.3
- 执行完成后,执行如下命令,查看本地已下载的镜像列表,确认一下镜像是否下载成功了:
docker images
- 镜像下载成功后,运行如下命令,运行一个 Nacos 容器:
docker run -d --name nacos --env MODE=standalone -p 8848:8848 -p 9848:9848 nacos/nacos-server:v2.2.3
命令执行完毕后,通过 docker ps 命令查看一下正在运行中的 Docker 容器,确认一下容器是否正常跑起来了。
浏览器访问地址:http://localhost:8848/nacos ,即可进入到 Nacos 的控制后台。
Nacos 容器跑起来后,我们将容器中的配置文件,以及数据文件复制到宿主机中。
docker cp nacos:/home/nacos/conf E:\docker\nacos
docker cp nacos:/home/nacos/data E:\docker\nacos
- 最后,执行如下命令,强制删除正在运行中的 Nacos 容器:
docker rm -f nacos
- 重新跑一个正式的 Nacos 容器,运行命令如下:
docker run -d --name nacos --privileged -e MODE=standalone -e JVM_XMX=300m -e JVM_XMS=300m -p 8848:8848 -p 9848:9848 -v E:\docker\nacos\conf:/home/nacos/conf -v E:\docker\nacos\data:/home/nacos/data -v E:\docker\nacos\logs:/home/nacos/logs nacos/nacos-server:v2.2.3
整合 Nacos 配置中心:实现动态配置刷新
什么是配置中心?
在微服务架构下,配置中心是一个专门用来集中管理和分发配置的服务。它通过提供统一的接口,帮助开发人员将所有微服务的配置项集中存储、管理和分发,确保微服务在不同环境下(如开发、测试、生产环境)能够方便地获取到对应的配置。
为什么需要配置中心?
集中管理,简化运维: 在传统的单体应用中,配置项通常存储在本地文件中,管理和维护相对简单。但在微服务架构下,配置项分散在多个服务中,如果每个服务都单独管理自己的配置项,会导致管理复杂性增加。配置中心通过集中管理配置项,极大简化了运维工作。
环境隔离,配置灵活: 不同的环境(开发、测试、生产等)通常需要不同的配置项。配置中心支持按环境隔离配置项,使得相同的微服务在不同环境中可以方便地获取对应的配置,而无需手动修改配置文件。
动态更新,实时生效: 在业务需求变化较快的场景中,配置项的频繁修改是常态。配置中心支持配置项的动态更新和实时生效,减少了服务重启的次数,提高了系统的可用性和灵活性。
安全管理: 某些敏感配置项(如数据库密码、API 密钥等)不适合写在代码中或本地文件中。配置中心提供了安全的存储和访问机制,确保敏感信息的安全性。
统一监控,提升稳定性: 配置中心可以对所有配置项进行统一监控和管理,方便运维人员及时发现和处理配置问题,提升系统的稳定性和可靠性。
使用Nacos配置中心
进入 Nacos 管理后台,创建配置
浏览器访问: http://localhost:8848/nacos , 进入到 Nacos 控制台,点击创建配置按钮。
填写相关配置项:
①:Data Id : 配置的唯一标识,这里我们填写;
②:Group: 所属组,这里默认组即可;
③:配置格式:项目中使用的 YAML 格式配置, 这里也选择 YAML;
④:配置内容,将限流阈值配置复制进去;
⑤:点击发布按钮;

添加依赖
1 | |
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。我们是 Spring Boot 3.x, 故使用最新的 0.3.x 版本。
项目配置Nacos
依赖添加完毕后,编辑 applicaiton.yml 文件,准备添加 Nacos 相关配置:
1 | |
Nacos配置中心:动态加载Bean
当系统发送异常时,需要给开发发送告警信息,提示开发速度修复系统问题。告警的形式可以是发送短信,也可以是发送邮件。至于具体使用哪种方式, 支持通过修改 Nacos 配置中心中的配置项来动态控制。
自定义配置
编辑 application.yml 文件,自定义一个告警类型的配置:
sms : 表示短信告警;
mail : 表示邮件告警;
添加Nacos配置:
1 | |
使用@RefreshScope 注解
这个注解是干嘛的?
@RefreshScope 注解是 Spring Cloud 提供的一个注解,用于实现配置动态刷新功能。当配置中心的配置发生变化时,标注了 @RefreshScope 的 Bean 会重新加载最新的配置,而无需重启应用。
在 Nacos 配置中心的场景下,@RefreshScope 的主要功能包括:
动态刷新配置:当 Nacos 配置中心的配置发生变化时,应用中的配置会自动更新,避免了手动重启应用的繁琐过程。
重新加载 Bean:标注了 @RefreshScope 的 Bean 会在配置变化后重新加载,确保 Bean 使用最新的配置。
与 Spring Cloud 集成:@RefreshScope 与 Spring Cloud 的配置管理机制紧密集成,能够无缝地处理配置更新事件。
Nacos命名空间应用:项目隔离
命名空间(Namespace)是 Nacos 提供的一种逻辑隔离手段,用于对配置和服务进行分组和隔离。在 Nacos 中,命名空间通常被用于做业务隔离。
什么是业务隔离?
不同业务线的配置和服务可以放在不同的命名空间中,方便管理和维护。
创建命名空间
进入到 Nacos 管理后台:http://localhost:8848/nacos :点击命名空间菜单,点击新建命名空间按钮:
填写命名空间相关配置项,如下图所示:
①:命名空间 ID: 可不填,不填的话,会自动生成一长串的唯一 ID , 这里为了方便识别,手动填写;
②:命名空间名称:也可以写中文,这里填项目的拼音;
③:描述:命名空间描述性文字;

克隆配置
创建完成后,进入到配置管理 | 配置列表,在上方会发现除了 public 外,多出了一个咱们刚刚创建的 xxx 命名空间,选择该命名空间,会发现该命名空间下,还没有任何配置:
将 public 命名空间下的所有配置勾选,点击克隆,选择目标空间 | 开始克隆 , 即可将 public 空间下的配置,一键复制到 xxx 命名空间下:
服务注册:将认证服务注册到 Nacos 上
在微服务架构中,服务注册是一种机制,用于将服务实例的信息(如地址、端口、健康状态等)注册到服务注册中心。服务实例启动时,会向注册中心登记自己的信息,停止时则注销。
它的作用如下:
提供服务元数据:注册中心保存了所有服务实例的元数据,供其他服务或负载均衡器查询。
健康检查:注册中心通常会定期检查注册的服务实例的健康状况,以确保它们可用并将不可用的实例从注册列表中移除。
添加依赖:
1 | |
添加配置
1 | |