Redis脑裂问题详解及解决方案

Redis脑裂问题

Redis脑裂问题是指在主从集群中同时存在两个主节点,这会导致不同客户端往不同的主节点写入数据,最终导致数据不一致,甚至数据丢失。

哨兵主从集群脑裂

场景描述

假设有三台服务器:一台主服务器,两台从服务器,还有一个哨兵。当网络波动导致哨兵无法检测到主节点时,哨兵可能会通过选举将一个从节点提升为新的主节点。如果此时一些客户端仍连接到旧的主节点,而其他客户端连接到了新的主节点,就会出现脑裂问题。最终,恢复后的老主节点会被降级为从节点,并从新主节点同步数据,这期间写入旧主节点的数据会丢失。

解决方案

通过配置以下参数可以减少脑裂问题导致的数据丢失:

min-replicas-to-write 2
min-replicas-max-lag 10
  • min-replicas-to-write 2:要求至少有两个从节点才能进行写操作。
  • min-replicas-max-lag 10:从节点与主节点的复制延迟不能超过10秒。

配置这两个参数后,如果发生脑裂,原主节点会拒绝客户端的写入请求,从而避免大量数据丢失。

集群脑裂

Redis集群一般不会发生脑裂,因为集群通过过半选举机制来防止脑裂问题。每个Redis集群有16384个槽,任何一个槽没有指派到节点时,整个集群就会不可用。为了确保集群的稳定性,建议构建至少有3个主节点的集群,且主节点数量为奇数。

尽管如此,脑裂问题在分布式系统中依然不可完全避免,受限于CAP理论的制约。

多级缓存实例

一个使用了Redis集群和其他缓存技术的应用系统架构如下:

image.png

架构流程

  1. 负载均衡:用户请求通过负载均衡服务分发到Nginx上。负载均衡算法常用轮询或一致性哈希。
  2. Nginx本地缓存:Nginx应用服务器读取本地缓存(如Lua Shared Dict、Nginx Proxy Cache或本地Redis),如果命中则直接返回,提升整体吞吐量并减轻后端压力。
  3. 分布式缓存:若本地缓存未命中,则读取Redis分布式缓存集群(可采用主从架构提升性能和吞吐量)。若命中则返回数据,并回写到Nginx本地缓存。
  4. 回源到应用服务器:若Redis缓存未命中,则请求回源到Tomcat集群,尝试再读一次主Redis集群。
  5. Tomcat本地缓存:在Tomcat集群中,首先读取本地平台级缓存,若命中则返回并同步到主Redis集群。
  6. 数据库查询:所有缓存未命中时,查询数据库或其他服务获取数据并返回。

总结

该架构通过多级缓存机制提升系统性能:

  • Nginx本地缓存:解决热点数据缓存问题。
  • Redis分布式缓存:减少访问回源率。
  • Tomcat平台级缓存:防止缓存失效带来的冲击。
  • 数据库缓存:提升数据库查询效率。

多级缓存的使用保障了系统的高效性和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/701351.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

对Java中二维数组的深层认识

