知识卡片
共识问题的形式化定义与FLP不可能性结果的真实含义
内容
共识问题形式化为:一个或多个节点提议某个值,算法要”决定”采用其中一个,必须同时满足四条性质——一致同意(没有两个节点决定的值不同)、完整性(没有节点决定两次)、有效性(决定的值必须是某节点真正提议过的,排除”永远决定null”这种平凡解)、终止(所有未崩溃的节点最终都能决定出结果,这是唯一的活性属性,其余三条是[[安全属性不可撤销与活性属性终将实现的区分帮助推理算法正确性]]里的安全属性)。如果不追求容错,硬编码一个独裁节点就能满足前三条,但该节点一崩溃系统就再无法取得进展——2PC正是这种模式,不满足终止属性。著名的FLP不可能性结果证明:只要节点有崩溃风险,异步系统模型下不存在总能达成共识的确定性算法。但这个结论的适用范围其实很窄:FLP假设的是完全不能用时钟或超时的纯异步模型;一旦允许算法用超时识别可疑的崩溃节点(哪怕误判),或者仅仅允许使用随机数,共识就变成可解问题——这正是现实中的容错共识算法之所以可行的理论基础。
参考来源
- 位置:《数据密集型应用系统设计》第九章《一致性与共识》"分布式事务与共识""共识的不可能性"(源文件:_epub-src/ch9_split_001.html)
- 结论依据:原文给出共识的一致同意/完整性/有效性/终止四条形式化性质,并说明FLP结果是在不允许时钟或超时的严格异步模型下证明的,一旦允许超时或随机数则共识变为可解,直接支撑本卡片结论。
- 原始内容:一致同意……完整性……有效性……终止……FLP结果是在异步系统模型中被证明的……如果允许算法使用超时或其他方法来识别可疑的崩溃节点……共识变为一个可解的问题。