redis之哨兵机制

news2025/5/20 9:12:06

0. 前言

我们知道,只有主库才能有写操作,而从库只能进行读操作,那么当主库宕机后,如何保证服务的正常进行呢?

本文主要介绍的是 Redis 提供的哨兵机制,通过哨兵监控主库的状况,如果发现主库下线,则会从从库中选择一个状态优秀的当做主库,从而保证服务的高可用。

1. 哨兵如何保证高可用?

1.1 监控

哨兵进程会发送 PING 命令给主从库检测网络连接,如果超时,则判断为"主观下线"。

但是如果哨兵误判可能会导致主从切换,导致性能的额外开销,所以引入了哨兵集群,只有多数哨兵认为主库已经主观下线,主库会被标记为"客观下线",这时才会进行主从切换。

1.2 选择新主库

通过一定的筛选条件,把不符合条件的从库去掉,再按照一定规则给从库打分,得分最高的为新主库

筛选条件:

  • 当前从库的状态
  • 之前一段时间的网络状态

打分规则:

  • 用户可以给从库 slave-priority 配置优先级
  • 主从库同步程度
  • ID 号小的得分高

1.3 通知

哨兵会把新主库的连接信息发给其他从库,让它们执行 replicaof 命令,和新主库建立连接,并进行数据复制。同时,哨兵会把新主库的连接信息通知给客户端,让它们把请求操作发到新主库上。

2. 哨兵集群的组建

哨兵实例之间互相发现是基于 Redis 提供的 pub/sub 机制,发布/订阅机制。

哨兵只要与主库建立连接,会在主库 __sentinel__:hello 频道上发布消息,比如自己的 ip 地址和端口信息,订阅了该频道的其他哨兵会获取到发布消息哨兵的 IP 和端口,即可以与其建立网络连接,之后相互间就可以通过网络连接进行通信。

2.1 哨兵与从库建立连接

哨兵还需要和从库建立连接,这样才能监控从库的连接状态,当主库下线后,才能从它们中选举出新的主库。

哨兵使用 INFO 命令发送给主库,主库会返回从库列表连接信息,这样也能和从库建立连接并进行监控

2.2 哨兵与客户端建立连接

当主库下线后,客户端需要得知主库下线的消息,写操作需要切换到新的主库中,所以哨兵需要与客户端建立连接,并及时通知客户端。

客户端可以从哨兵订阅消息,获取到主从切换的各种事件。

客户端读取哨兵的配置文件,获取哨兵的地址和端口,建立连接,然后即可订阅消息。

3. 由哪个哨兵来执行主从切换 ?

任何一个哨兵判断主库 主观下线 就会向其他哨兵发送 is-master-down-by-addr 命令。其他实例会更具自己与主库的连接情况投出赞成票或反对票。当多数哨兵投赞成票时,则主库被认为 客观下线

此时,该哨兵再发命令给其他哨兵进行 leader选举,希望由自己来进行主从切换。在这个过程中,任何一个哨兵都可以参与选举,只要票数半数以上并且大于等于 quorum 值,则可以成为 leader

4. 参考文章

  • 本文主要是学习《极客时间-redis 核心技术与实战》专栏总结而来

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

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

相关文章

Python迭代法Iteration的讲解及求解海藻问题、方程问题实战(超详细 附源码)

一、迭代法简介 迭代法(iteration)是现代计算机求解问题的一种基本形式。迭代法与其说是一种算法,更是一种思想,它不像传统数学解析方法那样一步到位得到精确解,而是步步为营,逐次推进,逐步接近…

[附源码]Python计算机毕业设计高校本科毕业及资料存档管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

十二、JavaScript——其他数据类型

布尔值 (boolean)- 布尔值主要用于进行逻辑判断 - 布尔值只有两个 true 和 false (不用加引号) 空指 (null) - 空值用来表示空对象 - 空指只有一个 NULL - 用typeof检查空值时返回object 未定义 &…

二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6

记一次蚂蚁金服Java程序员面试经历(均为交叉面) ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) 一面 自我介绍 项目中的监控:那个监控指标常见的有哪些? 微服务涉及到的技术以及需要…

数据模型篇之大数据领域建模综述

第8章 大数据领域建模综述 1.为什么需要数据建模 为了更好的将数据进行有序、有结构地分类组织和存储。数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。 数据建模的好处: 性能:良好的数据模型能帮助我们快…

4款国产实用软件,只因功能强大,常被误认为是外国人开发的

过去常听说国外的XXX好,国外的月亮一定更圆,国产软件一样很良心,然而由于偏见,却被误认为是外国人开发的,闹出笑话。 1、Cruiser EXP Alpha 这是我见过最强大的电脑工具箱,没有之一,收纳了超120…

