Redis 三大高可用模式:主从、哨兵、集群

news2024/9/24 1:26:21

一、引言

Redis,作为一种开源的、基于内存的数据结构存储系统,被广泛应用于各种场景,包括缓存、消息队列、短期存储等。

单一实例的工作模式通常无法保证Redis的可用性和拓展性,Redis提供了三种分布式方案:

  • 主从模式

  • 哨兵模式

  • 集群模式

二、Redis的主从模式

1. 主从模式的定义

Redis的主从模式是一种数据备份和读写分离的模式。在这种模式下,有一个主节点(Master)和一个或多个从节点(Slave)。所有的写操作都在主节点上进行,而读操作可以在主节点和从节点上进行。从节点会复制主节点的数据,实现数据的备份。

 

2. 主从模式的工作原理

在主从模式下,主节点负责处理所有的写操作,并将写操作记录在内存中的缓冲区。从节点从主节点获取这些写操作记录,并在自己的数据库上执行这些操作,从而保持与主节点的数据一致。此外,读请求可以在主节点和从节点上进行,从而实现读写分离,提高系统的读取性能。

具体的同步步骤如下:

 

  1. 从服务器连接到主服务器:首先,从服务器需要连接到主服务器。这通常通过在从服务器上执行SLAVEOF命令并指定主服务器的IP地址和端口号来完成。

  2. 发送SYNC命令:从服务器连接到主服务器后,它会发送一个SYNC命令。这个命令是Redis复制的核心,它会触发主服务器开始复制过程。

  3. 主服务器开始保存数据:收到SYNC命令后,主服务器会开始在后台保存其数据快照。同时,主服务器还会记录从接收到SYNC命令开始执行的所有写命令,这些命令将在数据快照完成后发送给从服务器。

  4. 主服务器发送数据快照:数据快照完成后,主服务器会将其发送给从服务器。从服务器在接收到数据快照后,会删除所有旧数据,然后使用接收到的数据快照来加载新数据。

  5. 主服务器发送缓存的写命令:数据快照发送完成后,主服务器会将在数据快照过程中记录的所有写命令发送给从服务器。从服务器在接收到这些命令后,会按照接收的顺序执行这些命令,以确保其数据与主服务器的数据保持一致。

  6. 主从同步完成,进入命令转发阶段:完成上述步骤后,主从服务器的数据就同步了。之后,主服务器每执行一次写命令,就会将这个命令发送给所有的从服务器。从服务器在接收到写命令后,会执行这个命令,以确保其数据始终与主服务器的数据保持一致。

3. 主从模式的配置和使用

配置主从模式相对简单,只需要在从节点的配置文件中设置主节点的IP地址和端口号,然后启动从节点即可。从节点会自动连接到主节点,并开始复制数据。在使用上,用户可以直接向主节点发送写请求,而读请求可以发送到主节点或从节点。

4. 主从模式的优点和局限性

  • 优点:

    • 可以实现数据的备份,提高数据的安全性;

    • 读写分离,提高系统的读取性能

  • 局限性:

    • 不能自动切换,如果主节点发生故障,从节点不能自动切换为主节点,需要人工干预;

    • 所有的写操作都在主节点上进行,如果写请求量大,主节点可能会成为性能瓶颈。

三、Redis的哨兵模式

1. 哨兵模式的定义

Redis的哨兵模式是在主从模式的基础上,增加了故障转移的功能。

哨兵模式下,除了主节点和从节点,还有一个或多个哨兵节点(Sentinel)。哨兵节点的主要任务是监控主节点和从节点的运行状态,并在主节点发生故障时,自动将从节点提升为主节点。

 

 

Sentinel主要负责三个方面的任务

  1. 哨兵模式的工作原理

    在哨兵模式下,哨兵节点会定期检查主节点和从节点的运行状态。如果发现主节点发生故障,哨兵节点会在从节点中选举出一个新的主节点,并通知其他的从节点和哨兵节点。此外,哨兵节点还可以接收客户端的查询请求,返回当前的主节点信息,从而实现客户端的透明切换。

    • 监控:通过发送命令,不间断的监控Redis服务器运行状态,包括主服务器和从服务器。

    • 提醒:当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

    • 自动故障迁移(核心任务)当哨兵监测到主服务器宕机,会自动在已下线主服务器属下的所有从服务器里面,挑选出一个从服务器将其转换为主服务器(自动切换)。然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

  2. 哨兵模式的配置和使用

    配置哨兵模式需要在哨兵节点的配置文件中设置主节点的信息和故障转移的策略,然后启动哨兵节点即可。在使用上,用户可以直接向主节点发送写请求,而读请求可以发送到主节点或从节点。如果主节点发生故障,用户可以从哨兵节点获取新的主节点信息,然后向新的主节点发送请求。

  3. 哨兵模式的优点和局限性

    • 哨兵节点需要额外的资源和维护,增加了系统的复杂性;

    • 主节点发生故障后,新的主节点可能会有一段时间的数据不一致,影响数据的准确性。

    • 哨兵模式可以实现故障转移,提高系统的可用性

    • 哨兵模式可以实现客户端的透明切换,提高系统的可维护性。

    • 优点:

    • 局限性:

