被很多资料误导了,说什么redis只能是奇数个节点。其实这是一种错误的说法,Redis只不过是推荐奇数个节点,从来没有过必须是奇数节点的说法,那么这是为什么呢?
其主要原因还是从成本上考虑的,因为奇数个节点和偶数个节点允许宕机的节点数是一样的,比如3个节点和4个节点都只允许宕机一台,那么为什么要搞4个节点去浪费服务资源呢?
那么话又说回来了,为什么三个节点和四个节点都只允许宕机一个节点呢?这是因为redis规定
集群中,半数以上节点认为主节点故障了,才会选举新的节点。
我们假设存在这样一个Redis集群(A、B、C三个节点)A节点是主节点
情况一:坏了一个节点
如果是A节点坏了,就需要从B和C里面选举一个节点出来作为主节点,而因为B和C占比在集群中个占33.333%。那么投票会有以下四种情况和对应结果
可以看到,只要投票次数足够多,总能从B或者C中选举出来一个主节点,系统总是能够自动恢复的。
情况二:坏了两个节点
假设A和B或者A和C都坏了,剩下的一个节点占比只有33.333%。那么他是没法选举自己为主节点的,整个系统也是没法恢复正常的。
情况一:坏了一个节点
如果是A节点坏了,就需要从B和C和D里面选举一个节点出来作为主节点,而因为B和C和D占比在集群中个占25%%。那么投票会有以下几种情况和对应结果
情况二:坏了两个节点
如果是A和B坏了,剩下的C和D投票最多只能投到50%。不满足超过半数的约定,系统无法恢复正常。
通过上面的分析,想必可以清楚,不管是3个节点还是4个节点,都只能允许一个节点宕机。所以在实际使用过程中出于成本的考虑,一般会建议奇数个节点。
但是:4个节点的性能和容量是比3个节点高的,如果对性能方面有要求的,也可以偶数个节点,Redis是完全支持的
https://blog.csdn.net/adorechen/article/details/82791280
参考:https://blog.csdn.net/weixin_33860553/article/details/91682263
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。