22|超时和重试:如何提升高并发重要请求的成功率?
徐逸

你好,我是徐逸。
首先预祝你春节假期快乐。这节课是春节前最后一次更新,1 月 28 日到 2 月 4 日期间我们会暂时停止更新,2 月 5 日再恢复更新。
在这一章前面的课程内容里,咱们一同深入学习了如何从编码以及单元测试这两个关键层面,来全力保障服务上线之后的稳定性。不过呢,即便咱们把代码编写得再健壮,服务在线上环境实际运行的过程当中,依旧会有很多突发状况。
这一章我们就从架构层面入手,一起看看线上服务稳定性的各种常见问题如何解决。
作为用户,想必你对双十一大促或者春运抢票这样的情况并不陌生,这种流量高峰期,也是最考验系统稳定性的时候。那今天呢,咱们就先来聊一聊,在这样的高并发场景下,下游访问偶尔响应时间变得很长时,我们究竟应当采取哪些措施,才能尽可能地确保我们的服务始终保持稳定且可用呢?
下游响应时间变长对我们服务有什么影响?
在讨论具体方案之前,你不妨先想一想:倘若请求下游偶尔出现响应时间变长的情况,可能给我们的服务带来怎样的影响呢?

图1 正常响应
要知道,当请求下游迟迟不能返回结果时,我们服务与下游服务之间的连接就无法释放,而且正在等待请求返回的协程也会被读请求给阻塞住。一旦响应时间变长的请求数量变多,极有可能使我们服务的机器资源被耗尽,最终使得我们的服务崩溃。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. 在高并发场景下,对下游调用需要设置合理的超时时间,以避免耗尽服务的机器资源。 2. 对于重要的请求类型,需要进行超时重试,同时确保下游调用是幂等的情况下,以提升整体服务的可用性。 3. 采用链路中止策略,避免重试风暴给下游造成较大压力。 4. 设置重试阈值熔断,控制重试比例,避免大面积超时重试直接把下游打崩。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 服务开发高手课》,新⼈⾸单¥59
《Go 服务开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论