标准答案
- 同一网络中的服务通常通过内部 DNS 或服务发现名称解析到当前实例地址。
- 应用应处理解析结果变化、连接失败、超时和重试,不能永久缓存一个短生命周期容器 IP。
- 服务名可表达逻辑依赖,但不代表后端一定只有一个实例,连接池和负载均衡策略仍需明确。
- 排查要从容器内验证 DNS、路由、端口、协议和应用鉴权,而不是只在宿主机测试。
题目解析
容器编排环境中,服务名通常通过内置 DNS 映射到当前可用的服务地址,容器重建或扩缩容时 IP 可以变化。服务名解决的是寻址,不代表目标已经 ready,也不替代连接超时、健康检查、协议版本和认证配置。
客户端应使用稳定的服务名和端口,处理解析结果变化、连接失败、半开连接和下游过载。排查要验证 DNS、路由、连接、TLS/RPC 握手和业务响应,不能因为名字能解析就认为服务调用链正常。
常见误区
- 误区:把 docker inspect 得到的 IP 写死在配置。改正:使用编排平台提供的服务名或发现机制,并设置连接刷新策略。
- 误区:只验证 DNS 解析。改正:继续测试实际协议、认证、超时和业务响应。