Redis-6 三种集群模式:主从模式、哨兵模式、分片集群

  • 主从模式

一.介绍一下redis的主从同步

单节点的redis的并发能力是有上限的,要实现高并发,就要搭建主从集群,实现读写分离。通常是一主多从,主节点负责写数据,从节点负责读数据。

二.介绍一下主从模式同步数据的流程

1.全量同步——用于主从第一次建立连接

(1)从节点请求主节点同步数据,向主节点发送版本信息:replication id和offset

        replication id:简称为replid,是数据集的标记,replid一致说明使用同一个数据集。通常每一个master节点都有唯一的replid,slave节点则会继承master节点的replid。

        offset:偏移量,随着命令日志文件的数据的增多而增大。slave节点完成同步时会记录当前同步的offset,如果slave的offset小于master的offset,说明该slave的数据落后于master,需要进行数据同步。

(2)主节点根据replid是否一致判断是否是第一次请求同步,如果replid不一致,说明是第一次同步,执行全量同步

(3)主节点执行bgsave,生成一个RDB文件,发送给从节点去同步

(4)在从节点同步RDB文件期间,如果主节点接受了新的写命令,则会将这些写命令记录在一个命令日志文件repl_baklog里面,该日志文件相当于一个缓冲区

(5)从节点同步完成后,主节点会将repl_baklog中的命令发送给从节点进行同步

2.增量同步——用于slave重启或后期数据变化

(1)从节点请求主节点同步数据,向主节点发送版本信息

(2)主节点根据replid是否一致判断是否是第一次请求同步,如果replid一致,说明不是第一次同步,执行增量同步

(3)主节点从repl_baklog中获取从节点的offset值之后的命令,发送给从节点进行同步

  • 哨兵模式

一.介绍一下哨兵模式

redis提供了哨兵(sentinel)机制用来实现主从集群的自动故障恢复,哨兵具有以下三个功能:

1.监控:sentinel会不断检查master节点和slave节点是否按预期工作。其基于心跳检测机制运行,每隔1秒就向集群的每个实例发送ping命令

(1)主观下线:如果某个sentinel节点发现集群中某个实例未在规定时间内响应,则认为该实例主观下线。该sentinel会向其余所有sentinel节点发送信息,询问它们该实例是否下线。

(2)客观下线:如果超过指定数量的sentinel节点都认为该实例主观下线,则判定该实例为客观下线,即该实例不可用。这个指定数量最好超过sentinel节点数量的一半。

2.自动故障恢复:如果master节点被判定为客观下线,则sentinel会依据选主规则将一个slave节点提选为新的master节点。当原master节点故障恢复后也会变成slave节点,以新的master节点为主。哨兵选主规则有多个,常用的有:

(1)先判断从节点的slave-priority值,值越小优先级越高

(2)如果slave-priority值相同,则判断从节点的offset值,值越大优先级越高

3.通知:sentinel充当redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给redis客户端。

二.你使用的redis是单点还是集群,如果是集群,是哪种集群?

示例:我使用的redis是集群,用的主从模式(一主一从)+哨兵模式。单节点不超过10G内存,如果redis内存不足,可以给不同的服务器分配独立的redis主从节点。

三.介绍一下redis的集群脑裂

1.集群脑裂是由于master节点 与 slave节点和sentinel 处于不同的网络分区,导致sentinel未能感知到master节点的心跳,判断master节点主观下线,提选一个slave节点作为新的master节点,这样就同时存在了两个master节点,像大脑分裂了一样。客户端仍然会向原master节点写入数据,而新节点无法同步数据。当网络恢复后,原master节点会被降为slave节点,其数据也会因为从新的master节点那同步数据而被覆盖,这样就导致了网络故障期间写入原master节点的数据全部丢失。

2.解决方式

通过修改redis的配置,实现

(1)设置最少从节点数量,只有当主节点的从节点数量超过指定值,才允许向主节点写入数据

(2)缩短主从同步数据的延迟时间

如果达不到要求就拒绝请求,这样就可以避免大量的数据丢失。

  • 分片集群

一.介绍一下分片集群

