网上参考到别人博客说,redis容灾切换的时候,有几率出现脑裂的情况。

什么是脑裂:

  sentinel判断master宕机,切换slave为新master的过程中,业务数据还在持续往原master写入数据,因为此时新master还是slave,没有写入权限,就会出现数丢失的情况。

解决方案:

  看了很多文章,都是说对redis的配置新增两个设置。

  

1 min-slaves-to-write 1
2 min-slaves-max-lag 10

参数解释:

  要求至少有1个slave,数据复制和同步延迟不能超过10秒
  如果说一旦所有的slave,数据复制和同步的延迟都超过了10秒钟,那么master就会拒绝接收任何请求。

作用:
  减少异步复制的数据丢失
  配置min-slaves-max-lag为10s后,根据目前master->slave的复制速度,如果数据同步完成所需要时间超过10s,就会认为master未来宕机后损失的数据会很多,master就拒绝写入新请求。
  这样就能将master和slave数据差控制在10s内,即使master宕机也只是这未复制的10s数据。

减少脑裂的数据丢失:
  如果不能继续给指定数量的slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝写入新请求。这样脑裂后的旧master就不会接受client的新数据,也就避免了数据丢失。
  因此在脑裂场景下,最多就丢失10秒的数据

但以上配置,还是会有数据丢失的情况,如果业务数据是会重复上送的倒还好,但是一旦数据是状态发生变更才推送一次的情况,就会对业务数据准确性有出入。而且上面的配置,因为我在这边自身业务数据有可能还没达到一定量,目前没复现,所以在这里,也请教下各位看官大大,是否还有其他更好的优化方案?欢迎各位看官大大来指定迷津~~~~

借鉴的文章参考:https://blog.csdn.net/wdehxiang/article/details/108342501

最新文章

  1. App主界面Tab实现方法
  2. Upgrade custom workflow in SharePoint
  3. 将Nagios监控信息存入Mysql
  4. uva 10369
  5. session绑定线程
  6. JSP九大内置对象和四种属性范围解读
  7. Flink Program Guide (8) -- Working with State :Fault Tolerance(DataStream API编程指导 -- For Java)
  8. Duplicate entry '0' for key 'PRIMARY'的一种可能的解决办法
  9. 循环语句之for循环
  10. .Net Core部署IIS
  11. P1638 逛画展(直尺法)
  12. LOJ #2142. 「SHOI2017」相逢是问候(欧拉函数 + 线段树)
  13. EasyUI相关知识点整理
  14. 抽象语法树(AST)
  15. BZOJ3597 SCOI2014方伯伯运椰子(分数规划+spfa)
  16. $(document).ready()方法和window.onload有什么区别?
  17. Java快捷键与搜狗输入法快键的冲突
  18. MES制造执行系统
  19. React和Vue特性和书写差异
  20. AT24Cxx(EEPROM)子系统

热门文章

  1. 学习GlusterFS(四)
  2. 全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中)
  3. Mybatis-Plus 如何实现一对多关系 举例 用户与角色
  4. 付费漫画下载、付费韩漫下载、漫画VIP下载、VIP韩漫下载哪里下
  5. 前端入门-day2(常见css问题及解答)
  6. Socket.io+Notification实现浏览器消息推送
  7. Spark项目应用-电子商务大数据分析总结
  8. DOM节点详解
  9. 能直接调试的开放API?这个API Hub绝了
  10. jni有关知识点总结