redis布置奇数台机器的原因是什么?
事实上,在我遇到的分布式系统中,大多数的集群都使用了奇数台设置,比如redis,zookeeper,hadoop等等!
为什么呢?
在集群设置中通常有一个原则:处于正常服务状态的机器大于一半,就认为整个集群是健康的,能维持整个系统的对外正常服务,具备容灾能力!
基于这个原则,我们来做如下假设:
①,只有两台机:挂掉一台,集群就只剩下刚好半数能提供服务!
②,有三台机:挂掉一台,还有两台,也就是说还能有2/3>1.5/3,满足大于半数的要求!
③,有四台机:挂掉一台没有问题,如果挂掉两台,则是2/4,不满足大于半数的要求!
也就是说三台机器和四台机器都只能挂机一台满足可运行机器大于半数,2n+1和2n+2的能力一样,那当然是选择更少成本的2n+1台机器了!
同样的五台六台也是如此,所以奇数台的选择是在保证集群稳定原则和成本两者共同作用下得到的最优选择!
说回redis:
1,要保证容灾能力:需要大于两台两台的机器实现数据备份,如果只有两台,那么无法保证容灾!
2,要保证投票机制:当redis主机挂掉的时候,必须通过投票的方式选择一台主机,而条件是获得一半以上的票,如果只有两台机器,投票将只有50%!
分享Java相关技术,是我一直在做的事,其中不乏几百赞的好文,请持续关注。。。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有