1.主从模式解决了高并发读的问题,哨兵模式解决了高可用的问题,但仍有两个问题为解决:海量数据存储和高并发写。使用分片集群可以解决这两个问题。

2.分片集群的特征和功能

(1)分片集群中有多个master节点,每个master节点存储不同的数据——解决了海量数据存储和高并发写的问题

(2)每个master节点都可以有多个自己的slave节点——相当于主从模式,解决了高并发读的问题

(3)master节点之间通过ping命令检测彼此的心跳——相当于哨兵模式,解决了高可用的问题

(4)客户端请求可以访问集群的任意节点,最后都会被转发到正确的节点——路由规则,进行数据定位

二.redis的分片集群中数据是如何读写的? == 分片集群的路由规则是什么?

1.redis分片集群引入了哈希槽的概念,集群共有16384个哈希槽

2.将16384个哈希槽分配给不同的master实例

3.根据key的有效值部分计算哈希值,将计算结果对16384取余,得到了对应的槽位,就可以对该槽位中的数据进行读写。

key的有效值:如果key前面有大括号,则大括号的内容就是有效值;如果没有大括号,就将整个key作为有效值。有效值常用于主动选择要将数据存储在哪个master实例下。

       

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

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

相关文章

分位数回归的基本原理和特点

基本模型及解释 分位数回归经典模型是由Koenker和Bassett (1978b)引入的,它从位置模型中的普通分位数(也称为“百分位数”)的概念扩展到更一般的一类线性模型,其中条件分位数具有线性形式。为了简单地回忆一下普通分位数,考虑一个实数随机变…

QGraphicsView实现简易地图11『指定层级-定位坐标』

前文链接:QGraphicsView实现简易地图10『自适应窗口大小』 提供一个地图初始化函数,指定地图显示的中心点和地图缩放层级 能够让地图显示某一层级的瓦片,并将中心点坐标显示在视图中心。 1、动态演示效果 7级地图-大连-老虎滩 定位到 8级地图…

双展联动—第四届中国跨境电商及新电商交易博览会强势来袭

双展联动产业升级 ——第四届中国跨境电商及新电商交易博览会强势来袭 万商云集有福之州,掘金万亿蓝海市场。备受瞩目的“第四届中国跨境电商及新电商交易博览会暨2024中国户外生活及休闲运动用品交易博览会”将于2024年9月21-23日在福建福州海峡国际会展中心盛大召…

接口性能测试 —— Jmeter并发与持续性压测!

接口压测的方式: 1、同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的次数 2、持续压测:设置线程组、循环次数,勾选“永远”,调度器(持续时间),这种…

汽车电子零部件(13):BMS电池管理系统

前言: 电池管理系统(BMS)确保电动汽车(EV)的能量分配安全高效。目前流行电动汽车中使用的有四种主要BMS架构,BMS与充电基础设施互为集成关系。BMS主要管理 的是电池组,电池组由很多电芯组成,比如下图是H/EV电池组的主要部件,显示了电池、连接、控制电路和包装的总体布…

软件技术主要学什么课程

软件技术专业主要学习的课程和内容有编程语言、数据结构与算法、数据库技术等,以下是上大学网( www.sdaxue.com)整理的软件技术主要学什么课程,供大家参考! 编程语言:掌握一种或多种编程语言,如C#、Java、Python、C等&…

PyCharm安装教程(超详细图文教程)

一、下载和安装 1.进入PyCharm官方下载,官网下载地址: https://www.jetbrains.com/pycharm/download/ 专业版安装插件放网盘了,网盘下载即可:itcxy.xyz/229.html2.安装 1.下载后找到PyCharm安装包,然后双击双击.ex…

es使用遇到的bug总结

