- 接口级故障:系统没有宕机、网络没有中断,但是业务却出现了问题:业务响应慢、大量访问超时、大量访问异常。
- 本质:系统负载过高,导致无法快速处理业务。比如,如果系统中存在慢查询,当负载过高时,慢查询会将数据库资源耗尽,导致读写操作超时,业务读写很容易出现超时现象。即使没有慢查询当负载过高时也会出现超时情况。
- 产生原因的内部条件:程序bug导致死循环、存在慢查询、程序逻辑不对导致耗尽内存
- 外部条件:黑客攻击、促销、第三方系统响应缓慢
解决思路
- 解决接口级故障的核心思想是优先保障核心业务和优先保障绝大部分用户。比如登录功能很重要,当访问量过高时,停掉注册功能,为登录腾出资源。
解决策略
降级
系统将某些不重要的业务或接口的功能降低,可以只提供部分功能,也可以完全停到所有所有不重要的功能。降级的思想是丢车保帅。
- 常见降级方式
- 系统后门降级:系统预留后门用于降级,比如提供一个降级URL,访问URL时就执行降级指令。缺点:如果服务器数量多,需要一台一台去操作,效率低。
-
独立系统降级:将降级操作独立到一个单独的系统中,可以实现复杂的权限管理、批量操作等功能。
独立降级系统
熔断
降级是应对系统自身的故障,而熔断的目的是应对外部系统的故障。比如A