首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共识算法:如果奇数集群因为节点故障而变成偶数,会发生什么?

共识算法:如果奇数集群因为节点故障而变成偶数,会发生什么?
EN

Stack Overflow用户
提问于 2019-05-16 19:45:13
回答 1查看 975关注 0票数 3

共识算法(例如raft)要求集群包含奇数个节点,以避免分裂大脑问题。

假设我有一个包含5个节点的集群,如果只有一个节点发生故障,会发生什么情况?集群现在有4个节点,这打破了奇数规则,集群还会继续正常运行吗?

一种解决方案是再删除一个节点,使集群只包含3个节点,但如果之前出现故障的节点又回来了怎么办?然后集群又有了4个节点,为了保持集群的奇数,我们必须恢复之前丢弃的节点。

consensus算法的实现是自动处理这个问题,还是必须在我的应用程序代码中处理(例如,删除一个节点)?

EN

回答 1

Stack Overflow用户

发布于 2019-05-16 20:32:36

可以,集群将继续正常工作。一个N节点的集群,如果N是奇数(N = 2k + 1),可以处理k节点故障。只要大多数节点是活的,它就可以正常工作。如果一个节点出现故障,而我们仍然拥有大多数节点,那么一切都是正常的。只有当你失去大多数节点时,你才会有问题。

没有理由强制集群具有奇数个节点,并且实现不会将其视为问题,因此不会处理它(删除节点)。您可以在偶数个节点上运行共识算法,但通常将其设置为奇数会更有意义。

代码语言:javascript
复制
3 node cluster can handle 1 node fail (the majority is 2 nodes).
4 node cluster can handle 1 node fail (the majority is 3 nodes).
代码语言:javascript
复制
5 node cluster can handle 2 node fail (the majority is 3 nodes).
6 node cluster can handle 2 node fail (the majority is 4 nodes).

我希望这能更清楚地说明为什么将集群大小设置为奇数更有意义,因为它可以在集群中节点较少的情况下处理相同数量的节点故障。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56167820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档