如果我们在Kubernetes pod中定义我们的微服务,如果服务pod重新启动,我们是否需要检测gRPC客户端重新连接?
当pod重新启动时,主机名未更改,但我们无法保证IP地址保持不变。那么gRPC客户端仍然能够检测到要重新连接的新服务器吗?
答案 0 :(得分:4)
当断开TCP连接时(因为旧的pod停止),gRPC的通道将尝试重新连接指数退避。每次重新连接尝试都意味着解析DNS地址,尽管由于旧DNS条目的TTL(生存时间),它可能无法立即检测到新地址。此外,我相信一些实现会在检测到故障时而不是在尝试之前解析地址。
此过程在您的应用程序执行任何操作时自然发生,但在重新建立连接之前可能会遇到RPC故障。启用"等待准备好"在RPC上会降低RPC在转换期间失败的可能性,尽管这样的RPC通常意味着你不关心响应延迟。
如果(最终)没有重新解析DNS地址,那么这将是一个错误,您应该提出问题。
答案 1 :(得分:1)