它解决的问题
地址并不稳定。Pod 重启会得到新 IP,弹性伸缩组会替换节点,故障转移会把副本提升到另一个区域。服务发现让调用方请求 payments 这个名字,而不是 10.0.4.17:8080,并拿到此刻确实健康的实例列表。
客户端发现与服务端发现
客户端发现模式下,调用方查询注册中心、自行选择实例并直连。服务端发现模式下,调用方访问负载均衡器或虚拟 IP,由后者完成查询。例如 Kubernetes 的 Service 为 Pod 提供稳定的虚拟地址,EndpointSlice 则跟踪后端实例。
客户端发现少一跳,也能实现更聪明的均衡策略,但会把发现逻辑推进每种语言的客户端库;服务端发现集中了这份逻辑,代价是多一次网络跳转。
健康检查与注销
注册只是容易的一半,注销才是注册表腐烂的地方:崩溃的进程无法宣告自己死亡,平台必须通过心跳、TTL 或编排器状态发现失败。健康感知的解析会在流量到达之前摘除不健康端点。
运维要点
把注册中心当作关键基础设施:跨可用区冗余、每个客户端本地缓存,以及查询失败时经过演练的降级路径。过期条目比缺失条目更危险,因为它会把请求送进黑洞。