【发布时间】:2013-10-29 01:24:25
【问题描述】:
或者一般来说:
假设我们有一个包含 n 个节点的集群,并且每条数据都在 k 个节点上复制。我们的法定人数计算为 (k+1) / 2。我们的数据是平均分布的。
假设 m 个节点下降。那么,没有达到法定人数(请求命中 (k+1) / 2 个已关闭的节点)的概率是多少?所有请求中有多少百分比会面临这个问题?
这是 5 个节点和 3 复制因子的示例:
如果有 5 个节点和复制因子 3,我们将有 10 个可能的 3 个服务器组:
a b c d e
组:
a b c
a b d
咩咩
a c d
一个德
a c e
一个德
b c d
b c e
c d e
1) a 已关闭,因此 7 个组受到影响,但我们需要 2 组的仲裁,因此集群仍处于启动状态并提供数据。
2) a 和 b 下降。 9 个组受到影响,但只有 a b c、a b d、a b e 丢失了 2 个服务器,无法提供数据。因此,30% 的集群已关闭。
3) a、b 和 c 下降。所有组都受到影响,但只有 a b c、a b d、a b e、a c d、a c e、b c d、b c e 丢失了 2 或 3 个节点。因此,70% 的集群已关闭。
4) a、b、c、d - 100% 下降。
谢谢!
【问题讨论】:
标签: nosql cassandra replication permutation probability