四、Redis的集群模式

1. 集群模式的定义

Redis的集群模式是一种分布式的解决方案,它允许多个Redis节点(服务器)协同工作,提供更高的性能和可用性。在这种模式下,数据被分片存储在多个节点上,每个节点负责一部分数据的读写。

集群模式主要解决水平拓展问题和整体的高可用(局部节点故障不影响其他节点的数据)。如果要保证所有数据的高可用还需要配合主从模式

2. 集群模式的工作原理

在集群模式下,Redis使用一种叫做哈希槽的技术来实现数据的分片。整个哈希空间被分成16384个哈希槽,每个节点负责一部分哈希槽。当一个键需要被存储时,Redis会根据键的值计算出一个哈希值,然后根据哈希值决定将这个键存储在哪个节点上。这样,读写请求就可以在多个节点上并行处理,提高了系统的性能。

图片

Untitled

在Redis集群模式下,任意一个Master节点都可以接受客户端的请求。当客户端向某个Master节点发送请求时,如果这个请求的键所对应的哈希槽不在这个Master节点负责的范围内,那么这个Master节点会返回一个重定向信息,告诉客户端应该向哪个节点发送请求。这个过程对客户端来说是透明的,客户端只需要按照重定向信息重新发送请求即可。这种方式确保了Redis集群可以有效地处理并分发客户端的请求,提高了系统的性能和可用性。

3. 集群模式的配置和使用

配置集群模式需要在每个节点的配置文件中设置集群模式,并指定其他节点的信息,然后启动所有节点即可。在使用上,用户可以直接向任何一个节点发送请求,节点会根据请求的键自动路由到正确的节点上。

4. 集群模式的优点和局限性

  • 优点

    • 集群模式可以实现数据的水平扩展,提高了系统的性能和存储容量;

    • 集群模式实现高可用性,即使某个节点发生故障,系统仍然可以继续提供服务。

  • 局限性:

    • 配置和维护相对复杂,需要管理多个节点;

    • 某些操作,如多键操作和事务,可能会受到限制。

五、三种模式的比较和选择

1. 主从模式、哨兵模式和集群模式的比较

  • 主从模式是最基础的模式,配置简单,主要用于数据备份和读写分离,提高系统的读取性能。但是,主从模式无法处理主节点故障的情况。

  • 哨兵模式在主从模式的基础上增加了故障转移的功能,可以自动处理主节点故障的情况,提高了系统的可用性。但是,哨兵模式需要额外的哨兵节点,增加了系统的复杂性。

  • 集群模式是一种分布式的解决方案,可以实现数据的水平扩展,提高了系统的性能和存储容量。同时,集群模式也可以实现高可用性,即使某个节点发生故障,系统仍然可以继续提供服务。但是,集群模式的配置和维护相对复杂,需要管理多个节点。

2. 根据不同的应用场景选择合适的模式

  • 如果你的应用场景主要是读取数据,数据量不大,对数据的一致性要求不高,那么主从模式可能是一个不错的选择。

  • 如果你的应用场景需要高可用性,即使在主节点发生故障的情况下也需要保证服务的正常运行,那么哨兵模式可能更适合你。

  • 如果你的应用场景数据量大,需要高性能和高可用性,那么集群模式可能是最好的选择。集群模式可以提供更高的性能,更大的存储容量,以及更好的故障容忍能力。

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

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

相关文章

【精品资料】智慧党建信息化建设方案(32页PPT)

引言:随着信息技术的快速发展,传统党建模式面临着信息传递不及时、党员教育管理手段单一、党组织活动参与度不高等挑战。智慧党建作为数字化转型的重要方向,能够有效解决上述问题,推动党建工作向更高质量发展。 方案介绍&#xff…

MySQL高级面试点

Explain语句结果中各个字段分别代表什么 id:查询语句没出现一个select关键字,MySQL就会给他分配一个唯一id select_type: select关键字对应哪个查询的类型 simple:简单的查询 不包含任何子查询 primary:查询中如果…

SparkStreaming--scala

文章目录 第1关:QueueStream代码 第2关:File Streams代码 第1关:QueueStream 任务描述 本关任务:编写一个清洗QueueStream数据的SparkStreaming程序。 相关知识 为了完成本关任务,你需要掌握:1.如何使用S…

<数据集>光伏板缺陷识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:2400张 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注类别数:4 标注类别名称:[Crack,Grid,Spot] 序号类别名称图片数框数1Crack8688922Grid8248843S…

从汇编层看64位程序运行——栈帧(Stack Frame)边界

大纲 RBP,RSP栈帧边界总结参考资料 在《从汇编层看64位程序运行——栈帧(Stack Frame)入门》中,我们简单介绍了栈帧的概念,以及它和函数调用之间的关系。如文中所述,栈帧是一种虚拟的概念,它表达了一个执行中的函数的栈…

Python之Excel自动化处理(二)

