知识卡片
级联故障与用异步隔离非核心依赖
内容
级联故障是复杂系统里最难防的问题:一个组件变慢或故障,会通过负载转移或依赖关系把压力传导给其他健康组件,像电网连锁跳闸一样蔓延。典型场景是埋点统计服务变慢,所有页面渲染同步调用它跟着变慢,用户刷新进一步推高负载,形成恶性循环。发散:唯一靠谱的预防思路是设计时假设任何非核心依赖都会变慢或挂掉:把同步RPC换成异步消息,加短超时保护,允许在它不可用时直接跳过。
参考来源
- 位置:第27章《可用性和弹性视角》27.5.2节「级联故障」埋点统计服务示例(源文件:_epub-src/OEBPS/text00456.html附近)
- 结论依据:原文用埋点统计服务变慢导致所有同步调用它的页面渲染跟着变慢、用户刷新进一步推高负载的例子说明级联故障,并给出解决方案是用异步消息代替RPC调用,直接支持卡片结论。
- 原始内容:"在这些系统中蔓延的级联故障是,统计数据跟踪服务出现故障,而所有页面渲染组件都会调用该服务。如果跟踪服务过载并变得缓慢,就会导致所有页面渲染都会变慢。这会导致用户取消请求并点击浏览器的'刷新'按钮,从而进一步提高站点的负载,影响勉强运行的跟踪服务。解决这个问题的方案是使用更精细的方法来调用跟踪服务……不要通过RPC服务调用来调用跟踪服务,而是通过异步消息来发送信息。"