如果我们在 Kubernetes Pod 中定义微服务,那么当服务 Pod 重新启动时,我们是否需要检测 gRPC 客户端重新连接?
当 Pod 重新启动时,主机名不会更改,但我们不能保证 IP 地址保持不变。那么 gRPC 客户端是否仍然能够检测到要重新连接的新服务器?
当 TCP 连接断开(因为旧 pod 停止)时,gRPC 的通道将尝试以指数退避重新连接。每次重新连接尝试都意味着解析 DNS 地址,尽管由于旧 DNS 条目的 TTL(生存时间),它可能不会立即检测到新地址。另外,我相信某些实现会在检测到故障时而不是在尝试之前解析地址。
此过程会自然发生,您的应用程序无需执行任何操作,但在重新建立连接之前可能会遇到 RPC 失败。在 RPC 上启用“等待就绪”将减少 RPC 在此过渡期间失败的机会,尽管这样的 RPC 通常意味着您不关心响应延迟。
如果 DNS 地址(最终)没有重新解析,那么这将是一个错误,您应该提交问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)