一、Excel设置样式 1.1、常用方法与属性 函数名&属性含义xlwt.Font()创建字体样式font.name设置字体类型font.colour_index设置字体颜色font.height设置字体大小font.bold设置字体是否为加粗font.underline设置字体下划线font.italic设置字体斜体xlwt.Alignment()创建字体…

笔记 1 : 课本前 2 章

现在开始跟着彭老师学习 arm 。把重要的知识点归拢一下,便于复习。早日学有所成,为国为家为己,更幸福些。 (1)冯诺依曼架构与哈弗架构,与混合架构: 以及: (2&#xff0…

音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现

一、引言 通过FFmpeg命令可以获取到H.264裸流文件的色彩格式(又译作色度采样结构、像素格式): 在vlc中也可以获取到色彩格式(vlc底层也使用了FFmpeg进行解码): 这个色彩格式就是之前的文章《音视频入门基础…

03-Charles实战

一、抓包分析问题示例 1)问题描述 2)抓包分析 这是后台响应回来的错误信息,说明问题一是后台的原因;但是后台只响应了一条信息,而前端页面却显示两条错误信息,说明前端页面处理异常的时候逻辑有问题&#…

《昇思25天学习打卡营第3天|03张量Tensor》

说在开始 学习下mindspore中对tensor的处理逻辑。 Tensor属性 张量的属性包括形状、数据类型、转置张量、单个元素大小、占用字节数量、维数、元素个数和每一维步长。 形状(shape):Tensor的shape,是一个tuple。 数据类型&…

windows USB 设备驱动开发- USB Type-C支持(一)

传统的 USB 连接使用两端都有 USB A 和 USB B 接头的电缆。 USB A 连接器始终插入主机端,USB B 连接器连接功能端,该功能端是手机) 或外设 (鼠标、键盘) 的设备 (。 使用这些连接器,只能将主机连接到函数;绝不是另一个主机的主机或另一个函数…

如何安装dotenv,避坑指南,安装包的包名有误?

嗨,大家好,我是蓝若姐姐。最近在研究AI大模型,想写一个调用openai接口的demo,结果发现在装一个三方库的时候一直报错,mac电脑安装dotenv报错,具体情况是 执行这个命令: pip install dotenv 遇…

提升 Kubernetes 日志记录能力,提高可观察性

介绍 在微服务和容器化应用时代,有效管理和监控应用的健康和性能至关重要。Kubernetes是一个用于自动部署、扩展和管理容器化应用的开源系统,已成为寻求敏捷性和弹性的企业的首选解决方案。 然而,由于 Kubernetes 的分布式架构、高日志量和…

【数据结构】栈和队列的深度探索,从实现到应用详解

💎所属专栏:数据结构与算法学习 💎 欢迎大家互三:2的n次方_ 🍁1. 栈的介绍 栈是一种后进先出的数据结构,栈中的元素只能从栈顶进行插入和删除操作,类似于叠盘子,最后放上去的盘子最…

Git代码管理工具 — 4 Git分支详解

目录 1 Git 分支概念 2 Git 分支基本操作 2.1 git branch查看与创建本地分支 2.2 git checkout切换分支 2.3 git merge合并分支 2.4 删除分支 3 解决冲突 1 Git 分支概念 Git 分支允许你从当前开发线上分离出来,进行独立的开发工作,而不会影响主…

用 AI 写歌词,让音乐表达与众不同

在音乐的广袤天地中,我们都渴望通过独特的表达来触动人心,展现自我。而如今,AI 技术的崛起为音乐创作带来了全新的突破,让我们能够以一种前所未有的方式赋予音乐独特的灵魂。 “妙笔生词智能写歌词软件(veve522&#…

Window10下安装WSL-Ubuntu20.04

1.开启并更新WSL 1.1开启WSL 首先先来看一下电脑是否能够开启WSL:待补充... 然后再来看一下如何开启WSL:win->设置->应用->应用和功能->程序和功能,如下所示: 最后选择启用或关闭Windows功能,开启两个选项:1.Hyper-V…

大语言模型诞生过程剖析

过程图如下 📚 第一步:海量文本的无监督学习 得到基座大模型🎉 🔍 原料:首先,我们需要海量的文本数据,这些数据可以来自互联网上的各种语料库,包括书籍、新闻、科学论文、社交媒体帖…

K8S系列-Kubernetes基本概念及Pod、Deployment、Service的使用

一、Kubernetes 的基本概念和术语 一、资源对象 ​ Kubernetes 的基本概念和术语大多是围绕资源对象 Resource Object 来说的,而资源对象在总体上可分为以下两类: 1、某种资源的对象 ​ 例如节点 Node) Pod 服务 (Service) 、存储卷 (Volume)。 2、…

记录些Redis题集(4)

Redis 通讯协议(RESP) Redis 通讯协议(Redis Serialization Protocol,RESP)是 Redis 服务端与客户端之间进行通信的协议。它是一种二进制安全的文本协议,设计简洁且易于实现。RESP 主要用于支持客户端和服务器之间的请求响应交互…