知识卡片
高可用的本质是冗余,而非高性能的"扩展"
内容
高可用指系统能够无中断地执行其功能,但这个”无中断”本质上是做不到绝对完美的——硬件会出故障、会老化,软件会有bug、会越来越复杂,断电、水灾、地震这类外部环境事故更是不可控、难以预测。既然做不到绝对不中断,高可用方案在形式上几乎都归结到同一个手段:冗余——一台机器不够就两台,两台不够就四台;一个机房可能断电就部署两个机房;一条通信线路可能故障就用两条、三条(移动电信联通一起上)。这个”多准备几份”的手段单从形式上看,和高性能场景下”多加几台机器”看起来一模一样,但两者的目的有根本区别:高性能加机器是为了”扩展”处理性能——总处理能力随着机器数量线性(打折)增长;高可用加机器是为了”冗余”处理单元——多出来的机器平时并不承担额外的处理量,它们的价值只体现在原有单元出故障的那一刻,顶替上去继续提供服务。这个区分很重要,因为它意味着评估”要不要加机器”这件事的判断标准完全不同:高性能维度问的是”加了之后能撑住多大的量”,高可用维度问的是”某个单元挂了之后,系统还能不能正常运转”,同一个”加机器”的动作,考核指标却是两套完全独立的标准。
参考来源
- 位置:《从零开始学架构》第05讲《复杂度来源:高可用》(源文件:_epub-src/OEBPS/text00000.html)
- 结论依据:原文说明"系统的高可用方案五花八门,但万变不离其宗,本质上都是通过'冗余'来实现高可用……高可用增加机器目的在于'冗余'处理单元……高性能增加机器目的在于'扩展'处理性能;高可用增加机器目的在于'冗余'处理单元",直接支撑本卡片结论。
- 原始内容:所以,系统的高可用方案五花八门,但万变不离其宗,本质上都是通过"冗余"来实现高可用……高可用的"冗余"解决方案,单纯从形式上来看,和之前讲的高性能是一样的,都是通过增加更多机器来达到目的,但其实本质上是有根本区别的:高性能增加机器目的在于"扩展"处理性能;高可用增加机器目的在于"冗余"处理单元。