服务发现允许服务动态查找彼此的网络位置,而不是硬编码会随着实例扩展、缩减或重启而变化的 IP。
为什么这很重要
在云中,实例会因自动扩展和故障而不断出现和消失,所以地址不稳定。服务注册表跟踪健康的实例。
text
1. Service registers itself ──▶ [ Registry: orders → 10.0.1.7, 10.0.1.9 ]
2. Caller asks registry "where is orders?"
3. Registry returns healthy instances
4. Caller picks one (load-balanced)
客户端 vs 服务端
| 客户端 | 服务端 |
|---|
text
Client-side: Caller ─▶ Registry ─▶ pick ─▶ Instance
Server-side: Caller ─▶ Load Balancer ─▶ Instance (LB does the lookup)
陷阱
过时的注册表条目会将流量路由到已死的实例。健康检查和 TTL 对于清除它们至关重要。
为什么这很重要
服务发现是使弹性扩展成为可能的关键——实例可以出现和消失,而无需任何人编辑配置。
在 Kubernetes 中,这通过 DNS 和 Services 内置提供,所以你通常可以免费获得发现功能;但理解该模型对于调试路由问题仍然很重要。
