【微服务】Nacos篇(一文理解Nacos在项目中的应用)
Nacos 简介
Nacos 是一个动态服务发现、配置管理和服务管理平台,支持微服务架构中的服务注册与发现、配置管理、服务健康监测等功能。其核心特点包括高可用性、动态配置、服务发现和易于扩展。
为什么使用Nacos?
设想当我们需要在酒店办理入住时,如果前台没有服务人员,就无法得知哪些房间已经打扫完毕可供使用,只能自行寻找合适的房间。通常情况下,酒店会将打扫干净的房间信息登记在前台系统里,这样客人入住时就能通过前台快速了解可用的房间情况。Nacos在这其中就充当前台这一角色。
Nacos 核心功能
服务注册与发现
Nacos 提供服务注册中心,微服务启动时自动注册到 Nacos,其他服务可通过 Nacos 发现并调用目标服务。支持基于 DNS 和 RPC 的服务发现模式。
动态配置管理
通过 Nacos 的配置中心,可实现配置的集中管理和动态更新,无需重启服务。支持多环境(如开发、测试、生产)配置隔离,以及配置变更的监听机制。
服务心跳机制
服务注册成功后,Nacos Client会通过定时心跳机制维持与Nacos Server的连接。该机制能够确保服务持续处于可用状态,避免被系统自动剔除。心跳发送频率默认为每5秒一次。
服务健康监测
Nacos Server 会启动定时任务来监测注册服务实例的健康状态。当某个实例超过15秒未发送心跳时,系统会将该实例的healthy属性设置为false(此时客户端服务发现将无法获取该实例)。若实例持续30秒未发送心跳,则会被直接剔除(被剔除的实例在恢复心跳发送后可重新注册)。
Nacos配置与集成详解
依赖引入
项目通过Spring Cloud Alibaba统一管理Nacos相关依赖:
<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>
配置文件设置
各服务在bootstrap.yml中配置Nacos配置中心:
spring:
application:
name: service-name # 服务名称
cloud:
nacos:
config:
server-addr: localhost:8848 # Nacos服务器地址
file-extension: yml # 配置文件格式
profiles:
active: dev # 激活环境
服务发现配置位于application.yml中:
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848 # Nacos服务器地址
共享配置使用
订单服务通过shared-configs引入全局配置:
spring:
cloud:
nacos:
config:
shared-configs:
- data-id: global-config.yml
refresh: true
服务发现集成
网关服务启用服务发现路由:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
动态配置刷新
订单服务中的SentinelController使用@RefreshScope:
@RefreshScope
@RestController
public class SentinelController {
@Value("${businessConfig.appname}")
private String appname;
}
Nacos单机部署配置
启动命令:
# Linux/Mac
sh startup.sh -m standalone
# Windows
cmd startup.cmd -m standalone
核心配置:
nacos.standalone=true
nacos.core.auth.enabled=false
server.ip=127.0.0.1
参考文档
更多推荐


所有评论(0)