redis每日一题:Redis哨兵是如何工作的

  状态感知:

(1)哨兵要知道整个集群的拓扑关系,因此每隔10秒会向master节点发送info命令,返回信息中,包含了每个slave节点的端口号。

(2)向每个master节点特殊的pubsub中发送master当前的状态信息和哨兵自身的信息。其他哨兵通过订阅pubsub就可以拿到每个哨兵发来的信息。

这有两个目的:

哨兵节点可以发现其他哨兵的加入,进而方便多个哨兵的通信

与其他哨兵交换master状态信息,为后续判断master是否故障提供依据

 

心跳检测:

每个哨兵节点每隔1秒,向master、slave、其他哨兵节点发送ping命令。如果对方能够在指定时间内响应,那么该哨兵节点认为此节点主观下线(主观下线)。

 

 

如果超过指定数量的哨兵都认为此节点主观下线,那么才会把这个节点标记为客观下线。

 

选举哨兵:

首先,要选举出来一个哨兵领导者,由这个哨兵领导者进行故障恢复操作,选举协商的过程,在分布式领域叫做共识算法。

哨兵选举的过程类似于Raft算法

简单来讲,流程如下:

(1)每个哨兵都设置一个随机超时时间,超时后向其他哨兵发送申请成为领导者的请求

(2)每个哨兵只能对收到的第一个请求进行恢复

(3)得到多数确认选票的哨兵节点,成为领导者。

(4)确认回复后,所有哨兵都无法达到多数选票的结果,那么进行重新选举,直到选出领导者为止。

 

 

选择新master

 

提升新的master

 

客户端感知新master

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

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

相关文章

毕业答辩PPT:如何在短时间内高效准备?

提起PPT,大家的第一反应就是痛苦。经常接触PPT的学生党和打工人,光看到这3个字母,就已经开始头痛了: 1、PPT内容框架与文案挑战重重,任务艰巨,耗费大量精力。 2、PPT的排版技能要求高,并非易事…

眼镜片怎么洗?眼镜清洗有哪些方法?超声波清洗机能洗眼镜吗?

现在戴眼镜的人有很多,但是所谓的戴眼镜容易,清洗眼镜却是比较难的一件事!不要以为眼镜好像看着不脏,然后随便用眼镜布擦一下就完事了……其实不是的! 眼镜片上面有细小的灰尘颗粒,而随着我们用眼镜布擦眼…

css之sprite

css之sprite 图片整合 sprite 优势 整合的方法 ps 新建图层(名字为英文、给定宽高、选择像素、背景内容设置透明、创建)ctrlc复制小图 ctrlv 粘贴 选择工具移动位置裁剪工具,剪掉下方多余的位置 enter导出(PNG) 精灵…

【自动驾驶】从零开始做ROS小车

文章目录 ROS机器人整体介绍运动底盘的控制(串口通信控制)运动底盘(运动学分析)ROS相关的ubuntu基础教程ROS基础干货ROS应用电机PID控制轮式机器人运动学分析自主导航图像处理深度学习语音识别 ROS机器人整体介绍 【自动驾驶】RO…

MySQL多表查询操作

一对多SQL表创建 -- 创建部门表(父表) create table dept(id int auto_increment comment ID primary key,name varchar(50) not null comment 部门名称 ) comment 部门表;-- 给部门表插入数据 insert into dept (name) values (研发部),(市场部),(财务部),(销售部),(总经办);-…

Java的JVM自测题

文章目录 一、运⾏时数据区中包含哪些区域?哪些线程共享?哪些线程独享?哪些区域可能会出现 OutOfMemoryError ?哪些区域不会出现 OutOfMemoryError ?二、说⼀下方法区和永久代的关系?三、Java 对象的创建过程&#xf…

【Linux】进程间通信2——命名管道

1. 命名管道(FIFO) 1.1. 基本概念 简单,给匿名管道起个名字就变成了命名管道 那么如何给 匿名管道 起名字呢? 结合文件系统,给匿名管道这个纯纯的内存文件分配 inode,将文件名与之构建联系,关键点在于不给它分配 D…

2024 年最新 Python 基于 LangChain 框架基础案例详细教程(更新中)

LangChain 框架搭建 安装 langchain pip install langchain -i https://mirrors.aliyun.com/pypi/simple/安装 langchain-openai pip install langchain-openai -i https://mirrors.aliyun.com/pypi/simple/ChatOpenAI 配置环境变量 环境变量 OPENAI_API_KEYOpenAI API 密钥…

