Reids集群

news2024/11/26 2:39:06

目录

一、集群的概念

1.为什么要搭建集群?

2.Redis搭建集群是否需要考虑状态同步的问题?

二、Redis集群的模式

1.redis集群--主从模式

1.1什么是Redis的主从模式?

1.2.主从模式它们之间的数据是怎么实现一个同步的?

1.3.主从服务器是否解决了单点故障的问题?

1.4.redis集群三台,是否实现了扩容?

所以怎么解决单点故障问题呢,也就是说怎么解决主服务器宕机导致写操作执行不了的问题呢?

2.Redis集群--哨兵模式

2.1 Redis-哨兵模式的原理

2.2 哨兵是怎么检测到主服务器宕机了呢?

2.3主服务宕机后哨兵怎么从多个从服务器中选出一个作为主服务器?

2.5哨兵是什么

3.Reids集群--Cluster模式

3.1什么是cluster模式?

3.2那么key应该写到哪个redis服务器中,又怎么确保key的读取也是在这个redis服务器中呢

3.3每个服务器都是中心服务器,那么一旦有一个服务器宕机了,那么这个服务器里面的数据不是就访问不到了?

3.4总结


一、集群的概念

1.为什么要搭建集群?

(1)单台服务器的并发量是有一个上限的,当大量的请求同时发送到服务器,超过了服务器的上限,这个服务器就会宕机,所以通过搭建集群提高并发量

(2)解决单点故障。当一台服务器挂了,那么所有的请求都访问不了,这样可用性就很低,所以通过搭建集群使得服务器挂了还有别的服务器可以接收请求

2.Redis搭建集群是否需要考虑状态同步的问题?

需要。因为Redis是保存了数据的,所以搭建Redis集群的时候就要考虑状态同步、数据同步的问题。不然一个redis里面进行了写操作,另一个Redis进行读操作,那么就会导致数据不一致

二、Redis集群的模式

1.redis集群--主从模式

1.1什么是Redis的主从模式?

也就是Redis搭建集群后,通过划分两个角色,一个主服务器一个从服务器

主服务器负责写操作

从服务器负责读操作

所以实现了读写分离

但是即使redis自身有持久化的机制,但是一旦磁盘发生损坏,数据又会丢失

所以需要多个从服务器进行读操作

1.2.主从模式它们之间的数据是怎么实现一个同步的?

(1)全量同步:在节点初始化的时候进行一个数据的全部同步

流程:1.因为在从服务器配置文件配置了主服务器,所以从服务器启动的时候做完认证就开始同步

2.给从服务器发送一个同步的命令到主服务器

