随着微服务入雨后春笋般茁壮发展,越来越多的企业采用了微服务架构,但系统的稳定性和可用性问题也随之不断产生,如何有效解决可用性问题日益重要,故通过弹力设计系列,介绍微服务常用的容错设计手段。
本文是系列文章的总览篇,介绍Why和What。
为什么我们需要弹力设计
1.故障不可避免
•故障的发生是正常的,而且很常见
•故障不可预测,一旦发生,影响面往往难以估计
2.分布式系统的复杂性
•随着微服务的普及,系统逐渐复杂化,导致常规的运维手段难以胜任,需要提前至设计阶段
•需要控制爆炸半径,自动止损,避免损失扩大
系统不可用的原因
以系统边界视角可划分为内部因素与外部因素。
对系统出现故障的常见问题可总结为以下几类
系统可用性度量
工业界使用的公式如下:
where:
MTTF 是 Mean Time To Failure,
平均故障前的时间,即系统平均能够正常运行多长时间才发生一次故障。MTTF 越长,系统的可靠性越高。
MTTR 是 Mean Time To Recovery,
平均修复时间,即从故障出现到故障修复的时间,MTTR越短,系统的可靠性越高。
根据公式我们看到,提高系统可用性主要有两种方式:
1.提高系统的无故障时间
2.减少系统的故障恢复时间
另外,我们常说的几个9,即从上面公式演化而来,便于商业化沟通。对几个9的可用性整理如下:
弹性设计的维度
弹性设计又称容错设计,着眼于分布式系统的各种‘容忍’能力,主要包括以下几个方面:
后续文章均基于弹性设计中容错能力、可伸缩性、一致性及流量防护子项展开。
欢迎扫码关注更多内容。也欢迎私信我反馈您的意见和建议,您的关注是我持续创作的动力。