Redis进阶底层原理 - 高可用哨兵模式

news2024/11/27 3:48:59

Redis哨兵模式是redis实现高可用的一种分布式架构。哨兵节点是一种特殊的Redis实例,它不用于存储业务数据,它主要工作内容如下:(高可用不是指不出问题,而是出了问题后能及时的自动化解决,从而在客户端无感)

1、集群监控(monitor):哨兵可以通过定时任务不断的监控集群中的主从节点信息状态,检查主从节点是否正常运行。

2、提醒:当哨兵监控到集群中某个服务出现问题后,可以通过API进行消息通知给管理员。

3、故障转移:故障转移是Redis哨兵模式中最核心的功能。哨兵在发现某个主节点服务故障时(主观下线),哨兵之间会通过流言协议通讯,确定主节点是否客观下线,当主节点客观下线时,会通过故障转移流程将当前主节点的某个从节点选举作为主节点。同时完成其他节点信息更新等过程,来实现redis的高可用。同时哨兵也会向主从节点发送config rewrite命令来持久化更新配置信息。

4、配置中心:当发生故障转移后,会返回给客户端新的master信息。

集群监控(monitor)

哨兵核心通过三个定时任务来实现信息同步和监控,从而完成对集群服务的监控。每个哨兵都会维护一个信息表(集群的拓扑图数据),主要内容包括主从信息、哨兵信息、状态等等(可以通过info sentienl查看)。

 

 

主观下线、客观下线 

主观下线(sdown):

个哨兵会每秒一次(心跳定时任务)的向集群中的主从服务器发送ping命令,如果在规定的时间范围内(master-down-after-miliseconds)没有得到有效的回复结果,则该哨兵会将当前服务器状态设置为主观下线。
因为当前状态只是当前哨兵的判定结果,不能作为一个最终结果(因为可能是哨兵本身出问题了),所以叫做主观下线。

客观下线(odown):

当某一个哨兵发现主服务器处于主观下线状态,然后会以流言协议的方式来判断是否将其升级为客观下线。流言协议的方式:当哨兵发现主服务器处理主观下线状态时,会向其他哨兵发送SENTINEL is-master-down-by-addr,来判断其他哨兵是否也是观察到其下线了,如果在给定时间范围内(比如10秒内,大部分的哨兵都认为它下线了)确认主观下线的哨兵数 >= (quorum设定的权重数),则认定为当前主服务器为客观下线,此时就会开始后续的故障转移操作。

故障转移

哨兵模式的自动故障转移是redis实现高可用的方式。它是实现了当主服务器出现故障后,能自动的将其从节点替换成主节点的过程。(高可用不是代表不出问题,而是出问题后怎么自动化处理,让客户端无感)

 

 

 原图地址:

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

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

相关文章

Qt 项目架构之----MVC架构

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型)-是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图&#x…

web攻击

web攻击分为,信息泄露,弱口令,xss攻击,sql注入,文件上传,文件包含,webs hell,命令执行,xml实体注入。 #信息泄露 信息泄露主要包括敏感信息的信息,像口令&…

leetcode1171. 从链表中删去总和值为零的连续节点

1171. 从链表中删去总和值为零的连续节点 - 力扣(Leetcode) 累加数据和重复出现相同时,说明从相同和的第一次出现的下一个结点到最后一次相同累加数据的结点和为0,删除这段结点串、 给你一个链表的头节点 head,请你编…

Yocto系列讲解[技巧篇]92 - armv8 aarch64兼容armv7 32位程序运行环境

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述使能Multilib支持32位的helloworld程序执行出现No such file or directorylibc.so.6 cannot open shared object file修改内容固化…

整数数组的奇数位于数组的前半部分,偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路1: 类…

一.CreateFileMapping实现的共享内存及用法