3.主服务器收到命令,先做持久化,然后开始数据同步(主服务器做持久化的时候,如果又有命令过来,那么这个命令会放到暂缓区

4.主服务器把持久化文件发送给从服务器

5.从服务器接收到持久化文件,先丢弃自己的数据,然后加载这个持久化文件在自己的内存中

6.主服务器继续发送暂缓区的命令给从服务器

7.从服务器接收主服务器的命令,加载到内存中

(2)增量同步:在节点初始化完成之后进行一个数据变动的同步

1.主服务器接收到了新的写命令后,它先在自己的内存中写入

2.然后广播给所有的从服务器

3.从服务器接收到广播过来的命令后,写入自己的内存中

所以这个主从服务器之间的数据同步就类似于Git.

第一次是直接克隆下来所有数据(全量同步

后面是拉取更新的数据        (增量同步

1.3.主从服务器是否解决了单点故障的问题?

没有。

因为主服务器只有一台,也就是写操作只有一台,所以一旦主服务器宕机,那么写操作又执行不了

1.4.redis集群三台,是否实现了扩容?

没有。虽然搭建了三台redis,但是三台保存的是同样的数据,只是做一个数据的备份,防止硬盘损坏,容量并没有增加

所以怎么解决单点故障问题呢,也就是说怎么解决主服务器宕机导致写操作执行不了的问题呢?

通过Redis集群--哨兵模式

2.Redis集群--哨兵模式

2.1 Redis-哨兵模式的原理

还是一样数量的主从服务器,只不过多了哨兵用来检测主服务器的状态,当哨兵检测到主服务器宕机后,它会在从服务器中选出一个作为主服务器进行写操作,这样就解决了单点故障问题。

2.2 哨兵是怎么检测到主服务器宕机了呢?

通过心跳机制,哨兵会给主服务器发送一个ping请求过去,如果主服务器是正常状态,那么就会回复哨兵一个pang响应,如果在一定的时间内从服务器没有回复哨兵,那么哨兵就认为主服务器宕机了

2.3主服务宕机后哨兵怎么从多个从服务器中选出一个作为主服务器?

1.看从服务器的偏移量,偏移量越大代表数据越新,越接近主服务器

2.偏移量一样,看优先级(开发人员可配置)

3.优先级一样,看redis运行时id

2.4多个哨兵的情况下,怎么在从服务器中选举出主服务器

1.首先在多个哨兵中选出哨兵Leader(通过哨兵的投票,哨兵的数量一般是奇数,方便少数服从多数)

2.这个Leader对从服务器进行选举

2.5哨兵是什么

哨兵其实也是redis服务器,只不过不能做读写操作

2.6当从服务器被选举成为主服务器后,之前宕机的主服务器恢复了,会怎样?

当从服务器被选举成为主服务器后,如果之前宕机的主服务器恢复后,那么之前的服务器会变为从服务器

3.Reids集群--Cluster模式

3.1什么是cluster模式?

cluster模式是无中心点的,也就是说redis集群中的每个redis服务器都具备读写的功能

这样就可以通过集群提高并发量

3.2那么key应该写到哪个redis服务器中,又怎么确保key的读取也是在这个redis服务器中呢

redis-cluster默认有一个16384的Hash槽,这个hash槽是用来存储我们redis的数据的

cluster模式集群创建的时候会平均的把16384个hash槽分配给各个节点(也就是redis服务器),当我们在进行数据的存储的时候,根据CRC16(key)&16384计算出这个key应该存储在哪个hash槽中,从而落在hash槽对应的节点上面

这样就实现了读写数据在同一个redis服务器

3.3每个服务器都是中心服务器,那么一旦有一个服务器宕机了,那么这个服务器里面的数据不是就访问不到了?

所以可以给每个中心服务器再挂两个从服务器,并且加哨兵,一旦中心服务器宕机,从服务器顶上

3.4总结

所以cluster模式集合了主从模式以及哨兵模式就解决了并发量、单点故障、数据备份的问题

因为我们redis搭建集群后需要解决

数据读写一致(同一个key读写再同一个redis服务器中)的问题(cluster根据算法解决了)

还有单点故障问题(哨兵解决了)

单点故障后从服务器顶上去,需要具备主服务器的数据(主从模式解决了)

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

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

相关文章

PyTorch技术和深度学习——四、神经网络训练与优化

文章目录 1.神经网络迭代概念1)训练误差与泛化误差2)训练集、验证集和测试集划分3)偏差与方差 2.正则化方法1)提前终止2)L2正则化3)Dropout 3.优化算法1)梯度下降2)Momentum算法3)RM…

Mendix 创客访谈录|低代码赋能IoT应用开发

本期创客 郑锴 舜宇光学科技(集团)有限公司信息技术部 毕业于浙江大学,三年软件设计开发经验。目前任职于舜宇光学科技(集团)有限公司信息技术部,担任软件开发工程师,主要负责工业互联网相关软件…

2023年09月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 阅读以下代码,程序输出结果正确的选项是?( ) def process_keywords(keywords_list):unique_keywords = list(set(keywords_list))

基于 React 的 HT for Web ,由厦门图扑团队开发和维护 - 用于 2D/3D 图形渲染和交互

本心、输入输出、结果 文章目录 基于 React 的 HT for Web ,由厦门图扑团队开发和维护 - 用于 2D/3D 图形渲染和交互前言什么是 HT for WebHT for Web 的特点如何使用 HT for Web相关链接弘扬爱国精神 基于 React 的 HT for Web ,由厦门图扑团队开发和维…

【C++】泛型编程 ④ ( 函数模板 与 普通函数 调用规则 | 类型自动转换 | 类型自动转换 + 显式指定泛型类型 )

文章目录 一、普通函数 与 函数模板 的调用规则 - 类型自动转换1、函数模板和重载函数2、类型自动转换3、代码示例 - 类型自动转换 二、普通函数 与 函数模板 的调用规则 - 类型自动转换 显式指定泛型类型1、类型自动转换 显式指定泛型类型2、代码示例 - 类型自动转换 显式指…

第14届蓝桥杯青少组python试题解析:22年10月选拔赛

选择题 T1. 执行print (5%3) 语句后,输出的结果是 ( ) 0 1 2 3 T2. 以下选项中,哪一个是乘法运算符?() % // * ** T3. 已知x3,求x//2x**2的运算结果? 7.5 10 8 10.5 T4. 以下选项中,对下面程序的打印…

P6入门:项目初始化11-项目详情之计算Calculations

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…

python科研绘图:P-P图与Q-Q图

目录 什么是P-P图与Q-Q图 分位数 百分位数 Q-Q图步骤与原理 Shapiro-Wilk检验 绘制Q-Q图 绘制P-P图 什么是P-P图与Q-Q图 P-P图和Q-Q图都是用于检验样本的概率分布是否服从某种理论分布。 P-P图的原理是检验实际累积概率分布与理论累积概率分布是否吻合。若吻合&#xf…

