美文网首页
如何避免Redis集群脑裂?

如何避免Redis集群脑裂?

作者: 小狐憨憨 | 来源:发表于2021-01-03 18:15 被阅读0次

章目录

在这里插入图片描述

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

在这里插入图片描述
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从

[图片上传失败...(image-37f470-1609668873482)]

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

[图片上传失败...(image-ee2897-1609668873482)]

重启salve节点,

在这里插入图片描述

再次试验

[图片上传失败...(image-a54d46-1609668873482)]


注意事项

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

原文链接:https://artisan.blog.csdn.net/article/details/109501919

相关文章

  • 如何避免Redis集群脑裂?

    章目录 CAP[https://artisan.blog.csdn.net/article/details/109...

  • ES高性能集群

    1. 集群规划 1.1 集群规划问题 1.需要多大规模的集群?2.集群中的节点角色如何分配?3.如何避免脑裂问题?...

  • redis集群脑裂

    定义 edis的集群脑裂是指因为网络问题,导致redis master节点跟redis slave节点和senti...

  • 11. 配置ZooKeeper ensemble

    一个ZooKeeper集群或复制的ZooKeeper服务器集群应该优化配置,以避免出现脑裂(split-brain...

  • 风中的 FAQ-1

    1.脑裂是什么?该怎么解决? 脑裂是由于集群之间通信故障,导致集群中出现了多个Master,向多个Master写入...

  • 漫画解读redis集群|哨兵|脑裂

    哨兵 还是拿现实生活举例,假设某小公司暂存资料的柜子,有多个格子,柜子还有一个专门的管理员,他的工作就是按公司员工...

  • 97_es生产集群部署之针对生产集群的脑裂问题专门定制的重要参数

    97_es生产集群部署之针对生产集群的脑裂问题专门定制的重要参数 最少master候选节点以及脑裂问题 disco...

  • 集群规划——脑裂

    脑裂问题,就是同一个集群中的不同节点对于集群的状态有了不一样的理解,脑裂问题是分布式集群环境中必然会遇到的问题。 ...

  • Redis 系列(10) 脑裂问题 & 扩缩容问题

    1.sential模式下的脑裂问题 1.1 问题描述 1.2 解决方案 2.集群(cluster)模式下的脑裂问题...

  • redis 脑裂现象

    脑裂 由于网络问题,集群节点失去联系。主从数据不同步;重新平衡选举,产生两个主服务。两套主服务一起运行,导致数据不...

网友评论

      本文标题:如何避免Redis集群脑裂?

      本文链接:https://www.haomeiwen.com/subject/qmqpoktx.html