知识卡片
接口级故障的特征与成因,及应对的共通思想
内容
异地多活主要应对的是系统级故障(机器宕机、机房故障、网络故障),这类故障影响大但发生概率较低。还有一类故障影响相对较小、但发生概率明显更高——接口级故障:系统本身没宕机、网络也没中断,但业务却出问题了,典型表现是响应缓慢、大量访问超时、大量访问出现异常(比如给用户弹出”无法连接数据库”)。这类问题的根源通常是系统压力太大、负载太高,导致无法快速处理业务请求,进而引发一连串后续问题——最常见的场景是某个数据库慢查询把数据库服务器资源耗尽,导致读写超时,业务在读写数据库时要么连不上、要么超时,用户看到的现象就是访问一会儿很慢、一会儿抛异常、一会儿又恢复正常。接口级故障的成因分两类:内部原因(程序bug导致死循环、某个接口触发数据库慢查询、程序逻辑不完善耗尽内存等);外部原因(黑客攻击、促销或抢购带来平时几倍甚至几十倍的用户量、第三方系统大量请求或响应缓慢等)。应对接口级故障的核心思想和[[技巧1:保证核心业务的异地多活,而非所有业务]]、[[技巧4:只保证绝大部分用户的异地多活,及银行”转账申请”式设计]]是相通的:优先保证核心业务、优先保证绝大部分用户,而不是奢望100%的功能和用户都不受影响。
参考来源
- 位置:《从零开始学架构》第31讲《如何应对接口级的故障?》开篇(源文件:_epub-src/OEBPS/text00002.html)
- 结论依据:原文说明接口级故障"系统并没有宕机,网络也没有中断,但业务却出现问题了……主要原因在于系统压力太大、负载太高,导致无法快速处理业务请求,由此引发更多的后续问题",并列出内部原因与外部原因,最后指出"解决接口级故障的核心思想和异地多活基本类似:优先保证核心业务和优先保证绝大部分用户",直接支撑本卡片结论。
- 原始内容:接口级故障的典型表现就是系统并没有宕机,网络也没有中断,但业务却出现问题了……解决接口级故障的核心思想和异地多活基本类似:优先保证核心业务和优先保证绝大部分用户。