本来版本7.4.0不行,最后换了个版本7.15.1就可以了,但又出现以下问题了: Beanpublic ElasticsearchClient elasticsearchClient() { // RestClient client RestClient.builder(new HttpHost("localhost", 9200,"http&q…

Paddle 基于ANN(全连接神经网络)的GAN(生成对抗网络)实现

什么是GAN GAN是生成对抗网络,将会根据一个随机向量,实现数据的生成(如生成手写数字、生成文本等)。 GAN的训练过程中,需要有一个生成器G和一个鉴别器D. 生成器用于生成数据,鉴定器用于鉴定数据的准确性&…

通过Docker Compose部署GitLab和GitLab Runner(一)

GitLab 是一个用于版本控制、项目管理和持续集成的开源软件平台,它提供了一整套工具,能够帮助团队高效地协作开发。而 GitLab Runner 则是 GitLab CI/CD 的执行者,用于运行持续集成和持续交付任务。 在本文中,我们将使用 Docker …

实现C++ Vector

手写C Vector&#xff0c;参考QVector 类声明 template<typename T >class IteratorVector;template<typename T >class IteratorVectorConst;template<typename T >class Vector final :public ContainerBase{public:explicit Vector()noexcept;explicit V…

【SpringBoot】-- 监听容器事件、Bean的前后置事件

目录 一、ApplicationContextInitializer 使用 1、自定义类&#xff0c;实现ApplicationContextInitializer接口 2、在META-INF/spring.factories配置文件中配置自定义类 二、ApplicationListener 使用 1、自定义类&#xff0c;实现ApplicationListener接口 2、在META-…

Selenium 自动化 —— 常用的定位器(Locator)

什么是定位器 定位器&#xff08;Locator&#xff09;是识别DOM中一个或多个特定元素的方法。 也可以叫选择器 Selenium 通过By类&#xff0c;提供了常见的定位器。具体语法如下&#xff1a; By.xxx("");我们选择单个元素时可以使用findByElement&#xff1a; Web…

三.Django--ORM(操作数据库)

目录 1 什么是ORM 1.1 ORM优势 1.2ORM 劣势 1.3 ORM与数据库的关系 2 ORM 2.1 作用 2.2 连接数据库 2.3 表操作--设置字段 2.4 数据库的迁移 写路由增删改查操作 项目里的urls.py: app里的views.py: 注意点: 1 什么是ORM ORM中文---对象-关系映射 在MTV,MVC设计…

Android 的 Timer 和 TimerTask

Timer 简介(来自Gemini) Timer 是 Java 中用于创建定时任务的类。它位于 java.util 包中。可以使用 Timer 来安排一次性或定期执行的任务。 每个 Timer 对象都对应一个后台线程。此线程负责从任务队列中检索任务并按计划执行它们。 使用 Timer 要使用 Timer&#xff0c;首先…

政安晨:【Keras机器学习示例演绎】(三十九)—— 使用 FNet 进行文本分类

目录 简介 模型 设置 加载数据集 对数据进行标记 格式化数据集 建立模型 训练我们的模型 与变换器模型比较 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&…

IAM帮你破解密码管理难题

面对让人头疼的密码管理难题&#xff0c;全球的政府、企业、安全厂商都在想办法。比如通过定期改密、强制添加特殊字符等方式提升密码强度&#xff0c;比如开展网络安全教育、提升员工对密码的重视程度&#xff0c;并且取得了显著效果。但是&#xff0c;想从根本上解决密码管理…

第二证券|炒股是波段好还是长期好?

炒股长时间比波段好一些&#xff0c;其原因如下&#xff1a; 1、长时间持有费用低 投资者在生意过程中&#xff0c;需求交纳必定的佣金费用、过户费用、印花税&#xff0c;而长时间持有股票&#xff0c;减少生意次数&#xff0c;能够节省一笔生意成本。 2、短期持有容易卖飞…

3.ERC4626

ERC4626是一个vault&#xff0c;在DAI中&#xff0c;使用ETH换取DAI。其流程为先充值ETH到maker vault。 Vault 资产的管理、分红用户充值某项资产获取某个凭证该凭证作为分红、推出的依据Yield Farming/借贷/质押等 以太坊改进提案EIP:ethereum improvemwnt proposal 最初E…

7.基于麻雀搜索算法(SSA)优化VMD参数(SSA-VMD)

01.智能优化算法优化VMD参数的使用说明 02.基本原理 麻雀搜索算法&#xff08;SSA&#xff09;是一种基于鸟类觅食行为的启发式优化算法&#xff0c;它模拟了麻雀在觅食时的群体行为&#xff0c;通过模拟麻雀的觅食过程来寻找问题的最优解。SSA的基本原理是通过模拟麻雀的搜索…