除非不是DNS问题...
几乎每个地方都有DNS TTL缓存 。基础设施DNS具有其自己的缓存 。JAVA客户端遭受了它们默认的30秒TTL缓存 , 而Go客户端通常没有实现DNS缓存 。与此相反,Java客户端报告了数百或数千次此问题的发生 。当然,我们可以缩短TTL缓存的时间 , 但为什么要在滚动更新期间只影响gRPC呢?
幸运的是,有一个易于实现的解决方法 。或者更好地说 , 解决方案:让新Pod启动时设置30秒的延迟 。
.spec.minReadySeconds = 30
- 1.
结论从配置的角度来看,gRPC就像一把瑞士军刀,可能不会默认适合您的基础架构或应用程序 。查看文档 , 进行调整,进行实验,并充分利用您已经拥有的资源 。我相信可靠和弹性的通信应该是您的最终目标 。
我还建议查看以下内容:
- Keepalives 。对于短暂的内部集群连接来说可能没有意义 , 但在某些其他情况下可能会有用 。
- 重试 。有时 , 值得首先进行一些退避重试,而不是通过尝试创建新连接来过载基础设施 。
- 代码映射 。将您的gRPC响应代码映射到众所周知的HTTP代码,以更好地了解发生了什么情况 。
- 负载均衡 。平衡是关键 。不要忘记设置回退并进行彻底的测试 。
- 服务器访问日志(gRPC code=OK)可能会因默认设置为信息级别而太冗长 。考虑将它们降低到调试级别并进行筛选 。
推荐阅读
- 如何精确控制 asyncio 中并发运行的多个任务
- 常见Windows远程漏洞信息整理
- 50岁的人应该如何锻炼身体?
- 如何快速通过QQ发布营销消息
- 如何利用琐碎时间减肥?5个提升热量缺口,促进分解
- 跳槽攻略:如何升级身价,全面考虑
- 卧室发现一只蟑螂如何找出窝 蟑螂进屋的十大预兆
- 怎么成为汉服模特,如何成为汉服模特
- 联想一体机如何关闭屏幕,联想小新pro16如何关闭屏幕
- 怎么选择洗面奶是皂基的还是氨基酸 如何区别洗面奶是氨基酸类或是皂类