在微服务架构中,服务实例数量多、位置动态变化,手动维护地址不可行。服务注册与发现机制解决了这一问题。
1. 核心概念
- 注册中心:维护服务与实例的映射关系。
- 服务注册:服务启动时将自身信息(IP、端口、状态)注册到注册中心。
- 服务发现:调用方从注册中心获取可用实例地址。
2. 常见注册中心
| 注册中心 | 特点 | 一致性模型 |
|---|---|---|
| Eureka | 弱一致性,高可用,适合大规模服务 | AP |
| Consul | 健康检查完善,支持多数据中心 | CP |
| Zookeeper | 一致性强,性能相对较低 | CP |
| Nacos | 动态配置 + 注册中心二合一 | CP 兼顾 AP |
3. 服务注册流程
- 服务实例启动后向注册中心发送注册请求。
- 注册中心记录实例信息并维持心跳。
- 客户端通过注册中心查询目标服务列表。
- 当实例下线或宕机时,注册中心自动摘除。
4. 服务发现方式
- 客户端发现:客户端主动从注册中心拉取服务列表(如 Ribbon)。
- 服务端发现:由网关或代理在调用前完成服务解析。
5. 健康检查与自动摘除
- 心跳间隔过期后,注册中心将实例标记为失效。
- 支持主动健康探测与被动摘除,保证调用目标有效。
6. 实践建议
- 注册中心要做集群部署,避免单点。
- 大规模集群建议使用异步同步机制减轻压力。
- 配合负载均衡实现自动流量分配。
结论:服务注册与发现是微服务的基础设施。正确实现它,系统才能真正做到“自治、弹性、动态”。