【问题标题】:Consensus algorithm for two nodes两个节点的共识算法
【发布时间】:2015-05-28 20:40:50
【问题描述】:
据我所知,如果 PAXOS、RAFT 和 ZAB 都处于活动状态,它们可以与两个节点一起工作。这意味着如果两个节点之一崩溃,分布式应用程序也会崩溃。如果我错了,请纠正我。
有没有适合两节点集群的算法,可以容忍一个节点的故障?
【问题讨论】:
标签:
distributed
distributed-computing
【解决方案1】:
没有可以容忍大多数集群失败的共识算法。问题在于,根据其定义,共识需要来自大多数集群的输入。如果您甚至无法与大多数服务器通信,如何达成共识?怎么知道宕机的服务器会同意任何给定的值?基于多数的共识算法的工作假设是对某个值的多数协议强制要求不能为给定状态选择其他值。
当然,在一般意义上,有许多算法可以容忍两节点系统中的一个节点发生故障。问题是你是否愿意容忍这种取舍。这在很大程度上取决于您的用例。共识算法以牺牲可用性为代价提供强一致性。或者,如果您需要可用性(即即使只有不到大多数节点存活的集群也能继续运行),您可以使用更简单的算法,例如一致性哈希和八卦。同样,这些仅取决于您的用例。