学习日报 20251107|Nacos基础认识
Nacos 注册中心是 微服务架构中的核心组件之一,主要用于实现 服务的注册与发现,同时也兼具 配置管理、服务元数据管理、健康检查、动态 DNS、流量管理 等能力。简单来说,它的主要作用可以归纳为以下几点:
1. 服务注册(Service Registration)
- 微服务启动时,会自动向 Nacos Server 注册自己的信息,包括:
- 服务名称(如
user-service) - IP 地址和端口
- 健康状态
- 元数据(如版本号、环境标签等)
- 服务名称(如
- 支持两种实例类型:
- 临时实例(Ephemeral):依赖客户端定期发送心跳维持存活,默认每 5 秒一次。
- 持久实例(Persistent):即使服务宕机也不会自动剔除,需手动注销。
2. 服务发现(Service Discovery)
- 服务消费者(调用方)通过 Nacos 查询可用的服务提供者列表。
- Nacos 客户端会:
- 定期从服务端拉取最新服务列表(默认每 10 秒一次)
- 在本地缓存服务列表,提升性能
- 支持基于服务名的负载均衡调用(配合 Spring Cloud LoadBalancer 或 OpenFeign)
3. 健康检查(Health Check)
- 对服务实例进行实时监控,确保只将请求路由到健康的节点。
- 检查方式包括:
- 客户端心跳上报(适用于临时实例)
- 服务端主动探测(TCP/HTTP/MYSQL 探测,适用于持久实例)
- 若实例连续多次未响应心跳(默认 15 秒标记为不健康,30 秒后剔除),Nacos 会将其从服务列表中移除。
4. 服务治理与流量控制
- 支持按 权重(Weight) 分配流量(例如灰度发布、金丝雀发布)
- 可设置实例是否 启用(Enable),用于临时下线某个节点
- 提供 保护阈值(ProtectThreshold) 防止雪崩:当健康实例比例过低时,仍返回所有实例以保可用性
5. 多环境隔离(命名空间 Namespace + 分组 Group)
- Namespace:用于强隔离,如
dev/test/prod环境 - Group:用于逻辑分组,比如同一服务的不同版本或不同业务线
- 避免不同环境或应用之间的服务名冲突
6. 与 Spring Cloud 无缝集成
只需添加依赖并配置 server-addr,即可自动完成注册与发现:
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848namespace: devgroup: DEFAULT_GROUP
配合 @LoadBalanced RestTemplate 或 @FeignClient,即可实现服务间调用。
7. 可视化控制台
Nacos 提供 Web UI,可直观查看:
- 已注册的服务列表
- 各实例的健康状态、IP、端口、元数据
- 配置管理界面(如果同时用作配置中心)
总结一句话:
Nacos 注册中心 = 服务的“电话簿” + “健康管家” + “流量调度员”
它让微服务之间能自动找到彼此、安全通信,并在故障时快速隔离,是构建高可用、弹性微服务系统的关键基础设施。
如果正在使用 Spring Cloud Alibaba,Nacos 几乎是首选的注册与配置中心。
