集群的概念

以前经常听别人说部署集群的话至少需要3台机器,因为会存在选主的情况。但是有些项目的集群又不需3台可能两台就够了。这是为什么呢?

RocketMQ的broker集群为什么可以只有两台节点?

答:其实集群分不同的种类,具体的场景不同可能对集群节点数要求不同。比如RocketMQ的集群,你可以只部署两台broker,因为RocketMQ的集群中两个broker节点是对等的,并且两个节点之间不需要任何通信和交互,一台节点挂掉后不会影响另外一台节点。

zookeeper集群为什么至少需要3台节点呢?

答:zookeepr为了保证数据的一致性(大家都知道zk保证了CAP中的CP)需要有一个leader对事务性的操作做决定,就必须有一台leader.根据选取leader的算法,在一次选举中只有获得超过半数的投票才能成为leader,所以在创建全新的集群的时候必须要大于等于3台节点,集群才能正常工作。关于zookeeper集群的选主读者可以参看阿里云大学大数据课程的《大数据zookeeper快速入门》这门课程:https://edu.aliyun.com/lesson_1343_11464?spm=5176.10731542.0.0.6a9c9148OW5gKv#_11464

在这种情况下,集群各个节点需要就某个操作达成一致(选主)就需要通信交互,如果在达成一致性(选主)的过程中(我们称为协调)时集群中因为进程故障或者网络故障等随机故障(我们成为拜占庭故障),为了容忍f台节点的拜占庭故障,我们需要至少2f+1台节点参与协调,当f+1台节点就某个操作达成一致时那么这次协调就达成了一个共识。

 

------------------------------分析下redis的集群方式(待做)------------

CAP理论关于数据一致性和可用性不可同时保证的结果,在存在拜占庭故障的分布式集群中,如果你要保证一致性,那么就需要协调,如果在2f+1台节点的集群中挂了f+1台节点那么这中情况下集群是保证不了一致性的(达成一致性需要至少f+1台节点就某次投票给出相同的答案)。并且这时候集群是不可用的。即保证了一致性就保证不了高可用性。

总结:集群是否需要至少2f+1台节点取决于集群节点需不需要容忍拜占庭故障情况下的协调,如果节点之间不需要协调操作就像RocketMQ的broker集群那就不需要至少2f+1台节点的保证,如果你需要协调并且要容忍f台节点的拜占庭故障,那么至少需要2f+1台节点。通常需要协调的情况有:事务(需要就结果达成一致),选主

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值