典型的五台服务器集群如何能够容忍任意两台服务器发生故障?

How a typical cluster of five servers can tolerate the failure of any two servers?

我正在阅读 Raft 扩展的论文,上面有声明。另外我在网上发现了一个声明,说如果有 2*f+1 个服务器,f 个服务器的故障是可以容忍的。很明显还有另外两台服务器 f=1。有没有归纳法证明?

一旦您意识到要使任何操作成功,它必须在大多数服务器上成功完成,这是很直观的。即在出现差异的情况下,至少法定数量的服务器必须同意相同的值。

对于 2 个服务器,两个服务器必须同意大多数。

对于 3 个服务器,必须至少有 2 个同意才能达到多数。

对于 4 个服务器,必须至少有 3 个服务器同意才能达到多数。

对于 5 个服务器,必须至少有 3 个同意才能达到多数。

即对于 n 个服务器,n/2 +1 个服务器必须一致。

因此对于 n 个服务器,能够承受 失败 的服务器数量是 n - (n/2+1)

这意味着 2n 个服务器,它是 2n - (2n/2 + 1)

因此对于 2n +1 个服务器,它是 2n - (2n/2 + 1) + 1,这简化为 n 个服务器。