基于ChatGPT的文本生成艺术框架—WordArt Designer

WordArt Designer是一个基于gpt-3.5 turbo的艺术字生成框架,包含四个关键模块:LLM引擎、SemTypo、Styltypo和TextTypo模块。由gpt-3.5 turbo驱动的LLM引擎可以解释用户输入,从而将抽象概念转化为具体的设计。 SemTypo模块使用语义概念优化字体设计&…

Qt 5.15.11 源码windows编译

1.下载qt5.15.11源码 https://download.qt.io/official_releases/qt/5.15/5.15.11/single/qt-everywhere-opensource-src-5.15.11.zip 2.解码源码到桌面 3.安装cmake ,python ,perl, Visual Studio 2019 Strawberry Perl for Windows Win flex-bison download | SourceForge…

把大模型装进手机,总共分几步?

年初ChatGPT爆火的时候,我去上海参加华为春季新品发布会,用一页keynote提到了大模型技术与手机硬件的结合。虽然只有短短的一两分钟,但我专门发了一条朋友圈,看好自然语言交互能力在手机上的应用。 当时我就有预感,大语…

CSDN每日一题学习训练——Python版(输入起始和结束的正整数,求其两个正整数之间的偶数和、两数相加)

版本说明 当前版本号[20231115]。 版本修改说明20231115初版 目录 文章目录 版本说明目录输入起始和结束的正整数,求其两个正整数之间的偶数和。题目解题思路代码思路参考代码 两数相加题目解题思路代码思路参考代码 输入起始和结束的正整数,求其两个…

51单片机应用从零开始(三)

51单片机应用从零开始(一)-CSDN博客 51单片机应用从零开始(二)-CSDN博客 详解 KEIL C51 软件的使用建立工程-CSDN博客 详解 KEIL C51 软件的使用设置工程编绎与连接程序-CSDN博客 目录 1. 用单片机控制第一个灯亮 2. 认识单片…

<MySQL> 查询数据进阶操作 -- 联合查询

目录 一、什么是笛卡尔积? 二、什么是联合查询? 三、内连接 3.1 简介 3.2 语法 3.3 更多的表 3.4 操作演示 四、外连接 4.1 简介 4.2 语法 4.3 操作演示 五、自连接 5.1 简介 5.2 自连接非必要不使用 六、子查询(嵌套查询) 6.1 简介 6.…

C语言:简单的用二维数组打印杨氏三角

杨辉三角&#xff0c;又称帕斯卡三角&#xff0c;是一个数学上的规律图形。它的构造规则如下&#xff1a; 每一行的两个端点数字是1。从第三行开始&#xff0c;每个数字是它上方两个数字的和。每一行数字左右对称。 #include<stdio.h> int main() {int arr[50][50];//定…

应用架构的演进 I 使用无服务器保证数据一致性

在微服务架构中&#xff0c;一个业务操作往往需要跨多个服务协作完成&#xff0c;包含了读取数据和更新多个服务的数据同时进行。在数据读取和写入的过程中&#xff0c;有一个服务失败了&#xff0c;势必会造成同进程其他服务数据不一致的问题。 亚马逊云科技开发者社区为开发者…

笔试面试相关记录(13)

&#xff08;1&#xff09;一个链表&#xff0c;当一个结点为偶数&#xff0c;且它前面的结点为奇数时&#xff0c;将这个节点合并到前面的结点中&#xff0c;一直执行这个操作&#xff0c;知道没有满足条件的结点时。 输入如下&#xff1a;{2,3,4,1,2,2,3} 输出&#xff1a;…

windiws docker 部署jar window部署docker 转载

Windows环境下从安装docker到部署前后端分离项目(springboot+vue) 一、前期准备 1.1所需工具: 1.2docker desktop 安装 二、部署springboot后端项目 2.1 部署流程 三、部署vue前端项目 3.1相关条件 3.2部署流程 四、前后端网络请求测试 一、前期准备 1.1所需工具: ①docke…

炒现货黄金怎么做?挖掘黄金的投资机会

黄金一直以来都是备受投资者追捧的避险资产&#xff0c;其价值和潜力是无法忽视的。而炒现货黄金作为一种快速获取收益的投资方式&#xff0c;备受关注。那么&#xff0c;如何在炒现货黄金中找到投资机会呢&#xff1f;为您详细解析&#xff0c;简单易懂&#xff0c;帮助您开启…

[PyTorch][chapter 63][强化学习-QLearning]

前言&#xff1a; 这里结合走迷宫的例子,重点学习一下QLearning迭代更新算法 0,1,2,3,4 是房间&#xff0c;之间绿色的是代表可以走过去。 5为出口 可以用下图表示 目录&#xff1a; 策略评估 策略改进 迭代算法 走迷宫实现Python 一 策略评估 强化学习最终是为了…