介绍一下Redis的集群模式?

news2024/11/17 4:38:00

Redis有三种主要的集群模式,用于在分布式环境中实现高可用性和数据复制。这些集群模式分别是:主从复制(Master-Slave Replication)、哨兵模式(Sentinel)和Redis Cluster模式。

一、问题解析

主从模式

主从复制是Redis最简单的集群模式。这个模式主要是为了解决单点故障的问题,所以将数据复制多个副本中,这样即使有一台服务器出现故障,其他服务器依然可以继续提供服务。

主从模式中,包括一个主节点(Master)和一个或多个从节点(Slave)。主节点负责处理所有写操作和读操作,而从节点则复制主节点的数据,并且只能处理读操作。当主节点发生故障时,可以将一个从节点升级为主节点,实现故障转移(需要手动实现)。

 

数据同步

BYHOLLIS

SLAVE

数据同步

MASTER

SLAVE

image.png



主从复制的优势在于简单易用,适用于读多写少的场景。它提供了数据备份功能,并且可以有很好的扩展性,只要增加更多的从节点,就能让整个集群的读的能力不断提升。

但是主从模式最大的缺点,就是不具备故障自动转移的能力,没有办法做容错和恢复。

主节点和从节点的宕机都会导致客户端部分读写请求失败,需要人工介入让节点恢复或者手动切换一台从节点服务器变成主节点服务器才可以。并且在主节点宕机时,如果数据没有及时复制到从节点,也会导致数据不一致。

 

READWRITE

数据同步

BYHOLLIS

数据同步

SLAVE

SLAVE

MASTER

image.png



哨兵模式

为了解决主从模式的无法自动容错及恢复的问题,Redis引入了一种哨兵模式的集群架构。

哨兵模式是在主从复制的基础上加入了哨兵节点。哨兵节点是一种特殊的Redis节点,用于监控主节点和从节点的状态。当主节点发生故障时,哨兵节点可以自动进行故障转移,选择一个合适的从节点升级为主节点,并通知其他从节点和应用程序进行更新。

 

BYHOLLIS

SENTINELS

数据同步

MASTER

数据同步

SLAVE

REACL

SLAVE

image.png




在原来的主从架构中,引入哨兵节点,其作用是监控Redis主节点和从节点的状态。每个Redis实例都可以作为哨兵节点,通常需要部署多个哨兵节点,以确保故障转移的可靠性。

哨兵节点定期向所有主节点和从节点发送PING命令,如果在指定的时间内未收到PONG响应,哨兵节点会将该节点标记为主观下线。如果一个主节点被多数哨兵节点标记为主观下线,那么它将被标记为客观下线。

当主节点被标记为客观下线时,哨兵节点会触发故障转移过程。它会从所有健康的从节点中选举一个新的主节点,并将所有从节点切换到新的主节点,实现自动故障转移。同时,哨兵节点会更新所有客户端的配置,指向新的主节点。

哨兵节点通过发布订阅功能来通知客户端有关主节点状态变化的消息。客户端收到消息后,会更新配置,将新的主节点信息应用于连接池,从而使客户端可以继续与新的主节点进行交互。

这个集群模式的优点就是为整个集群系统了一种故障转移和恢复的能力。

Cluster模式

Redis Cluster是Redis中推荐的分布式集群解决方案。它将数据自动分片到多个节点上,每个节点负责一部分数据。

 

EADWRTE

MASTER

READ

SLAVE

SLAVE

READ

MASTER

--READ_.

WR代E

image.png



Redis Cluster采用主从复制模式来提高可用性。每个分片都有一个主节点和多个从节点。主节点负责处理写操作,而从节点负责复制主节点的数据并处理读请求。

Redis Cluster能够自动检测节点的故障。当一个节点失去连接或不可达时,Redis Cluster会尝试将该节点标记为不可用,并从可用的从节点中提升一个新的主节点。

Redis Cluster是适用于大规模应用的解决方案,它提供了更好的横向扩展和容错能力。它自动管理数据分片和故障转移,减少了运维的负担。

Cluster模式的特点是数据分片存储在不同的节点上,每个节点都可以单独对外提供读写服务。不存在单点故障的问题。

二、粉丝福利

我是浮生,一个工作十四年经验的Java程序员!

最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份80W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我
公众号:“ 
灰灰聊架构 ”, 回复暗号:“ 321 ”即可获取

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Div2 936 D. Birthday Gift

解题思路 题意为将一数组从头到尾划分,每组组内异或,异或后的结果再或起来满足小于等于x,问最多划分组数考虑使数组划分后该位为0的最多划分即划分后每个子段内该位只有2个1或0个1满足小于条件,即二级制下从高位开始比较&#xf…

LeetCode刷题---游戏玩法分析 IV

1.首先查询出每个用户首次登录的第二天,并将其创建为临时表,命名为Expected (select player_id,Date_add(min(event_date),Interval 1 day) as second_date from activity group by player_id) as Expected这里使用了函数DATE_ADD,详细用法可…

【C语言】Infiniband驱动mlx4_init_one

一、注释 这是Linux内核中Mellanox Ethernet网卡驱动程序mlx4模块的一部分代码,主要用于初始化一个PCI设备。以下是其注释: // 驱动的主结构体,包含了供PCI核心使用的勾子(hooks) static struct pci_driver mlx4_dri…

<QT基础(2)>QScrollArea使用笔记

