Redis的主从集群以及哨兵机制学习总结

Redis的主从集群以及哨兵机制

  • 为什么要使用主从集群?
    • 部署主从集群
    • 主从集群怎么同步数据?
    • 数据同步的方式和时机
    • 实例查看
    • 主从数据同步原理
    • 增量同步潜在的问题
    • 主从集群的优化
  • 主节点宕机怎么办?
    • 哨兵机制


为什么要使用主从集群?

我们项目中常常使用Redis来提高接口的性能和并发能力,但是单节点的并发能力并不是特别出众,并且如果节点宕机短时间内就无法工作。因此我们部署多个Redis实例,使用主从集群,包括一个主节点和多个从节点,主节点负责修改操作,从节点负责数据读取。

部署主从集群

我们通过以下命令指定主从节点:

# Redis5.0以前
slaveof <masterip> <masterport>
# Redis5.0以后
replicaof <masterip> <masterport>

主从集群怎么同步数据?

主节点负责修改数据,从节点负责读取数据,那么主节点需要向从节点同步数据,那么主从集群是怎么同步数据的?

数据同步的方式和时机

主从集群的数据同步方式有两种,分别是全量同步和增量同步,很简单理解,全量同步就是向从节点同步主节点的所有数据,而增量同步是向从节点同步主节点新增的数据即部分数据。
数据同步的时机:
当第一次同步数据时,会通过全量同步同步数据
当从节点宕机重启后,会通过增量同步同步数据
那么主节点怎么判断从节点是不是第一次同步数据呢?
通过

实例查看

开启三个实例,但是开启主从集群:

实例一:
在这里插入图片描述
实例二:

在这里插入图片描述
实例三:
在这里插入图片描述
开启主从集群后:

三个实例:
在这里插入图片描述

在还没有开启主从集时,我们发现三个实例的replid不同,开启主从后,实例二和实例三的replid变得和实例一一样

那么redis完全可以通过replid来判断有没有进行数据同步。

主从数据同步原理

当从节点向主节点发送数据同步的原理时,主节点会判断从节点replid是否和自己相同,如果不相同,说明没有进行数据同步,就会向从节点进行全量同步,如果相同,就会进行增量同步。
全量局部:全量同步是基于RDB持久化完成的,当主节点发现从节点的replid和自己不同时,会调用bgsave命令,创建一个子进程创建RDB快照,将快照发送给从节点,从节点删除本地所有数据通过RDB快照同步数据。
增量同步:主节点在缓存中有一个缓冲环即repl_baklog文件,如下图。主节点和从节点分别有自己的offset,即各自执行到的命令,当进行增量同步时,会根据其偏移量将从节点没有执行过的命令发送到从节点中
在这里插入图片描述

增量同步潜在的问题

当从节点宕机了,而主节点一直在写入命令,导致主节点覆盖了从节点还没有读到的指令,那么就会进行全量同步
在这里插入图片描述
全量同步毫无疑问很浪费性能,因此可以优化主从集群

主从集群的优化

1、在master中配置repl-diskless-sync yes启用无磁盘复制,避免全量同步时的磁盘IO。
2、减少单节点的内存大小,当进行全量同步时数据同步更快
3、提高缓冲环的大小,防止由于主节点写入过快导致数据覆盖而进行全量同步
4、使用主-从-从的模型,减少主节点的从节点数量,降低主节点数据同步的压力

主节点宕机怎么办?

我们上面讲了从节点宕机的问题和解决方案,如果主节点宕机了怎么办,怎么写入数据呢?

哨兵机制

我们可以开启哨兵,哨兵可以对Redis节点进行监控、故障转移以及状态通知
监控:哨兵集群对所有redis节点进行监控,每一秒就会ping每个节点,如果节点在一定时间内没有回应,那么哨兵认为redis主观下线(挂了),但是也有可能是哨兵的网络问题,因此需要通过哨兵集群的主观判断,如果超过一定数量的哨兵认为redis节点主观下线,那么该节点就是客观下线了,就需要进行故障转移
故障转移:如果主节点被认为是客观下线,那么最先发现主节点宕机的哨兵就会进行故障转移,从从节点中推选出一位主节点,一般是根据这些从节点与主节点的最晚断开连接时间、在缓冲环中的最大offset或者最多运行时间(同步了主节点最多的数据),然后将推选出的主节点设置为其他的从节点的主人,将故障的主节点设置为故障状态,等待其重启后认主。
状态通知:通知最新的集群信息给redis客户端
配置:

//哨兵ip
sentinel announce-ip "172.0.0.1"
// 主节点的ip和端口,2是判定主节点客观下线的哨兵数量
sentinel monitor hmaster 172.0.0.1 7001 2
//哨兵认为主观下线的超时响应时间
sentinel down-after-milliseconds hmaster 5000
//第一次故障转移失败多久后重试
sentinel failover-timeout hmaster 60000

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

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

相关文章

【机器学习】机器学习的基本分类-强化学习(Reinforcement Learning, RL)

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种基于试错的方法&#xff0c;旨在通过智能体与环境的交互&#xff0c;学习能够最大化累积奖励的策略。以下是强化学习的详细介绍。 强化学习的核心概念 智能体&#xff08;Agent&#xff09; 执行动作并与环境…

行政管理痛点解决方案:OA系统助力企业提效减负

作为企业行政管理的中枢&#xff0c;行政部门承担着企业运转的核心职责。从办公物资采购到会议室安排&#xff0c;从流程审批到企业文化建设&#xff0c;行政工作繁杂且细致。然而&#xff0c;在传统管理模式下&#xff0c;行政工作往往面临以下痛点&#xff1a; 流程繁琐&…

Flask内存马学习

文章目录 参考文章环境搭建before_request方法构造内存马after_request方法构造内存马errorhandler方式构造内存马add_url_rule方式构造内存马 参考文章 https://www.mewo.cc/archives/10/ https://www.cnblogs.com/gxngxngxn/p/18181936 前人栽树, 后人乘凉 大佬们太nb了, …

小红书关键词搜索采集 | AI改写 | 无水印下载 | 多维表格 | 采集同步飞书

小红书关键词搜索采集 | AI改写 | 无水印下载 | 多维表格 | 采集同步飞书 一、下载影刀&#xff1a; https://www.winrobot360.com/share/activity?inviteUserUuid595634970300317698 二、加入应用市场 https://www.yingdao.com/share/accede/?inviteKeyb2d3f22a-fd6c-4a…

(五)FT2232HL高速调试器之--三步实现STM32的VSCODE在线仿真工程搭建

对于单片机开发&#xff0c;rtthread studios 与 vscode&#xff0c;鱼与熊掌可以兼得否&#xff0c;其实是可以的&#xff0c;下面通过三个步骤&#xff0c;实现基于FT2232HL高速调试器的&#xff0c;stm32的VSCODE在线仿真工程的搭建。 1、软件下载与VSCODE插件安装配置 软…

【机器人】ATM 用于策略学习的任意点轨迹建模 RSS 2024 | 论文精读

文章提出了一种新的框架&#xff0c;名为Any-point Trajectory Modeling (ATM) &#xff0c;称为任意点轨迹建模。 用于从视频中预测任意点的未来轨迹&#xff0c;从而在最少动作标签数据的情况下&#xff0c;学习稳健的视觉运动策略。 图中展示了三个案例&#xff0c;打开柜子…

linux----系统i/o

基本概念 在Linux系统中&#xff0c;I/O&#xff08;Input/Output&#xff09;即输入/输出&#xff0c;是操作系统与外部设备&#xff08;如磁盘、终端、网络等&#xff09;进行数据交互的机制。它涉及到从外部设备读取数据到内存&#xff08;输入操作&#xff09;&#xff0c…

Mac 开机 一闪框 mediasharingd

Mac 开机 一闪框一闪而过 mediasharingd ->系统偏好设置->共享->服务的复选框全部取消&#xff0c;保存。 重启解决。

纯前端实现更新检测

通过判断打包后的html文件中的js入口是否发生变化&#xff0c;进而实现前端的代码更新 为了使打包后的文件带有hash值&#xff0c;需要对vite打包进行配置 import { defineConfig } from vite; import vue from vitejs/plugin-vue; import { resolve } from path; import AutoI…

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具&#xff0c;并取消勾选“识别和存储面邻域信息”&#xff0c;如下&#xff1a; 2、得到的线要素&#xff0c;如下&#xff1a;

