写点什么

架构师训练营第十一周作业

用户头像
zamkai
关注
发布于: 2021 年 02 月 07 日

导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述

导致系统不可用的原因

根据故障发生位置,我们可以把原因归结为三类。

外部请求

外部并发请求数量达到一定程度,超过系统处理能力时,造成系统服务质量下降,导致系统不可用。

内部组件

系统内部组件出现故障导致系统相关服务不可用。

所依赖的环境/服务

系统依赖的环境/服务不能正常响应造成系统不可用。


高可用方案

根据方案解决的问题类型,可以将方案作以下分类:

减少外部请求冲击

限流

通过令牌桶、滑动窗口、或者漏桶等方式,限制外部请求处理速度。当请求速度高于预定阈值时,请求被拒绝,这样,系统的并发请求数总是保持在安全范围之内,不回出现资源过饱和的情况。

降级

当系统发现由于处理能力或者内部资源无法满足全部请求时,对部分低优先级的请求进行降级,将资源用于处理高优先级的请求。

降低内部故障影响

隔离

按照高内聚、低耦合设计模块和组件,实现不同业务的隔离;采用虚拟机和容器技术部署服务,实现不同服务资源的隔离。通过这些隔离,避免一个组件的故障影响到其他组件。

Failover

通过集群、负载平衡、故障监测等手段,在某个组件实例发生故障时,将请求转发到其他健康组件实例,减少故障影响时长。

熔断

在下游组件故障时,上游组件通过熔断机制,避免继续将请求发给下游,造成不必要的护理负担。

事务补偿

在微服务等分布式架构中,当组件故障确实造成无法正常完成业务请求时,我们需要对请求引发的事务进行补偿操作,使业务数据最终恢复到事务开始前的状态,保持业务数据的最终一致。

应对偶发故障

重试

通过重试,规避网络瞬断、系统突发故障造成的短暂响应延迟等问题对可用性的影响。

幂等

重试会导致请求重发,服务组件通过实现幂等,避免重复处理对已完成的请求。


用户头像

zamkai

关注

还未添加个人签名 2018.02.24 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第十一周作业