首先,在JAVA中,二维数组是一种数组的数组。它可以看作是一个矩阵,通常是由于表示二维数据节后,如表格和网格。 1.声明和初始化二维数组 声明 int[][] arr;初始化 int[][] arrnew int[3][4];或者用花括号嵌套 int[][] arr{{1,…

高温预警,快收下这份机房运维攻略

高温预警 华东区即将迎来最强高温,根据历史经验,数据机房在夏季高温环境导致设备温度过高,宕机事件明显增加,为保障系统健康稳定运行,需要针对数据机房空调、设备的运行状态及环境进行检查,并同时期开展防尘…

[Shell编程学习路线]--shell中重定向和管道符(详细介绍)

🏡作者主页:点击! 🛠️Shell编程专栏:点击! ⏰️创作时间:2024年6月12日10点50分 🀄️文章质量:93分 ——前言—— 在Shell编程中,重定向和管道符是两个…

MySQL 示例数据库大全

前言: 我们练习 SQL 时,总会自己创造一些测试数据或者网上找些案例来学习,其实 MySQL 官方提供了好几个示例数据库,在 MySQL 的学习、开发和实践中具有非常重要的作用,能够帮助初学者更好地理解和应用 MySQL 的各种功…

内行都在学的大模型黑书!外网爆火LLM手册

前言 在人工智能的浪潮中,自然语言处理(NLP)领域正经历着前所未有的变革。而在这场变革中,Transformer架构无疑成为了最引人瞩目的明星。作为对Transformer工作原理充满好奇的你,是否渴望深入了解这一技术的奥秘&…

Flutter基础 -- Flutter常用组件

目录 1. 文本组件 Text 1.1 基础用法 1.2 Text 定义 1.3 Text 示例 1.4 Text.rich、RichText 、TextSpan 1.5 RichText 示例 2. 导入资源 2.1 加入资源 2.2 加入图片 3. 图片组件 image 3.1 colorBlendMode 混合参数 3.2 fit 图片大小适配 3.3 ImageProvider 图片…

AI开发基础1-操作系统

这里介绍AI服务器开发所需的必要操作系统知识 1.文件系统 理论基础是《操作系统》,再深入些是《计算机组成原理》 目的是管理操作系统,核心是文件系统, 通过命令行操作 路径是文件系统中用来指示文件或目录位置的描述。 1.1 绝对路径 (Absolute Path)…

Linux ldd和ldconfig

ldconfig ldconfig 查看默认库路径和ld.so.conf包含的库路径,来建立运行时动态装载的库查找路径。 ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),…

【python】OpenCV—Cartoonify and Portray

参考来自 使用PythonOpenCV将照片变成卡通照片 文章目录 1 卡通化codecv2.medianBlurcv2.adaptiveThresholdcv2.kmeanscv2.bilateralFilter 2 肖像画cv2.divide 1 卡通化 code import cv2 import numpy as npdef edge_mask(img, line_size, blur_value):gray cv2.cvtColor(…

第二证券炒股技巧:科创板和创业板参与门槛一样吗?

科创板和创业板参加门槛是不相同的。 科创板注册条件:申请注册权限前20个生意日证券及资金账户日均财物不低于50万元,不包括融资融券融入的资金与证券,两年及以上的股票生意经历,风险承受才能C4及以上。 创业板注册条件&#xf…

Redux 与 MVI:Android 应用的对比

Redux 与 MVI:Android 应用的对比 在为 Android 应用选择合适的状态管理架构时可能会感到困惑。在这个领域中,有两种流行的选择是 Redux 和 MVI(Model-View-Intent)。两者都有各自的优缺点,因此在深入研究之前了解它们…

【YOLO系列】YOLOv1学习(PyTorch)原理加代码

论文网址:https://arxiv.org/pdf/1506.02640 训练集博客链接:目标检测实战篇1——数据集介绍(PASCAL VOC,MS COCO)-CSDN博客 代码文件:在我资源里,但是好像还在审核,大家可以先可以,如果没有的…

Hadoop3:MapReduce源码解读之Map阶段的FileInputFormat的切片原理(2)

Job那块的断点代码截图省略,直接进入切片逻辑 参考:Hadoop3:MapReduce源码解读之Map阶段的Job任务提交流程(1) 4、FileInputFormat切片源码解析 切片入口 获取切片 获取切片最大的Size和切片最小的Size 判断文件是…

[Shell编程学习路线]——编制第一个shell脚本入门篇

🏡作者主页:点击! 🛠️Shell编程专栏:点击! ⏰️创作时间:2024年6月12日10点23分 🀄️文章质量:93分 目录 ——前言—— 💥常用的几种shell Bash Sh …

ip地址的表示方式有哪几种

在当今数字化、网络化的时代,IP地址已成为我们生活中不可或缺的一部分。无论是浏览网页、在线购物,还是远程办公、视频会议,IP地址都在背后默默发挥着作用。IP地址是互联网协议地址的简称,它为每一个连接到互联网的设备提供了一个…

antdv 下拉框增加全选功能

由于select下拉框中内容过多&#xff0c;使用下拉框多选需要一个一个选取太过于麻烦&#xff0c;所以在下拉中增加全选和取消全选操作。 看官方文档发现&#xff0c;dropdownRender 可以自定义下拉框内容&#xff0c;可以满足我们的需要。 代码实现 <a-select mode"…

5款非常好用的小众软件,你值得拥有

​ 今天为大家推荐五款不常见但好用的win10软件&#xff0c;它们都有着各自的特色和优势&#xff0c;相信你会喜欢的。 1. 文件夹查看——Folder Size View ​ Folder Size View是一款高效的文件夹大小查看工具&#xff0c;它能够快速扫描并展示文件夹及其子文件夹的占用空间…

力扣42 接雨水

听说字节每人都会接雨水&#xff0c;我也要会哈哈哈 数据结构&#xff1a;数组 算法&#xff1a;核心是计算这一列接到多少雨水&#xff0c;它取决于它左边的最大值和右边的最大值&#xff0c;如下图第三根柱子能接到的雨水应该是第一根柱子高度和第五根柱子高度的最小值减去第…

光学知识 | 什么是超透镜,其工作原理是什么?

在复杂的成像和照明设备中&#xff0c;超透镜&#xff08;以及更普遍的超表面&#xff09;被越来越多地视为一种切实可行的解决方案&#xff0c;以用于提高系统性能&#xff0c;同时缩小系统尺寸并减轻重量。这是因为通常单个超透镜即可达到原本需要在设备中使用多个“传统”光…

带你走进信息安全软件架构

汽车行业网联化以及网络安全风险日益突出&#xff0c;汽车网络攻击&#xff0c;漏洞日益增加&#xff0c;危害防不胜防。汽车信息安全逐步受到重视&#xff0c;网络安全相关法律法规陆续颁布。在这样的背景下&#xff0c;AUTOSAR 组织也发布了有关信息安全模块和 Crypto Stack(…