基于SpringBoot+html+vue实现的林业产品推荐系统【源码+文档+数据库文件+包部署成功+答疑解惑问到会为止】

代码包运行启动成功&#xff01;不管你有没有运行环境&#xff0c;哪怕你是刚买的新电脑&#xff0c;也包启动运行成功&#xff01;有不懂的地方随便问&#xff01;问到会为止&#xff01; 【功能介绍】 基于SpringBootVue实现的林业产品推荐系统采用前后端分离的架构方式&…

【Java基础面试题024】Java中包装类型和基本类型的区别是什么?

回答重点 基本类型&#xff1a; Java中有8种基本数据类型&#xff08;byte、short、int、long、float、double、char、boolean&#xff09;他们是直接存储数值的变量&#xff0c;位于栈上&#xff08;局部变量在栈上、成员变量在堆上&#xff0c;静态字段/类在方法区&#xf…

.net core在linux导出excel,System.Drawing.Common is not supported on this platform

使用框架 .NET7 导出组件 Aspose.Cells for .NET 5.3.1 asp.net core mvc 如果使用Aspose.Cells导出excel时&#xff0c;报错 &#xff1a; System.Drawing.Common is not supported on this platform 平台特定实现&#xff1a; 对于Windows平台&#xff0c;System.Drawing.C…

web自动化测试知识总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、自动化测试基本介绍 1、自动化测试概述&#xff1a; 什么是自动化测试&#xff1f;一般说来所有能替代人工测试的方式都属于自动化测试&#xff0c;即通过工…

怿星科技联合赛力斯举办workshop活动,进一步推动双方合作

12月18日&#xff0c;由怿星科技与赛力斯汽车联合举办的workshop活动在赛力斯五云湖总部展开&#xff0c;双方嘉宾围绕智能汽车发展趋势、行业前沿技术、汽车电子网络与功能测试等核心议题展开了深度对话与交流&#xff0c;并现场参观演示了多套前沿产品。怿星科技CEO潘凯、汽车…

【Flutter_Web】Flutter编译Web第二篇(webview篇):flutter_inappwebview如何改造方法,变成web之后数据如何交互

前言 欢迎来到第二篇文章&#xff0c;这也是第二个难题&#xff0c;就是原有的移动端本身一些页面H5的形式去呈现&#xff08;webview&#xff09;&#xff0c;例如某些需要动态更换内容的页面&#xff0c;某些活动页面、支付页面&#xff0c;不仅仅做页面呈现&#xff0c;还包…

JS信息收集(小迪网络安全笔记~

免责声明&#xff1a;本文章仅用于交流学习&#xff0c;因文章内容而产生的任何违法&未授权行为&#xff0c;与文章作者无关&#xff01;&#xff01;&#xff01; 附&#xff1a;完整笔记目录~ ps&#xff1a;本人小白&#xff0c;笔记均在个人理解基础上整理&#xff0c;…

基于w25q128的智能门禁

项目需求 1. 矩阵键盘输入密码&#xff0c;正确则开锁&#xff0c;错误则提示&#xff0c;三次错误蜂鸣器响3秒&#xff1b; 2. 按下#号确认输入&#xff0c;按下*号修改密码&#xff1b; 3. 密码保存在 W25Q128 里&#xff1b; 4. OLED 屏幕显示信息。

【计算机网络】期末考试预习复习|中

作业讲解 转发器、网桥、路由器和网关(4-6) 作为中间设备&#xff0c;转发器、网桥、路由器和网关有何区别&#xff1f; (1) 物理层使用的中间设备叫做转发器(repeater)。 (2) 数据链路层使用的中间设备叫做网桥或桥接器(bridge)。 (3) 网络层使用的中间设备叫做路…

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

定义 开放词汇目标检测&#xff08;Open-Vocabulary Object Detection, OVOD&#xff09;是一种目标检测任务&#xff0c;旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别&#xff0c;而OVOD模型则具有识别“开放词汇…