前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis进阶 - 如何避免Redis集群脑裂?

Redis进阶 - 如何避免Redis集群脑裂?

作者头像
小小工匠
发布2021-08-17 16:01:01
2.3K4
发布2021-08-17 16:01:01
举报
文章被收录于专栏:小工匠聊架构


CAP

CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem) 。

这个定理起源于加州大学伯克利分校 的计算机科学家埃里克·布鲁尔在2000年的分布式计算原则研讨会 上提出的一个猜想。 在2002年,麻省理工学院(MIT)的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明, 使之成为一个定理。

吉尔伯特和林奇证明的CAP定理比布鲁尔设想的某种程度上更加狭义。 定理讨论了在两个互相矛盾的请求到达彼此连接不通的两个不同的分布式节点的时候的处理方案。

它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性 (Consistency):等同于所有节点访问同一份最新的数据副本
  • 可用性(Availability):对数据更新具备高可用性
  • 网络分区容忍性(Partition tolerance): 以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

根据定理,分布式系统只能满足三项中的两项而不可能满足全部三项。

举个例子:

想象两个节点分处分区两侧:

  • 允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。
  • 如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。
  • 除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质

Redis防止脑裂参数 min-slaves-to-write

代码语言:javascript
复制
min-slaves-to-write  1 

写数据成功最少同步的slave数量,这个数量可以模仿大于半数机制配置,比如集群总共三个节点可以配置1,加上leader就是2,超过了半数

含义就是: 如果配置了min-slaves-to-write,健康的slave的个数小于配置项N,mater就禁止写入。

master最少得有多少个健康的slave存活才能执行写命令。这个配置虽然不能保证N个slave都一定能接收到master的写操作,但是能避免没有足够健康的slave的时候,master不能写入来避免数据丢失 。

设置为0关闭该功能。

redis集群没有过半机制会有脑裂问题,网络分区导致脑裂后多个主节点对外提供写服务,一旦网络分区恢复,会将其中一个主节点变为从节点,这时会有大量数据丢失。

这种方法不可能百分百避免数据丢失 ,原因参考Redis集群leader选举机制


验证

集群模式 3主3从

配置 min-slaves-to-write 1 , 停掉一个slave (8002),在master(8006)上操作

重启salve节点,

再次试验


注意事项

这个配置在一定程度上会影响集群的可用性,比如slave要是少于1个,这个集群就算leader正常也不能提供服务了,需要根据具体场景权衡选择。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CAP
  • Redis防止脑裂参数 min-slaves-to-write
  • 验证
  • 注意事项
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档