Go 服务开发高手课
徐逸
头部大厂资深 Go 技术专家、前腾讯资深工程师
1225 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 24 讲/共 28 讲
开篇词 (1讲)
Go 服务开发高手课
15
15
1.0x
00:00/00:00
登录|注册

23|熔断和降级:下游服务大量报错,如何快速止损?

你好,我是徐逸。
通过上节课的学习,相信你已经知道,当下游服务偶尔出现超时的状况时,怎样借助重试机制来提高服务的可用性。然而,一旦下游服务出现容量过载这类较为严重的问题时,重试便不再是提升服务可用性的有效手段了。在这种情况下,我们必须通过其它方法,来保障服务的稳定性。
今天呢,我们就来聊一聊,当下游服务因过载等原因而导致大量报错时,作为上游服务,有哪些行之有效的方法能帮我们快速止损。

熔断:下游服务过载怎么办?

在讨论具体方案之前,你不妨先思考这样一个问题:倘若下游服务出现过载,而我们却未采取任何应对措施,将会引发怎样的连锁反应呢?
一旦下游服务过载,如果我们还在源源不断地请求下游服务,那么新的请求就会不断地在下游堆积,排队等待处理。这些积压的请求会大量占用连接、内存等资源,让下游服务很难恢复。此外,由于我们的服务需要长时间等待下游服务的响应,这将导致我们服务大量的协程和连接资源被占用。在极端情况下,甚至可能拖垮我们的整个系统,进而引发雪崩效应。
那么,面对下游服务过载,持续不断的请求导致下游迟迟无法恢复,甚至可能引发雪崩的问题,我们该如何应对呢?
我们知道,在电路系统里,当电流超过安全阈值时,保险丝会自动熔断,切断电路,从而避免电器设备因电流过载而受损。借鉴电路系统里保险丝的保护机制,在服务治理领域,同样存在与之类似的熔断机制来应对服务过载问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 熔断机制类似于电路系统中的保险丝,能够在下游服务出现超时等错误时自动停止向下游服务发送请求,避免故障扩大。 2. 熔断器维护闭合状态、断开状态和半熔断状态,通过状态转换来实现熔断机制。 3. 降级是指服务本身资源不足或下游服务不可用时,通过提供默认结果或关闭非核心功能等手段,来保证系统的核心功能能够继续运行,从而提高系统的可用性和稳定性。 4. 降级方案的核心在于精心设计降级策略,常见策略有返回兜底数据、异步处理和关闭非核心功能三种方案。 5. 在降级实践过程中,需要选择合适的降级方式,如利用远程配置开关或依赖自动降级机制,并定期演练以确保降级的有效性。 6. 在对下游服务进行调用时,需要配备熔断器并精心制定降级预案,从而提升服务的稳定性和可用性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 服务开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)