被新华社技术局点名!中国电信这个“黑盒子”干啥了?

全媒体时代,新闻报道又快又好,需要先进技术提供有力支撑。近日,中国电信收到新华社通信技术局感谢信,点赞中国电信5G商企专网产品,基于5G专线进行点对点快速组网,实现了前方报道重要节点物理线路的“空天备…

Springboot整合EasyExcel,实现Excel文件上传

一、概念 EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 它能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。EasyExcel是在尽可能节约内存的情况下支持读写百M的Excel。 二、Excel的上传(读Excel) 1.E…

Spring Batch 批处理-作业增量参数

引言 接着上篇:Spring Batch 批处理-作业参数校验,了解作业参数校验后,本篇就来了解一下Spirng Batch 作业增量参数。 作业增量参数 不知道大家发现了没有,每次运行作业时,都改动作业名字,或者改动作业的…

php就业招聘系统mysql数据库web结构计算机软件工程网页wamp

一、源码特点 PHP就业招聘系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环 境为PHP APACHE,数据库为mysql5.0,使用php语言开发。 php就…

【C00098】基于SSM的校园疫情防控管理系统——可视化大屏

基于SSM的校园疫情防控管理系统——可视化大屏项目简介项目获取开发环境项目技术运行截图注意:2022年最新款,全网唯一!! 先到先得!! 项目简介 基于ssm框架开发的校园疫情防控管理系统共分为四个角色&…

非零基础自学Golang 第6章 Go语言内置容器 6.3 映射

非零基础自学Golang 文章目录非零基础自学Golang第6章 Go语言内置容器6.3 映射6.3.1 声明映射6.3.2 初始化映射6.3.3 遍历映射6.3.4 从映射中删除键值对第6章 Go语言内置容器 6.3 映射 映射(map)是一种无序的键值对的集合,map的键类似于索引…

聚观早报 | 特斯拉上线Steam平台;苹果CEO库克访问索尼

今日要闻:特斯拉上线Steam平台;苹果CEO库克访问索尼;三星向华为转让多项专利;NASA将在太空调查水资源;传推特拖欠总部租金数周特斯拉上线Steam平台 12 月 14 日消息,特斯拉已经为其ModelS和ModelX电动汽车上…

建筑建材企业如何高效进行合同签署?数商云B2B系统推动企业合同签约规范化

建筑建材行业作为重要的材料工业,其主要产品包括建筑材料及制品、非金属矿及制品、无机非金属新材料三大门类,现广泛应用于建筑、军工、环保、高新技术产业和人民生活等领域,占国民生产总值的20%左右,但目前建筑建材行…

开关电源环路稳定性分析(08)——电流型补偿网络

大家好,这里是大话硬件。 在上一节分析了3种类型的电压型补偿网络,当然前面的内容还达不到环路补偿的要求,在后面会有内容对其进行补充。我们先把整个开关电源的闭环控制所需要基本知识点过一遍,再针对性的分析。 这一讲我们来分…

源码角度详解Java中的优先队列PriorityQueue(堆的实现)

if (e null) throw new NullPointerException(); modCount; int i size; if (i > queue.length) grow(i 1); size i 1; if (i 0) queue[0] e; else siftUp(i, e); return true; } 在offer方法中,我们会先判断数组是否需要扩容,然…

DataX 原理解析和性能优化

datax简介 datax是阿里开源的用于异构数据源之间的同步工具,由于其精巧的设计和抽象,数据同步效率极高,在很多公司数据部门都有广泛的使用。本司基于datax在阿里云普通版的rds服务器上实现了通过公网,从阿里云杭州到美国西部俄勒…

一种基于Spark深度随机森林的网络入侵检测模型

一种基于Spark深度随机森林的网络入侵检测模型学习目标学习内容目前存在的不足为了解决这个问题特征分片深度并行随机森林Deep Parallel Random Forest(DPRF)投票策略Spark 上的并行化高复用缓存计算每个RDD的权重分层替换模型评估局限性参考论文申明: 未经许可&…

ASP.NET Core Web API 学习笔记

目录 一、Demo 1. 创建项目 2. 启动项目 3. 编写 api demo 二、C# .NET WEB 程序结构 一、Demo 1. 创建项目 创建的项目结构如下: Properties 配置文件,存放了一些 .json 文件用于配置 ASP.NET Core 项目 Propertics/launchSettings.json 启动配置文件&…

以岭药业:连花清瘟火爆背后,数字化重塑人力资源管理

近日,随着疫情防控政策“国十条”发布,新冠防疫政策逐步进入后防疫时代,每个人要做自己健康的“第一责任人”。而连花清瘟作为中医药治疗新冠肺炎筛选出的“三药三方”之一,也成为新疫情防控模式下的家庭常备药。连花清瘟自上市以…