项目需要设置单个检查的序列图像预览窗口,采用QScrollArea中加入QWidget窗口,每个窗口里面用Qlabel实现图像预览。 过程涉及两部分内容 引入QWidget 引入label插入图像(resize) 引入布局 组织 scrollArea内部自带Qwidget&#…

Floyd算法:浅显外表下的动态规划内核

很久没遇到Floyd算法的题目了,2642. 设计可以求最短路径的图类刚好是一个典型。在实现核心算法之余,顺便整理一下算法的内核。 Floyd-Warshall’s Algorithm Floyd-Warshall算法,简称Floyd算法,是“有向图非负权图的多源最短路”…

【爬虫基础】第5讲 AJAX动态页面的数据获取

静态:访问地址栏里的数据就可以获取到想要的数据 动态:访问地址栏里的数据获取不到想要的数据 解决方案:抓包 打开浏览器的开发者工具-network-xhr,找到可以获取到数据的URL访问即可 获取url地址 代码实现: from urllib.request…

Python接口自动化pytest框架安装

1、创建一个requirements.txt文件夹 2、输入内容:如下图 pytest pytest-html pytest-xdist pytest-ordering pytest-rerunfailures pytest-base-url allure-pytest3、在terminal中输入安装命令:pip install -r requirements.txt 安装成功 4、在termina…

模板方法模式(继承的优雅使用)

目录 前言 UML plantuml 类图 实战代码 AbstractRoutingDataSource DynamicDataSource DynamicDataSourceContextHolder 前言 在设计类时,一般优先考虑使用组合来替代继承,能够让程序更加的灵活,但这并不意味着要完全抛弃掉继承。 …

MySQL高级SQL2

一、表连接 二、视图 三、null值和空值区别 四、存储过程 五、函数 六、字符串函数 七、日期时间函数

迅雷拉新关键词怎么申请?

在这个日新月异、竞争激烈的时代,网盘项目的寻找与对接已成为众多团队谋求突破的关键。那么,如何在茫茫项目海中筛选出既靠谱又有潜力的明珠呢?经过深度挖掘和全网搜索,我为大家精心整理了优质接单渠道,助力网盘拉新团…

大模型prompt工程学习(一)

目录 调prompt的方法 prompt时好时不好 大模型本质是没有记忆的 划重点:我们发给大模型的 prompt,不会改变大模型的参数 ГLets think step by step」 一步步分析一下 自洽性,同时跑多次,来减少幻觉 逻辑,基本能力来是要有…

Android卡顿掉帧问题分析之实战篇

本文将结合典型实战案例,分析常见的造成卡顿等性能问题的原因。从系统工程师的总体角度来看 ,造成卡顿等性能问题的原因总体上大致分为三个大类:一类是流程执行异常;二是系统负载异常;三是编译问题引起。 1 流程执行异…

web全栈架构师第16期教程

教程介绍 互联网时代已进入后半场,行业环境发生了显著变化。互联网人,尤其是技术人员,如何在加速更迭的技术浪潮中持续充电,提升自身价值,是当下必须面对的挑战。课程涉及了现下前端实际开发时所需要的各块内容&#…

Java Web-HTTP协议

概念: Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点: 1.基于TCP协议:面向连接,安全 2. 基于请求-响应模型的:一次请求对应一次响应 3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。 缺点:多…

MBR4060DC-ASEMI肖特基二极管MBR4060DC

编辑:ll MBR4060DC-ASEMI肖特基二极管MBR4060DC 型号:MBR4060DC 品牌:ASEMI 封装:TO-263 最大平均正向电流(IF):40A 最大循环峰值反向电压(VRRM):60V …

小红的炸砖块

题目描述 小红正在玩一个“炸砖块”游戏,游戏的规则如下: 初始有一个n∗m的砖块矩阵。小红会炸k次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。 小红希望你画出最终砖块…

Android Studio Iguana | 2023.2.1 补丁 1

Android Studio Iguana | 2023.2.1 Canary 3 已修复的问题Android Gradle 插件 问题 295205663 将 AGP 从 8.0.2 更新到 8.1.0 后,任务“:app:mergeReleaseClasses”执行失败 问题 298008231 [Gradle 8.4][升级] 由于使用 kotlin gradle 插件中已废弃的功能&#…

程序员也写歌啦

我的第一首AI原创歌曲《旅途的歌声》 身为 AI 重度患者的我,时刻关注着每天发布的各种 AI 产品。面对这些雨后春笋般的 AI 产品,我也早就没那么敏感了。 但是今天尝试着用 AI 生成了一个音乐,真的震惊到了我! 不到一分钟&#…

2024年第六届机器人系统与自动化工程国际会议(RSAE 2024)即将召开!

2024年第六届机器人系统与自动化工程国际会议(RSAE 2024)将于2024年6月21-23日在日本东京召开。RSAE 2024 的主要目标是加强合作,并为院士、专业人士和研究人员提供一个论坛,交流他们的研究成果、创新理念和解决方案,包…

算法打卡day29|贪心算法篇03|Leetcode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

算法题 Leetcode 1005.K次取反后最大化的数组和 题目链接:1005.K次取反后最大化的数组和 大佬视频讲解:K次取反后最大化的数组和视频讲解 个人思路 思路清晰,因为是取反当然是取越小的负数越好,那么先按绝对值排序。如果是负数就取反&#…