Nacos 服务注册发现全链路
📺 配套视频
📝 知识点总结
服务注册全链路
Spring Boot 启动
→ NacosAutoServiceRegistration 监听 WebServerInitializedEvent
→ NacosServiceRegistry#register()
→ NamingClientProxy#registerService()
→ gRPC 长连接发送 InstanceRequest 到 Nacos Server
→ InstanceRequestHandler 处理注册请求
→ 写入 ServiceManager 内存注册表
核心组件职责
| 组件 | 职责 |
|---|---|
| NacosServiceRegistry | Spring Cloud 适配层,对接 ServiceRegistry 接口 |
| NamingClientProxy | 客户端代理,封装 gRPC/HTTP 通信 |
| InstanceRequestHandler | 服务端请求处理器 |
| ServiceManager | 内存注册表,存储所有服务实例 |
心跳与健康检查
- 临时实例:客户端通过 gRPC 长连接保活,连接断开即下线
- 持久实例:服务端主动探测(TCP/HTTP),超时标记不健康
服务发现流程
- 消费者调用
NamingService#selectInstances()获取实例列表 - 优先从本地缓存获取
- 缓存未命中 → gRPC 请求服务端查询
- 服务端通过 gRPC 推送变更事件,客户端实时更新本地缓存
🔗 延伸阅读
- Nacos 源码深度解析 — 17 章体系化拆解 Nacos 核心源码