为什么好多高可用方案都是 3 个节点?为什么是 3?
比如 eureka, 不清楚为什么不是 2,或者 4 ?
比如 eureka, 不清楚为什么不是 2,或者 4 ?
没有找到相应的理论参考,说一下个人猜想:
3 节点中如果 down 了 1 个节点,管理员需要想办法去恢复成 3 节点,此时可以修复 down 的节点也可以加新的空节点,不管是哪一种都涉及到同步数据的过程,此时剩下的 2 个节点中可以 1 个主要承载应用负载,另一个主要承载同步负载,使得同步过程不影响业务性能。如果是 2 节点方案的话,剩下的 1 个节点既要承担应用负载,又要承担同步负载,会使得应用性能容量减半。
如果是 4 节点的话,除非有其他设计加成,否则和 3 节点的效果差不多,只不过连续 down 2 个节点问题也不大。
再给你一道题, 想想为什么游戏画面都是三角形拼的
拜占庭容错系统的节点数是 n=3f+1 ( f 为拜占庭节点数量)。所以拜占庭容错系统需要至少 4 个节点才能容忍 1 个拜占庭节点。
相关的理论可以看 paxos,raft,pbft 等著名论文。主要思想是:保证正常运作的节点数量过系统的半数。
1 是上说选举的问题。
2 是如果是 2 台,挂了一台,这可是注册中心,这个玩意挂了你全部业务都挂了,只剩一台在跑你不慌么?你能到挂一台马上起来?如果是 2 台,就算没选举的问题,挂一台,又变成单点状态了,很可能下一秒他就挂了。所以最小值是 3.
ps,不是所有分布式都是需要选举的。。raft 等带来的复杂度也是非常可观的。
(平面几何似乎与这个主题没多大关系)