为什么集群的最小节点数是3?还要奇数个节点?

为什么集群的最小节点数是3?还要奇数个节点?
最新回答
云纹梦纷蝶

2020-08-11 02:19:21

Redis集群和Tomcat集群之间存在服务差异。Tomcat集群为无状态且地位平等的服务集群,仅需确保能应对流量峰值并避免单点故障,因此推荐节点数量大于等于3。然而,Zookeeper、Redis等有状态服务存在主从地位,集群节点数量低于3时无法实现高可用性,推荐至少3个节点,且为了优化高可用性,通常采用奇数节点数量。

为什么最少需要3个节点?以及为何采用奇数节点?从高可用角度解释,最少3个节点是为了实现故障转移的稳定性和可靠性。在Redis Sentinel模型中,Quorum数和Majority数的概念至关重要。若设置Majority数为1,容易导致网络分区,产生脑裂现象;若设置为2,尽管能确保故障转移操作者,但在单个节点故障时,系统将不可用。因此,推荐使用3个哨兵节点,Majority数设置为2,以实现稳定的故障转移。

从故障后系统压力角度考虑,两个节点集群在故障后,剩余节点将承担原本两倍的压力,可能导致快速失效。而三个节点集群,即使一个节点故障,其余两个节点能分担压力,系统仍能持续运行一段时间。这表明,与两个节点相比,三个节点能显著增强集群的健壮性。

从最大效益角度出发,部署奇数个节点能优化服务的运行效率和可靠性。例如,当总节点数为偶数时,最小选主票数增加,但集群的容忍度并无提升,导致额外风险且无可用性增强。因此,有状态服务在部署奇数个节点时,能获得更大的预期效益和较小的风险。

综上,Redis集群与Tomcat集群在服务设计、故障转移、系统压力及最大效益方面存在差异。在选择节点数量时,考虑高可用性、故障后压力与最大效益,推荐采用至少3个节点的集群部署,并选择奇数节点数量以优化服务运行。