笔记
-
高可用定义:系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。
-
系统的高可用方案五花八门,但万变不离其宗,本质上都是通过“冗余”来实现高可用。
-
高性能增加机器目的在于“扩展”处理性能;高可用增加机器目的在于“冗余”处理单元。
-
分布式领域里面有一个著名的 CAP 定理,从理论上论证了存储高可用的复杂度。也就是说,存储高可用不可能同时满足“一致性、可用性、分区容错性”,最多满足其中两个,这就要求我们在做架构设计时结合业务进行取舍。
-
无论是计算高可用还是存储高可用,其基础都是“状态决策”,即系统需要能够判断当前的状态是正常还是异常,如果出现了异常就要采取行动来保证高可用。
-
几种常见的决策方式:
-
独裁式。存在一个独立的决策主体,我们姑且称它为“决策者”,负责收集信息然后进行决策;所有冗余的个体,我们姑且称它为“上报者”,都将状态信息发送给决策者。
de778bc2-49ad-4450-afa6-9bf153601ffb.png
-
协商式。两个独立的个体通过交流信息,然后根据规则进行决策,最常用的协商式决策就是主备决策。
361b8168-0d41-4f1d-94f7-9f1d69d1666c.png
-
民主式。个独立的个体通过投票的方式来进行状态决策。
d3054940-3b24-4fb8-92c0-92667d78a83b.png
-
理解与思考
-
李老师在这里着重讲的是通过冗余备份来提供高可用。我觉得,提供系统本身的稳定性也是一个重要的方面。
-
高可用没有完美的解决方法。需要站在业务的角度,分析哪方面的原因会导致宕机。针对这些原因定制一个合适的解决方案。
思考题
高性能和高可用是很多系统的核心复杂度,你认为哪个会更复杂一些?理由是什么?
高可用。涉及到状态处理,这是最难控制和把握的地方。
网友评论