为什么好多高可用方案都是 3 个节点?为什么是 3?

2020-12-25 11:15:00 +08:00
 zealinux

比如 eureka, 不清楚为什么不是 2,或者 4 ?

8374 次点击
所在节点    程序员
66 条回复
zzzhen
2020-12-25 14:27:01 +08:00
防脑裂
相同的容错下,奇数台节省资源
namelosw
2020-12-25 14:45:47 +08:00
3 是大于 1 的最小奇数. 一个挂了就完蛋, 两个的话不知道听谁的, 三个多数服从少数. 有时候你也能看见五个之类的.

再给你一道题, 想想为什么游戏画面都是三角形拼的
namelosw
2020-12-25 14:46:11 +08:00
@namelosw *少数服从多数
ershierdu
2020-12-25 14:50:33 +08:00
@selboo #31 这个比喻可能不太相似,TCP 三次握手是为了让客户端、服务端分别确认自己的接收 /发送能力、对方的接收 /发送能力正常,少一次都不全面
litchinn
2020-12-25 14:53:54 +08:00
如果是两个,其中一个数据错了你没法区分是哪个错了呀
someonedeng
2020-12-25 15:11:01 +08:00
两个的话,挂一个剩下那个估计也差不多了
hahastudio
2020-12-25 15:15:19 +08:00
突然意识到 split-brain 的中文译名这么惊悚。。。
Bromine0x23
2020-12-25 15:16:29 +08:00
至少 3 个节点才能形成相对多数防止脑裂
mawenjian
2020-12-25 15:50:51 +08:00
避免雪崩,两台的压力压到一台上去,活着的这台也离挂掉不远了。
expkzb
2020-12-25 15:54:20 +08:00
因为要投票选出“主”,偶数会出现平局
cairnechen
2020-12-25 16:22:45 +08:00
3 人才能成立党支部
Rasphino
2020-12-25 16:54:45 +08:00
楼主说的这个高可用,应该指的是 crash fault tolerance 的系统,节点数需要满足 n=2f+1 ( f 为会崩溃的节点数),所以最小的系统需要 3 个节点。

拜占庭容错系统的节点数是 n=3f+1 ( f 为拜占庭节点数量)。所以拜占庭容错系统需要至少 4 个节点才能容忍 1 个拜占庭节点。

相关的理论可以看 paxos,raft,pbft 等著名论文。主要思想是:保证正常运作的节点数量过系统的半数。
sampeng
2020-12-25 17:08:46 +08:00
两个问题:

1 是楼上说选举的问题。
2 是如果是 2 台,挂了一台,这可是注册中心,这个玩意挂了你全部业务都挂了,只剩一台在跑你不慌么?你能到挂一台马上起来?如果是 2 台,就算没选举的问题,挂一台,又变成单点状态了,很可能下一秒他就挂了。所以最小值是 3.

ps,不是所有分布式都是需要选举的。。raft 等带来的复杂度也是非常可观的。
ranxy
2020-12-25 17:09:25 +08:00
请看 paxos 或者 raft 的 paper
vloony
2020-12-25 17:32:39 +08:00
比如 3 个挂了一个 那么重新上线一个节点需要拷贝数据 就需要一个不是使用中的节点 否则拷贝使用中的节点 会影响性能
biepin
2020-12-25 17:47:56 +08:00
提供一个概率角度的,假设每个节点出错的概率是 10%,且节点出错是互相独立的,那么三个同时出错的概率是 0.1*0.1*0.1 = 0.0001
littiefish
2020-12-25 18:29:12 +08:00
@hhyvs111 这事都怪袁隆平让他们吃的太饱
Leon6868
2020-12-25 19:01:40 +08:00
@namelosw 三点确定一个面

(平面几何似乎与这个主题没多大关系)
namelosw
2020-12-25 19:05:47 +08:00
嗯, 两个点构不成面, 四个点很容易出 bug, 扭起来没法构成一个面
wangyzj
2020-12-25 19:15:04 +08:00
脑裂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738827

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX