知识卡片
高可用状态决策的根本矛盾(独裁/协商/民主三种模式)
内容
高可用系统靠”状态决策”判断节点是否正常,但依赖冗余的系统状态决策不可能完全正确——这是结构性矛盾。独裁式简单但决策者本身是单点;协商式(如主备)在连接中断时陷入”该不该切成两主”的两难;民主式(多数投票,如Paxos)复杂且有脑裂风险,为规避脑裂常要求”过半”,这又让真实故障时的少数派节点无法选主,是用可用性换正确性。发散:不存在绝对正确的高可用方案,只能在正确性和可用性间选取舍点。
参考来源
- 位置:《从0开始学架构》第7章《05|复杂度来源:高可用》"高可用状态决策"一节(源文件:_epub-src/OEBPS/Text/part0006_split_003.html、part0006_split_004.html)
- 结论依据:原文明确"通过冗余来实现的高可用系统,状态决策本质上就不可能做到完全正确",并逐一分析独裁式("当决策者本身故障时,整个系统就无法实现准确的状态决策")、协商式("如果两者的信息交换出现问题……状态决策应该怎么做")、民主式("投票节点数必须超过系统总节点数一半……这种方式虽然解决了脑裂问题,但同时降低了系统整体的可用性")三种模式各自的固有缺陷。
- 原始内容:通过冗余来实现的高可用系统,状态决策本质上就不可能做到完全正确……为了解决脑裂问题,民主式决策的系统一般都采用"投票节点数必须超过系统总节点数一半"规则来处理……这种方式虽然解决了脑裂问题,但同时降低了系统整体的可用性。