Reids集群

目录

一、集群的概念

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根据算法解决了)

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

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

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

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

相关文章

大数据爬虫分析基于Python+Django旅游大数据分析系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Python和Django的旅游大数据分析系统是一种使用Python编程语言和Django框架开发的系统,用于处理和分…

某头部通信企业:SDLC+模糊测试,保障数实融合安全发展

某头部通信企业是全球领先的综合通信信息解决方案提供商,为全球电信运营商、政企客户和消费者提供创新的技术与产品解决方案。该企业持续关注核心技术攻关,深入打造系列化标杆项目和价值场景,加强数字化平台的推广应用,加快共建开…

操作系统(二 )| 进程控制 进程状态 进程描述 进程控制 进程同步互斥

文章目录 1 进程和程序区别2 进程状态2.1 进程的5种基本状态2.2 进程状态之间转换2.3 七状态模型 3 进程描述3.1 进程控制块 PCB3.2 进程块组织方式 4 进程控制5 进程同步 互斥5.1 区分进程互斥和同步5.2 核心方案5.3 其他方案方案1 设置锁变量方案2 严格轮转法方案3 Peterson解…

智能AI系统ChatGPT网站源码+支持OpenAI DALL-E3文生图+支持ai绘画(Midjourney)/支持GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

什么是集成测试?集成测试方法有哪些?

1、基本概念: 将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试,一般来说是以模块和子系统为单位进行测试。 2、集成测试包含的层次: 1. 模块内的集成,主要是…

重生之我是一名程序员 31

大家晚上好!前面给大家分享了指针与数组的知识,所以今天要给大家分享的知识是——指针数组 相信大家在这里都会有疑问,指针数组是指针还是数组? 在这我们可以类⽐⼀下其他类型的数组,比如整型数组是存放整型的数组&am…

c语言:如何打印杨辉三角形。

题目:打印杨辉三角形 如: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 思路和代码: //由规律不难得出,每行首个数字和最后最后一个数字都为1,其余数字是这列的上一个数字和前一个数字的和组成,由此推出代码 #de…

LeetCode(17)罗马数字转整数【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 13. 罗马数字转整数 1.题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L …

【Web开发】基于 Jekyll 中的 Chirpy 模板搭建博客网站(一):成功经验篇

基于 Jekyll 中的 Chirpy 模板搭建博客网站(一):成功经验篇 1.Jekyll 介绍2.Chirpy 介绍3.安装步骤3.1 Prerequisites3.2 Installation3.2.1 Creating a New Site3.2.2 Installing Dependencies 3.3 Usage3.3.1 Configuration3.3.2 Running L…

OLAP与OLTP:数据处理系统的比较分析

大家好,如今企业会从各种来源生成大量数据:客户互动、销售交易、社交媒体等等。要从这些数据中提取有意义的信息,需要能够有效处理、存储和分析数据的系统。 OLAP(联机分析处理)和OLTP(联机事务处理&#…

unity3D scrollview嵌套不能滑动的问题及其解决办法

unity3D scrollview嵌套不能滑动的问题 问题来源: 现在有这么一个需求,有一个页面,希望外面是一个水平方向滑动的scrollView A,A的子对象是一种能在垂直方向滑动的scrollview,此时,如果不做特殊处理&#…

笔试面试相关记录(13)

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

嵌入式linux--sysfs文件系统以及操作GPIO

sysfs文件系统 在Linux系统中,/sys路径是一个特殊的虚拟文件系统(Virtual File System),用于提供对内核和设备的运行时信息的访问。它是sysfs文件系统的挂载点,提供了一种以文件和目录形式表示系统设备、总线、驱动程…

【AIGC】一起学习prompt提示词(4/4)【经典】【15种提示词技巧】

写的时候并没有设计好,要做多少期,还是有始有终的比较好,为了方便阅读,我把之前的3期,改下名字,放到这里。 【AIGC】一起学习prompt提示词(1/4) 内容摘要:提示词是什么…

蓝眼开源云盘部署全过程(手动安装)

环境概述: 系统-Centos7.4 数据库-MySQL8 云盘系统-Tank4.0.1 前提:操作系统已完成安装,有外部网络。 一.安装数据库 cd到合适的目录进行下载安装操作,期间不要切换出去。 wget https://dev.mysql.com/get/mysql80-community-r…

【Android】统一系统动画

需求:除panel动画效果为弹出之外,其余的应用效果为渐入渐出 从系统层面统一把控动画效果,而不是单个应用自己处理 Android系统版本:9.0 代码地址 \frameworks\base\core\res\res\values\styles.xml 当时看注释,以为…

图像分类:弥合像素和理解之间的差距

一、介绍 在人工智能的广阔领域中,图像分类作为一种关键应用脱颖而出,它无缝地融合了计算机视觉和机器学习的复杂性。图像分类的核心是训练机器对数字图像中的对象或场景进行识别和分类。这项技术有着广泛的应用,从自动驾驶汽车和医疗诊断到社…

VSCode 使用CMakePreset找不到cl.exe编译器的问题

在用vscode开发c项目的时候,使用预先配置的CMakePresets.json可以把一些特定的cmake选项固定下来,在配置时直接使用 "cmake --config --preset presetname"就可以进行配置,免去在命令行输入过多的配置参数。 但是在vscode中&#…

Java实现俄罗斯方块

规则 1.方块会从上方缓慢下落,玩家可以通过键盘上的上下左右键来控制方块。 2.方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。 3.当区域中某一列横向格子全部由方块填满,…

阿里云腾讯云大比拼!阿里云99,腾讯云88!

首先,我们来看一下阿里云和腾讯云在云服务器价格上的差异。根据官方公布的信息,阿里云在双11大促活动中推出了全年最低价的云服务器,最低价格为87元1年。而腾讯云的云服务器价格稍高,最低为88元1年。虽然价格上的差距很小&#xf…