关于Redis中哨兵(Sentinel)

Redis Sentinel 相关名词解释

名词

逻辑结构

物理结构

主节点

Redis 主服务

一个独立的 redis-server 进程

从节点

Redis 从服务

一个独立的 redis-server 进程

Redis 数据节点

主从节点

主节点和从节点的进程

哨兵节点

监控 Redis 数据节点的节点

一个独立的 redis-sentinel 进程

哨兵节点集合

若干哨兵节点的抽象组合

若干 redis-sentinel 进程

Redis 哨兵(Sentinel)

Redis 提供的高可用方案

哨兵节点集合和 Redis 主从节点

应用方

泛指一个或多个客户端

一个或多个连接 Redis 的进程

为什么引入哨兵

Redis 中的主从复制最大的问题在于主节点,主节点挂了之后,从节点只能进行读操作,不能自动升级成主节点,不能替换原有主节点对应的角色,这时需要程序员收到恢复主节点,比较繁琐。

而 Redis 哨兵可以自动对挂了的主节点进行替换。

关于从节点和主节点之间断开连接,有两种情况:

  1. 从节点主动和主节点断开连接,比如 slaveof no one,这时从节点可以晋升成主节点。

  2. 主节点挂了,这是一种脱离掌控的情况,从节点不会自动变为主节点。

哨兵机制,是通过一个独立的 redis-sentinel 进程来体现的,和之前的 redis-server 是不同的进程,它不负责存储数据,只是对其他的 redis-server 进程起到监控的效果。

不使用哨兵节点进行监控的程序一般还要搭配一个报警程序使用,当主节点挂了就会通知程序员,程序员解决问题的一般流程为:

  1. 先确认主节点能不能恢复,是否方便恢复

  2. 如果主节点挂的原因不好定位,或者原因明确,但短时间内难以解决,就需要重新选择一个从节点,将其设置为新的主节点

  • 把选中的从节点通过 slaveof no one,从原来的主从关系中分离出来

  • 对其他从节点修改 slaveof 的主节点 ip port,连上新的主节点

  • 告知客户端(修改客户端配置),让客户端能够连接新的从节点,挂到这组机器中

这种手工处理的方式有很大的弊端,比如整个修复的过程中,所有的节点都不能正常工作,而修复的时间往往也比较长,所以这种方式很不适用。

Redis Sentinel架构

  1. redis sentienl进程通过和节点之间建立TCP长连接,以发送心跳包的方式,监控某个节点是不是挂了。如果挂的是从节点,则没有什么影响;如果挂的是主节点,多个哨兵节点之间会进行协商确认主节点是不是真的挂了。

  2. 如果主节点真的挂了,哨兵节点之间就会推举出一个 leader,由这个 leader 负责从其他的从节点中选出一个节点成为新的主节点。

  3. 这个被选中的从节点会执行 slaveof no one 从原来的主从关系中分离出来,然后其他的从节点会设置slaveof 到这个新的主节点上。

  4. 哨兵节点会自动通知客户端程序,告知新的主节点是谁,后续客户端程序再进行写操作,就会针对新的主节点进行。

哨兵选出 leader 之后,由 leader 选出新的主节点,选取依据如下:

  1. 优先级:每个 Redis 数据节点都会在配置文件中有一个优先级设置----slave-priority,优先级高的从节点成为主节点。

  2. offset:表示从节点从主节点同步数据的进度,数值越大,说明从节点的数据和主节点越接近,更适合作为新的主节点。

  3. Run id:每个 Redis 节点启动时随机生成的一串数字,也就是说到这一步的时候就没有什么“更适合”了,相当于随机选择一个。

总结

  • 哨兵节点不能只有一个,否则哨兵节点挂了也会影响系统可用性。

  • 哨兵节点最好是奇数个,方便选举 leader,得票更容易超过半数。

  • 哨兵节点不负责存储数据,仍然是 redis 主节点负责存储。

  • 哨兵 + 主从复制解决的问题是“提高可用性”,不能解决“数据极端情况下写丢失”问题。

  • 哨兵 + 主从复制不能提高数据的存储容量,当需要存的数据接近或超过机器的物理内存,这样的结构就难以胜任了。

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

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

相关文章

Golang-编码加密-Xor(GG)

go语言环境搭建 Golang学习日志 ━━ 下载及安装_golang下载-CSDN博客 go run xxx.go go build xxx.go 首先,cs.msf生成比特流数据. 放入xor,py脚本中进行xor加密. xor.py def xor(shellcode, key):new_shellcode ""key_len len(key)# 对shellcode的每一位进行…

Android平台RTMP推送|轻量级RTSP服务|GB28181接入之文字、png图片水印的精进之路

技术背景 Android平台推流模块,添加文字或png水印,不是一件稀奇的事儿,常规的做法也非常多,本文,我们主要是以大牛直播SDK水印迭代,谈谈音视频行业的精进和工匠精神。 第一代:不可动态改变的文…

计算机网络9——无线网络和移动网络2无线个人区域网 WPAN

文章目录 一、蓝牙系统二、低速 WPAN三、高速 WPAN 无线个人区域网WPAN(Wireless Personal Area Network)就是在个人工作的地方把属于个人使用的电子设备(如便携式电脑、平板电脑、便携式打印机以及蜂窝电话等)用无线技术连接起来自组网络,不需要使用接入点AP&#…

【设计模式】创建型设计模式之 建造者模式

文章目录 一、介绍定义UML 类图 二、用法1 简化复杂对象具体构建过程省略抽象的 Builder 类省略 Director 类 三、用法2 控制对象构造方法、限制参数关系Guava 中使用建造者模式构建 cache 来进行参数校验 一、介绍 定义 建造者模式,将一个复杂的对象的构建过程与…

