或者一般来说:
假设我们有一个包含 n 个节点的集群,并且每条数据都复制到 k 个节点上。我们的法定人数计算为 (k+1) / 2。我们的数据是均匀分布的。
假设 m 个节点下降。那么,没有获得法定人数(请求命中 (k+1) / 2 个已关闭的节点)的概率是多少?所有请求中有多少百分比会面临这个问题?
这是 5 个节点和 3 复制因子的示例:
有了 5 个节点和复制因子 3,我们将有 10 个可能的 3 个服务器组:
abcde
组:
abc
abd
abe
acd
ade
ace
ade
bcd
bce
cde
1) a 已关闭,因此 7 个组受到影响,但我们需要 2 个组,因此集群仍处于启动状态并提供数据。
2) a 和 b 下降。9 组受到影响,但只有 abc、abd、abe 丢失了 2 台服务器,无法提供数据。因此,30% 的集群已关闭。
3) a、b、c 下降。所有组都受到影响,但只有 abc、abd、abe、acd、ace、bcd、bce 丢失了 2 或 3 个节点。因此,70% 的集群已关闭。
4) a, b, c, d - 100% 下降。
谢谢!