码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 什么是Redis脑裂,如何解决呢


    Redis 脑裂问题是指,在 Redis 哨兵模式或集群模式中,由于网络原因,导致主节点(Master)与哨兵(Sentinel)和从节点(Slave)的通讯中断,此时哨兵就会误以为主节点已宕机,就会在从节点中选举出一个新的主节点,此时 Redis 的集群中就出现了两个主节点的问题,就是 Redis 脑裂问题。

    脑裂问题影响

    Redis 脑裂问题会导致数据丢失,为什么呢?来看脑裂问题产生的过程:

    b380451104794831ba5ad5e7ff9ca0a2.jpeg

     

    而最后一步,当旧的 Master 变为 Slave 之后,它的执行流程如下:

    1. Slave(旧 Master)会向 Master(新)申请全量数据。
    2. Master 会通过 bgsave 的方式生成当前 RDB 快照,并将 RDB 发送给 Slave。
    3. Slave 拿到 RDB 之后,先进行 flush 清空当前数据(此时第四步旧客户端给他的发送的数据就丢失了)。
    4. 之后再加载 RDB 数据,初始化自己当前的数据。

    从以上过程中可以看出,在执行到第三步的时候,原客户端在旧 Master 写入的数据就丢失了,这就是数据丢失的问题。

    如何解决脑裂问题?

    脑裂问题只需要在旧 Master 恢复网络之后,切换身份为 Slave 期间,不接收客户端的数据写入即可,那怎么解决这个问题呢?

    Redis 为我们提供了以下两个配置,通过以下两个配置可以尽可能的避免数据丢失的问题:

    • min-slaves-to-write:与主节点通信的从节点数量必须大于等于该值主节点,否则主节点拒绝写入。
    • min-slaves-max-lag:主节点与从节点通信的 ACK 消息延迟必须小于该值,否则主节点拒绝写入。

    这两个配置项必须同时满足,不然主节点拒绝写入。

    在假故障期间满足 min-slaves-to-write 和 min-slaves-max-lag 的要求,那么主节点就会被禁止写入,脑裂造成的数据丢失情况自然也就解决了。

    参考 & 鸣谢

    javacn.site

  • 相关阅读:
    奥克斯空调红外遥控信号编码协议的分析,STC51单片机读红外程序
    基础—SQL—DQL(数据查询语言)分页查询
    idea如何更改编辑器字体大小和框字体大小
    c++ 信奥编程 1130:找第一个只出现一次的字符
    Cannot deserialize value of type `java.util.Date` from String
    一篇学会JUC、JVM 吊打面试官!
    又拿三个大奖?!多力就是要让你吃的更营养更健康
    金仓数据库 KingbaseES异构数据库移植指南 (3. KingbaseES移植能力支撑体系)
    python之kafak应用demo
    idea中maven项目打包成jar,报错没有主清单属性解决方法
  • 原文地址:https://blog.csdn.net/zainful/article/details/139284230
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号