实用软件分享---简单菜谱 0.3版本 几千种美食(安卓)

专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…

Hive日志介绍

日志描述 日志路径:Hive相关日志的默认存储路径为“/var/log/Bigdata/hive/角色名”,Hive1相关日志的默认存储路径为“/var/log/Bigdata/hive1/角色名”,以此类推。 HiveServer:“/var/log/Bigdata/hive/hiveserver”&#xff0…

住宿管理系统 java+jsp+web三件套

文章目录 1、简要介绍2、数据库设计3、中间遇到的困难一、数据问题二、文件问题 4、项目 写了将近3周,人都写麻了 记录下,第一个 ss 代码 仅仅使用了layui作为前端UI框架,因为另一个项目用的也是他,感觉一些组件比较好用 后端是j…

reverse入门刷题(6.9)

总结: 拿到附件,先运行看看有没有信息,再查壳,再IDA运行 1.Easy_vb 收获: 使用搜索:在String的时候用的是ctrlf 在IDA_view的时候使用搜索是Aitt 打开IDA,Aitt搜索MCTF(关键字即…

文献阅读:Solving olympiad geometry without human demonstrations

文献阅读:Solving olympiad geometry without human demonstrations 1. 文章简介2. 方法介绍 1. Overview2. Symbolic deduce3. Language Model4. 联合使用 3. 实验考察 & 结论 1. 基础实验考察2. 结果分析3. 样例展示 4. 总结 & 思考 文献链接&#xff1a…

看似不同的事情,却是相同的坑

目录 一、背景二、过程1.遭遇战-微盘股的下杀2.不失为一件好事3.一切向后看吧,最近的学习感受4.该有的心境 三、总结 一、背景 也在一点点改变,期间势必要经历流血的过程;所谓无疯狂不成长,积极的心态去应对,去总结总…

引入Springcloud--Sleuth-链路追踪中MDC是如何获取到traceid和何时放入traceid的

在分布式项目中需要引入 spring-cloud-starter-sleuth框架来记录跟踪请求在不同服务之前流转的路径。在整个流转路径通过traceid将所有的路径给串联起来。 项目中需要保存traceid来实现日志快速搜索和定位,可以通过MDC.get("traceId")获取到traceId。 …

评书下载到u盘,下载到内存卡,下载到手机或电脑的方法

评书下载的方法有很多种,无论是通过什么方法,我们都可以快速的获取喜爱的评书。下面将详细介绍常见的评书下载方法,帮助您快速上手。 1、搜索“十方评书网”。 2、要下载那个评书家的选择那个评书家就可以。 3、点击进去后可以一键下载单部评…

Elasticsearch中各种query的适用场景

Elasticsearch 提供了丰富的 Query 类型,以满足各种搜索需求。以下列举一些常见的 Query 类型,并分析其区别和应用场景: 一、 几个常用的基本Query 1. Term Query 应用场景: 查找包含特定词语的文档,适合精确匹配单个词语的场景…

【SpringBoot + Vue 尚庭公寓实战】标签和配套管理接口实现接口实现(六)

【SpringBoot Vue 尚庭公寓实战】标签和配套管理接口实现接口实现(六) 文章目录 【SpringBoot Vue 尚庭公寓实战】标签和配套管理接口实现接口实现(六)1、保存或更新标签信息2、根据id删除标签信息3、根据类型查询配套列表4、新…

Aptos Builder Jam 亚洲首站|见证 Aptos 公链 2024 年新突破

4 月下旬的「TinTin DESTINATION MOON」杭州站活动让我们构建下一个 Web3 巅峰的项目生态行动与未来战略。时隔三个月,「TinTin DESTINATION MOON」Aptos 线下活动将再次来到杭州,为 Aptos Builder Jam 亚洲首站火热造势,7 月 6 日诚邀 Web3 …

vue2中如何动态渲染组件

vue2中如何动态渲染组件 动态渲染组件代码解读通过函数调用渲染组件 封装一个函数调用的二次确认弹窗如何让外部知道用户点击了取消还是确定呢? 思考小结 vue2 的项目中,main.js 文件中有一个挂载 App.vue 组件的方法: new Vue({name: Root,…

工程师 - 什么是EMI测试

一、EMC EMI EMS定义: EMC(ElectromagneticCompatibility) 电磁兼容,是指设备或系统在电磁环境中性能不降级的状态。电磁兼容,一方面要求系统内没有严重的干扰源,一方面要求设备或系统自身有较好的抗电磁…

5G发牌五周年丨移远通信:全面发力,加快推进5G技术服务社会发展

2024年6月6日,正值中国5G商用牌照发牌五周年。根据移动通信“十年一代”的规律,5G已走过一半征程。在过去的五年时间里,5G技术从萌芽到成熟,深刻改变了工业、农业、医疗及消费端等各个领域的发展脉络。无论是无人机配送、自动驾驶…

【LeetCode】两数相加(基于单向链表)难度:中等

目录 理清题目 解题思路 题目代码 运行结果 我们来看一下题目描述: 理清题目 首先题目要求链表中的节点的值必须在[0,9]之间也就是说我们要处理的数字必为正整数,因此就不会涉及到太复杂的计算,题目其实就是要求对两个链表中的节点的值分…

详解 Flink 的状态管理

一、Flink 状态介绍 1. 流处理的无状态和有状态 无状态的流处理:根据每一次当前输入的数据直接转换输出结果的过程,在处理中只需要观察每个输入的独立事件。例如, 将一个字符串类型的数据拆分开作为元组输出或将每个输入的数值加 1 后输出。…