架构师训练营第十一周作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述
导致系统不可用的原因
根据故障发生位置,我们可以把原因归结为三类。
外部请求
外部并发请求数量达到一定程度,超过系统处理能力时,造成系统服务质量下降,导致系统不可用。
内部组件
系统内部组件出现故障导致系统相关服务不可用。
所依赖的环境/服务
系统依赖的环境/服务不能正常响应造成系统不可用。
高可用方案
根据方案解决的问题类型,可以将方案作以下分类:
减少外部请求冲击
限流
通过令牌桶、滑动窗口、或者漏桶等方式,限制外部请求处理速度。当请求速度高于预定阈值时,请求被拒绝,这样,系统的并发请求数总是保持在安全范围之内,不回出现资源过饱和的情况。
降级
当系统发现由于处理能力或者内部资源无法满足全部请求时,对部分低优先级的请求进行降级,将资源用于处理高优先级的请求。
降低内部故障影响
隔离
按照高内聚、低耦合设计模块和组件,实现不同业务的隔离;采用虚拟机和容器技术部署服务,实现不同服务资源的隔离。通过这些隔离,避免一个组件的故障影响到其他组件。
Failover
通过集群、负载平衡、故障监测等手段,在某个组件实例发生故障时,将请求转发到其他健康组件实例,减少故障影响时长。
熔断
在下游组件故障时,上游组件通过熔断机制,避免继续将请求发给下游,造成不必要的护理负担。
事务补偿
在微服务等分布式架构中,当组件故障确实造成无法正常完成业务请求时,我们需要对请求引发的事务进行补偿操作,使业务数据最终恢复到事务开始前的状态,保持业务数据的最终一致。
应对偶发故障
重试
通过重试,规避网络瞬断、系统突发故障造成的短暂响应延迟等问题对可用性的影响。
幂等
重试会导致请求重发,服务组件通过实现幂等,避免重复处理对已完成的请求。
评论