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