生成式人工智能如何改变客户服务

生成式人工智能不仅重新定义了品牌与客户的互动方式,还重新定义了品牌如何优化内部资源,以提供更加个性化和高效的服务。 了解在就业和效率方面的挑战和机遇,使用生成式人工智能工具进行客户服务和支持任务。 生成式人工智能不仅重新定义了品…

【Quartus 13.0】EP1C3144I7 部署4*6矩阵键盘

仿照 正点原子 的 Sample 修改 V2手册 P266 没有用这个 给出的手动按键控制的矩阵模块 为 4*6 矩阵键盘外接模块 每一个按键自带led,所以对应的接口是合并在一起的一个引脚 按下后 LED 亮,vice versa 底部 LED*8 目前不清楚有什么用 或许可以变成 16进…

外链跳转到小程序原生的企业客服

备注: 在外链中,不能直接调起小程序原生客服(wx.openCustomerServiceChat)。 解决方法: 小程序里新增一个原生的过渡页面。外链跳转到过渡页面,在过渡页面添加点击事件,打开原生客服 在外链中…

Swift Combine — Publisher、Operator、Subscriber概念介绍

Combine框架介绍 Combine框架提供了一个声明式Swift API,用于处理随时间变化的值。这些值可以表示多种异步事件。Combine声明发布者公开发布可能随时间变化的值,并声明订阅者从发布者接收这些值。 Combine框架为应用程序如何处理事件提供了一种声明式的…

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 02 Clos拓扑

本章回答以下问题: 什么是 Clos 拓扑,它与“接入 - 汇聚 - 核心”拓扑有何不同?Clos 拓扑的特征是什么?Clos 拓扑对数据中心网络的影响是什么? Clos拓扑 云原生数据中心基础设施的先行者们想要构建一种支持大规模水平扩展网络。 基本的Clos拓扑如图…

检查HIVE分区是否连续

检查HIVE分区是否连续 场景描述分区连续性检查语句 我们经常可能会有这样的诉求,需要对一张目标表进行分区检查,查看是否存在不连续的情况,该诉求频繁且重要,因此以下语句可以实现我们的诉求 场景描述 我们有一张表,…

精准营销是一种利用大数据和人工智能技术来定位目标客户的方法

精准营销是一种利用大数据和人工智能技术来定位目标客户的方法。下面是涉及到的用户类型和业务流程,以及开发难度评估: 用户类型: 活跃用户:经常使用产品或服务的用户。潜在用户:尚未使用产品或服务,但可能对其感兴趣的用户。流失用户:曾经使用过产品或服务,但已经停止使用或…

在Gradle中优雅地统一管理依赖

前言 不知大家在使用 Gradle 的时候是如何统一管理整个项目所需依赖的版本呢?尤其是在有多个模块的情况下。 曾经我写过 一篇文章 来介绍如何在 buildSrc 中使用常量来管理版本,但是实际上那种做法并不怎么优雅,甚至有些邪道。 当然&#…

记录一下 Chrome浏览器打印时崩溃问题

问题描述: 为了查看页面内存占用情况,按F2,打开Memory chrome浏览器点击“打印”按钮,或Ctrl P 时出现如下页面 一直以为是页面问题,每次打印的时候遇到这种 崩溃现象 就是重新刷新页面 但今天刚开一个页面,内存 …

【2024最新精简版】RabbitMQ面试篇

文章目录 Kafka和RabbitMQ什么区别惰性队列(Lazy Queues)是怎么实现的?RabbitMQ工作模式有哪些 ?你们项目中哪里用到了RabbitMQ ?为什么会选择使用RabbitMQ ? 有什么好处 ?使用RabbitMQ如何保证消息不丢失 ?消息的重复消费问题如何解决的…

Unity中使用UI组件实现场景切换——6.18山大软院项目实训

设置场景切换 在Unity项目中,首先需要准备几个场景,并在项目的“Build Settings”中添加这些场景,以确保SceneManager可以加载它们。本例中,我们假设已有几个场景编号依次为1到5。 脚本概述 我们创建了一个SwitchScene类&#…

在IDEA 2024.1.3 (Community Edition)中创建Maven项目

本篇博客承继自博客Windows系统Maven下载安装-CSDN博客 Maven版本:maven-3.9.5 修改设置: 首先先对Idea的Maven依赖进行设置;打开Idea,选择“Costomize”,选择最下边的"All settings" 之后找到Maven选项&…