前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么redis推荐奇数个节点

为什么redis推荐奇数个节点

原创
作者头像
诺浅
修改2020-08-20 18:04:05
2K0
修改2020-08-20 18:04:05
举报
文章被收录于专栏:工具使用

缘起

被很多资料误导了,说什么redis只能是奇数个节点。其实这是一种错误的说法,Redis只不过是推荐奇数个节点,从来没有过必须是奇数节点的说法,那么这是为什么呢?

为什么redis推荐奇数个节点

其主要原因还是从成本上考虑的,因为奇数个节点和偶数个节点允许宕机的节点数是一样的,比如3个节点和4个节点都只允许宕机一台,那么为什么要搞4个节点去浪费服务资源呢?

那么话又说回来了,为什么三个节点和四个节点都只允许宕机一个节点呢?这是因为redis规定

集群中,半数以上节点认为主节点故障了,才会选举新的节点。

三个节点的情况

我们假设存在这样一个Redis集群(A、B、C三个节点)A节点是主节点

image.png
image.png

情况一:坏了一个节点

如果是A节点坏了,就需要从B和C里面选举一个节点出来作为主节点,而因为B和C占比在集群中个占33.333%。那么投票会有以下四种情况和对应结果

  • B和C都投给自己,各占比33.33%,不满足超过半数的约定,重新选举
  • B和C都投给对方,各占比33.33%,不满足超过半数的约定,重新选举
  • B投给自己,C投给了B,B被选举为主节点,系统恢复运行
  • C投给自己,B投给了C,C被选举为主节点,系统恢复运行

可以看到,只要投票次数足够多,总能从B或者C中选举出来一个主节点,系统总是能够自动恢复的。

情况二:坏了两个节点

假设A和B或者A和C都坏了,剩下的一个节点占比只有33.333%。那么他是没法选举自己为主节点的,整个系统也是没法恢复正常的。

四个节点的情况

image.png
image.png

情况一:坏了一个节点

如果是A节点坏了,就需要从B和C和D里面选举一个节点出来作为主节点,而因为B和C和D占比在集群中个占25%%。那么投票会有以下几种情况和对应结果

  • B和C和D都投给自己,各占比25%,不满足超过半数的约定,重新选举
  • B和C和D都投给对方,各占比25%%,不满足超过半数的约定,重新选举
  • C和D投给了B,B投给了C。B占比50%,C占比25%。还是没有节点满足超过半数的约定,重新选举
  • C和D投给了B,B投给了自己,B占比75%。B被选举为主节点,整个系统恢复正常
  • 其他情况自行脑补

情况二:坏了两个节点

如果是A和B坏了,剩下的C和D投票最多只能投到50%。不满足超过半数的约定,系统无法恢复正常。

总结

通过上面的分析,想必可以清楚,不管是3个节点还是4个节点,都只能允许一个节点宕机。所以在实际使用过程中出于成本的考虑,一般会建议奇数个节点。

但是:4个节点的性能和容量是比3个节点高的,如果对性能方面有要求的,也可以偶数个节点,Redis是完全支持的

关于zookeeper为什么推荐奇数个节点还有一个原因是因为脑裂的问题

https://blog.csdn.net/adorechen/article/details/82791280

参考:https://blog.csdn.net/weixin_33860553/article/details/91682263

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缘起
  • 为什么redis推荐奇数个节点
    • 三个节点的情况
      • 四个节点的情况
      • 总结
      • 关于zookeeper为什么推荐奇数个节点还有一个原因是因为脑裂的问题
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档