知识卡片
可用性不是越高越好,用"风险敞口"给优先级排序
内容
高可用性常被误解成一个绝对目标(”系统必须永远在线”),但100%可用性 本身就不可能达到,可用性只能是相对的、用百分比(”几个9”)表达的近似值。 更关键的是,可用性和投入成本之间不是线性关系:从”两个9”提升到”三个9” 花的钱,往往远小于从”四个9”提升到”五个9”要花的钱,越往上一分提升越 昂贵。这意味着追求高可用性本质上是一个投资回报问题——先问”这个应用 真的需要这个可用性目标吗”,而不是默认越高越好;如果继续投入却只能 换来很有限的收益,这笔投入很可能不值得,倒不如接受一个更现实的目标。 帮助判断”该优先投入哪里”的一个具体方法是计算”风险敞口”:把每一类潜在 故障的”发生概率”和”一旦发生的代价”相乘,列成一张表,风险敞口最高的项 就是最该优先加固的地方——这比凭直觉猜”哪里最危险”更可靠,因为它同时 考虑了”多容易发生”和”发生了有多惨重”两个维度,一个发生概率很低但代价 极大的故障,和一个经常发生但代价很小的故障,可能有相近的优先级,仅凭 直觉容易只盯着”最吓人”或”最常见”的那一头。可用性的定义本身也不能只看 “服务是否在运行”,还要看”是否能以足够好的性能处理请求”(比如重启后 需要几小时预热才能恢复正常响应速度的服务器,名义上在运行,实际上并 没有真正可用),以及是否会丢失数据——这些都是设定可用性目标时该一并 纳入考量的维度。
参考来源
- 位置:《高性能MySQL:第3版》第12章"高可用性"12.1节"什么是高可用性"
(源文件:_epub-src/OEBPS/Text/part0019.xhtml)
- 结论依据:原文明确"可用性每提高一点,所花费的成本都会远超之前;
可用性的效果和开销的比例并不是线性的……可以通过计算'风险敞口
(risk exposure)',将失效概率与失效代价相乘来确认高优先级的风险",
直接说明可用性投入的边际成本递增特性及风险敞口这一优先级排序方法。
- 原始内容:可用性每提高一点,所花费的成本都会远超之前;可用性的
效果和开销的比例并不是线性的……可以通过计算"风险敞口",将失效
概率与失效代价相乘来确认高优先级的风险。