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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NovelD: A Simple yet Effective Exploration Criterion论文笔记

NovelD:一种简单而有效的探索准则 1、Motivation 针对稀疏奖励环境下的智能体探索问题,许多工作中采用各种内在奖励(Intrinsic Reward)设计来指导困难探索环境中的探索 ,例如: ICM:基于前向动力学模型的好奇心驱动探索RND&…

【Qt-23】Qt charts绘制曲线图

一、QChart简介 QChart是Qt中专门用于绘制图表的模块,支持折线图、柱状图、饼图等常见类型。其主要组成部分有: QChart:整个图表的容器,管理图表中的所有数据和图形属性QChartView:继承自QGraphicsView,用于…

蓝桥杯算法心得——拼数(排列型回溯dfs)

大家好,我是晴天学长,排列型的dfs,在一些需要暴搜的题中很中很重要,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .拼数 2) .算法思路 超级递归 1.遍历数组&#…

【从删库到跑路】MySQL数据库 | 全局锁 | 表级锁 | 行级锁

文章目录 🌹简述🎄全局锁⭐数据备份🎈设置全局锁🎈对表进行备份🎈释放锁 🎄表级锁🛸表锁⭐读锁⭐写锁 🛸元数据锁🛸意向锁⭐意向共享锁⭐意向排他锁 🎄行级锁…

国产企业级低代码开发哪个最好?这一款超好用

低代码开发平台(Low-code Development Platform)正在迅速崛起,成为未来软件技术发展的主导趋势。通过使用低代码开发平台,企业能够显著提高开发效率,降低对专业开发人员的依赖,并实现更快速的软件交付和使用…

[数据结构]—带头双向循环链表——超详解

💓作者简介🎉:在校大二迷茫大学生 💖个人主页🎉:小李很执着 💗系列专栏🎉:数据结构 每日分享✨:旅行是为了迷路,迷路是为了遇上美好❣️❣️❣️ …

【双指针】:Leetcode283.移动零

朋友们、伙计们,我们又见面了,本专栏是关于各种算法的解析,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构专栏&…

NCP1654BD65R2G功率因数校正控制器 用于紧凑和坚固的连续导通模式预转换器

NCP1654BD65R2G是一款高效的同步整流控制器,主要用于DC/DC转换器和LED驱动器等应用。该控制器采用了高性能的反馈控制算法,可以实现高达95%以上的转换效率。此外,NCP1654BD65R2G还具有多种保护功能,如过流保护、过热保护、欠压保护…

【linux】centos7 yum安装nginx

查看系统中是否已安装 nginx 服务 yum list | grep nginx查看nginx运行进程 ps -ef | grep nginx添加源 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 安装Nginx yum install -y nginx 查看nginx安装目录 find …

2019年五一杯数学建模B题木板最优切割方案解题全过程文档及程序

2019年五一杯数学建模 B题 木板最优切割方案 原题再现 徐州某家具厂新进一批木板如表 1 所示,在家具加工的过程中,需要使用切割工具生产表 2所示的产品。假设:木板厚度和割缝宽度忽略不计。   请为该家具厂给出如下问题的木板最优切割方…

【从入门到起飞】JavaSE—IO高级流(2)(打印流,压缩流)

🎊专栏【JavaSE】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🎄打印流🛸字节打印流🛸字符打印…

C++算法:全 O(1) 的数据结构

题目 请你设计一个用于存储字符串计数的数据结构,并能够返回计数最小和最大的字符串。 实现 AllOne 类: AllOne() 初始化数据结构的对象。 inc(String key) 字符串 key 的计数增加 1 。如果数据结构中尚不存在 key ,那么插入计数为 1 的 key…