共享内存概念 1.在32位的Windows系统中,每一个进程都有权访问他自己的4GB(2324294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模式…

CUDA并行编程

gpu 图形处理专用单元 cpu是主机单元 gpu显卡处理器 专门执行复杂数学和几何计算 不同表面有不同光纤效果 必须达到快速计算能力 gpu专门设计为大规模并行吞吐处理设计 用于加速图形显示 , 吞吐量高 峰值计算能力 4612 GFLOP/S 一秒钟可以计算4612G次浮点数计算…

SQL注入实操

文章目录 一、sqli-lab靶场搭建二、通关笔记1.Less-1a.单引号‘b.updatexmlc.concatd.unione.information_schemaf.GROUP_CONCATg.select 1,2 2.Less-2 一、sqli-lab靶场搭建 下载路径:https://www.hibugs.net/hi-resource/sqli-labs-master.zip 下载后解压复制到w…

腾讯数据中台项目集管理实战分享︱腾讯高级项目经理张嵎桐

腾讯PCG大数据平台部高级项目经理张嵎桐先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:腾讯数据中台项目集管理实战分享。大会将于8月12-13日在北京举办,敬请关注! 议题简要: 在“IT时代”向“…

9、加载cesium世界地形

本节演示使用CCsium库加载cesium的世界地形,使用第四节单击事件的例子,修改点击事件添加地形。 1、ceisum显示地形需要引入CesiumTerrainProvider和CreateWorldTerrain类。与ceisum类似,修改鼠标点击事件,创建地形并添加到ceisum…

Apache Doris (二十八):Doris 数据导入(六)Spark Load 1- 原理及配置

目录 1. 基本原理 2. Spark集群搭建 2.1 Spark Standalone 集群搭建 2.2 Spark On Yarn 配置 3. Doris配置Spark与Yarn 3.1 Doris配置Spark 3.2 Doris配置Yarn 进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质…

leetcode:定长字串中元音的最大数目

定长字串中元音的最大数目 medium 给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为(a, e, i, o, u)。 示例 1: 输入:s "abciiidef", k 3 输出…

KBLAutoSwitch偶尔无法自动切换输入法的问题

KBLAutoSwitch(https://github.com/flyinclouds/KBLAutoSwitch)是一款中英文输入法自动切换软件,但是在使用过程中偶尔会出现无法自动切换成自己想要的输入法的问题,比如我将cmd窗口设为自动切换英文输入法,但是在使用…

计算机组成原理 期末复习

在我的博客查看:https://chenhaotian.top/study/computer-composition-principles-final-review/ 如果遇到 外链图片转存失败 ,直接打开链接查看图片 计算机组成原理 期末复习 第 1 章 计算机系统概论 1.1 计算机的诞生和发展 冯诺依曼体系 1.2 计算…

LLaMA以及其扩展模型总结(一)

自从ChatGPT发布以来,人们看到了AGI时代的曙光,但是由于ChatGPT是闭源的,只能在官网体验和使用API进行访问,据OpenAI CEO说是出于AGI的安全性考虑,这样大大限制了很多研究人员和机构对于AGI的研究进展。Meta公司反其道…

在线转换视频格式到mp4怎么换?分享两个方法!

在日常生活和工作中,我们常常需要将视频文件转换为MP4格式以便于在各种设备上播放和共享。本文将介绍两种快速转换视频格式为MP4的方法,一种是使用记灵在线工具,另一种是使用一个在线转换工具。 方法一:记灵在线工具 记灵是一款…

LED驱动(原始架构)——STM32MP157

文章目录 硬件知识 LED 原理GPIO 引脚操作方法GPIO 模块一般结构GPIO 寄存器的一般操作 STM32MP157的GPIO操作方法先使能PLL4MPU、MCU共享GPIO模块1. 在MPU上使能某个GPIO模块2. 在MCU上使能某个GPIO模块 GPIO模块设置引脚工作模式:GPIO模式对于输出引脚&#xff1a…

模块化+命名空间

1.目的:为了让代码更好维护,让多种数据分类更加明确 2.修改src/store/index.js为了解决不同模块命名冲突的问题,将不同模块的namespaced:true,之后在不同页面中引入getter actions mutations state,需要加上所属的模块…

ADC基础进阶

ADC 啊.... 拿华大的来举例吧... 最少要知道了两个电路。 1. VERF 华大HC32F60的ADC以VREF为内部基准电压,如果VREFH管教悬空,那么实际其基准电压应该是MCU_3.3V,如果VREFH额外搭电路提供电压,应该是以其实际提供的电压为准&am…

Uber是如何解决数据一致性问题的呢?

Uber的请求流程非常复杂,如上图所示,他们使用Spanner来存储大量数据。Spanner是一个全面托管的、关键的关系型数据库服务,可以在全球范围内提供事务一致性和高可用性的自动同步复制。 但是,当扩展到数百万并发请求时,使…