什么是Redis哨兵机制?

大家好,我是锋哥。今天分享关于【什么是Redis哨兵机制?】面试题。希望对大家有帮助;

什么是Redis哨兵机制?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

Redis 哨兵(Sentinel)机制是 Redis 提供的一种高可用性(HA)解决方案,用于实现 Redis 的故障检测、自动故障转移(failover)和通知功能。哨兵机制能够在主 Redis 节点发生故障时自动将某个从节点提升为新的主节点,并将客户端指向新的主节点,保证 Redis 集群的持续可用性。

主要功能

Redis 哨兵机制具备以下几个核心功能:

  1. 故障监测(Fault Detection)
    哨兵系统会持续监测 Redis 主节点和从节点的健康状态。通过定期与主节点和从节点进行通信(PING),如果某个节点失去响应或出现其他故障,哨兵将会识别出来。

  2. 自动故障转移(Automatic Failover)
    一旦主节点发生故障,哨兵会自动选择一个健康的从节点提升为新的主节点,并将其它的从节点指向这个新的主节点。这样保证了 Redis 集群的高可用性,避免了单点故障。

  3. 通知功能(Notification)
    当 Redis 集群发生故障或状态变化时,哨兵机制会通过发布订阅系统通知外部系统或管理员。例如,当主节点发生故障并进行故障转移时,哨兵会发送通知。

  4. 配置管理(Configuration Provider)
    哨兵可以充当配置提供者,客户端可以通过哨兵获取当前集群的主节点地址,而不需要依赖固定的主节点地址。这使得客户端能够在主节点变更时自动更新连接目标。

哨兵架构

Redis 哨兵是通过一个或多个哨兵实例来运行的。它们共同工作,以保证高可用性。每个哨兵实例是一个独立的 Redis 进程,通常部署在多个机器上,彼此之间相互通信。以下是一个典型的 Redis 哨兵架构:

  1. 主节点(Master):负责处理所有的写操作和一些读取操作。
  2. 从节点(Slave):从主节点复制数据,通常负责处理读取操作。一个主节点可以有多个从节点。
  3. 哨兵节点(Sentinel):负责监控主节点和从节点的状态,发现故障时执行故障转移。

哨兵工作流程

1. 故障检测

哨兵会定期检查主节点和从节点的健康状态。每个哨兵实例都会向其他节点发送心跳(PING)信号,如果某个节点在设定时间内没有回应,哨兵会认为该节点发生了故障。多个哨兵实例会相互确认,以避免单个哨兵的误判。

2. 选举新的主节点

如果主节点故障,哨兵会选举一个从节点提升为新的主节点。这个过程如下:

  • 哨兵会对所有从节点进行评估,选择一个最合适的从节点来作为新的主节点。通常选择那些与主节点最新同步的从节点。
  • 哨兵会通过发布订阅机制通知其它从节点和客户端,新的主节点已经被选举出来。
3. 更新配置

一旦新的主节点被选举出来,哨兵会通知集群中的从节点将新的主节点作为复制源,并同步它们的数据。客户端也可以通过哨兵获取到最新的主节点信息。

4. 客户端更新

客户端通过向哨兵查询来获取主节点的地址,当主节点发生故障转移后,哨兵会将新的主节点信息告知客户端,确保客户端能够连接到最新的主节点。

哨兵集群配置

在生产环境中,为了确保 Redis 哨兵的高可用性,通常会部署多个哨兵节点。推荐部署至少 3 个哨兵节点,这样可以避免因单点故障导致的集群不可用。

示例配置:

在 Redis 哨兵的配置文件中,我们可以指定哪些主节点和从节点是需要监控的。例如:

# sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster yourpassword
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000
  • sentinel monitor:指定哨兵需要监控的主节点(mymaster)。该指令中的 127.0.0.1 和 6379 是主节点的 IP 和端口,2 是表示有多少个哨兵节点需要确认主节点故障才认为主节点真的宕机。
  • sentinel auth-pass:设置访问主节点的认证密码。
  • sentinel down-after-milliseconds:指定在检测到主节点宕机前等待的时间(单位:毫秒)。如果主节点在 30000 毫秒内没有响应,认为它已宕机。
  • sentinel failover-timeout:设置故障转移的超时时间。

使用哨兵的好处

  1. 高可用性:Redis 哨兵机制能够在主节点故障时自动进行故障转移,保证系统的高可用性。
  2. 自动恢复:当主节点恢复正常后,它可以重新成为从节点,继续从新的主节点同步数据,避免人工干预。
  3. 无单点故障:部署多个哨兵节点可以避免单点故障,保证监控和故障转移的高可用性。
  4. 动态配置:通过哨兵机制,客户端能够动态获取当前集群的主节点地址,简化了客户端配置。

限制与挑战

尽管 Redis 哨兵机制提供了高可用性和故障转移功能,但也有一些限制:

  1. 数据丢失风险:在故障转移过程中,可能会丢失部分写操作,因为 Redis 哨兵并不保证事务性的数据一致性。
  2. 需要多个哨兵实例:为了避免因单点故障导致监控失败,至少需要部署 3 个哨兵节点,这增加了部署和维护的复杂性。
  3. 网络分区问题:在网络分区或多个故障的情况下,哨兵可能无法正确地判断哪个节点是主节点,从而导致集群的不一致或分裂。

总结

Redis 哨兵机制通过自动化的故障检测和故障转移,确保 Redis 集群的高可用性。它可以自动监控 Redis 节点的状态,在主节点宕机时自动选举一个从节点作为新的主节点,并更新客户端和从节点的配置,从而保证 Redis 服务的持续可用性。虽然 Redis 哨兵提供了强大的高可用性支持,但它也存在一些挑战,特别是在数据一致性和网络分区等方面。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习的魔法世界

技术文章:深度学习的魔法世界 引言 嘿,今天我们要一起探索一个非常酷的魔法世界——深度学习!这是一门让计算机变得超级聪明的科学。我们会用最简单的语言来解释深度学习的基本概念,让你们也能轻松理解。 一、深度学习的六大魔…

数据挖掘——决策树分类

数据挖掘——决策树分类 决策树分类Hunt算法信息增益增益比率基尼指数连续数据总结 决策树分类 树状结构,可以很好的对数据进行分类; 决策树的根节点到叶节点的每一条路径构建一条规则;具有互斥且完备的特点,即每一个样本均被且…

RFID手持机与RFID工业平板在仓储物流管理系统中的选型

概述 随着物联网技术在仓储物流管理系统中的普及,RFID手持机与RFID工业平板作为基于RFID技术手持式读写器的两种重要终端设备形态,得到了广泛应用。尽管RFID手持机与RFID工业平板都具备读写 RFID标签的基本功能,使用场景较为类似&#xff0c…

文件本地和OSS上传

这里写目录标题 前端传出文件后端本地存储阿里云OSS存储上传Demo实现上传ConfigurationProperties 前端传出文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>上传文件</title> </head&g…

element-plus大版本一样,但是小版本不一样导致页面出bug

npm 的版本 node的版本 npm的源这些都一样&#xff0c;但是效果不一样 发现是element的包版本不一样导致的 2.9.1与2.8.1的源是不一样的&#xff0c;导致页面出bug;

CSS进阶和SASS

目录 一、CSS进阶 1.1、CSS变量 1.2、CSS属性值的计算过程 1.3、做杯咖啡 1.4、下划线动画 1.5、CSS中的混合模式(Blending) 二、SASS 2.1、Sass的颜色函数 2.2、Sass的扩展(extend)和占位符(%)、混合(Mixin) 2.3、Sass的数学函数 2.4、Sass的模块化开发 2.5、Sass…

python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作

出现了这个问题&#xff0c;就好像是我要去找在南方的人&#xff0c;然后我刚好不分南北&#xff0c;我认为的方向错了&#xff0c;实则方向对了。 在我针对复盘解决&#xff1a;sqlite3.OperationalError: unrecognized token: “{“-CSDN博客这个内容的时候&#xff0c;又出现…

剪映--关键帧教程:制作视频文字说明,文字动态划线,透明文字,虚拟触控,画面旋转缩小退出

关键帧介绍 剪映当中许多动态的效果都是关键帧的应用&#xff0c;像接下来会讲到的文字动态划线&#xff0c;画面旋转退出&#xff0c;都是关键帧的效果&#xff0c;用户只要设定初始状态和最后状态&#xff0c;软件会将中间的动态补齐。剪辑的难点在于自己需要先想好要怎么去…

【数据结构Ⅰ复习题】

如有错误欢迎指正&#xff0c;题目根据教材----------严蔚敏数据结构&#xff08;c语言版 第2版&#xff09;人民邮电电子版 数据结构Ⅰ复习题 一、填空题1&#xff0e;算法应该具备的5个重要特性有___有穷性___、确定性、可行性、输入和输出。2&#xff0e;非空单链表L中*p是头…

697: Edit Distance

我们定义 dp[i][j] 为将字符串 A[0..i-1] 转换为 B[0..j-1] 的最小操作数 状态转移 通过动态规划的思想&#xff0c;我们可以使用 状态转移方程 来计算 dp[i][j]。具体来说&#xff0c;dp[i][j] 的值可以由以下几种操作得到&#xff1a; 如果 A[i-1] B[j-1]&#xff1a; 如果…

【AI创作】kimi API初体验

一、介绍 接口文档 https://platform.moonshot.cn/docs/guide/migrating-from-openai-to-kimi 收费详情 并发: 同一时间内我们最多处理的来自您的请求数RPM: request per minute 指一分钟内您最多向我们发起的请求数TPM: token per minute 指一分钟内您最多和我们交互的toke…

迈向AGI,3、2、1,2025上链接!

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 往期精彩文章推荐 关于AI TIME AI TIME源起于2019年&#xff0c;旨在发扬科学思辨精神&#xff0c;邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索&#xff0c;加强思想碰撞&#xff0c;链接全…

C语言中的强弱符号

文章目录 一、基本定义二、链接过程中的行为三、应用场景四、强弱符号示例1五、稍有难度示例2 在C语言中&#xff0c;强弱符号是与链接过程相关的重要概念&#xff0c;C中不存在强弱符号&#xff0c;以下是对它们的详细讲解&#xff1a; 一、基本定义 强符号 强符号通常是指在…

数据仓库建设方案和经验总结

在做数据集成的过程中&#xff0c;往往第二步的需求就是建设数仓由于数据分散在不同的存储环境或数据库中&#xff0c;对于新业务需求的开发需要人工先从不同的数据库中同步、集中、合并等处理&#xff0c;造成资源和人力的浪费。同时&#xff0c;目前的系统架构&#xff0c;无…

SAP SD学习笔记24 - 赠品的两种形式 - 内增Bonus数量、外增Bonus数量

上一章讲了无偿出荷的内容。 SAP SD学习笔记23 - 无偿出荷&#xff08;免费交货&#xff09;与继续无偿出荷&#xff08;继续免费交货&#xff09;-CSDN博客 本章继续将SAP中赠品的两种形式&#xff1a; - 内增Bonus数量&#xff1a;Bonus数量包含在总数量当中&#xff0c;比…

【JVM】JVM自学笔记(类加载子系统、运行时数据区、执行引擎)

JVM自学笔记 引言总结JVM跨平台JVM组成部分类加载子系统运行时数据区程序计数器虚拟机栈本地方法栈堆 执行引擎垃圾回收 引言 主要内容为学习b站视频后的笔记部分个人总结。原视频链接为&#xff1a;【【JVM极简教程】2小时快速学会JVM&#xff0c;史上用时最短&#xff0c;效…

丢弃法hhhh

一个好的模型需要对输入数据的扰动鲁棒 丢弃法&#xff1a;在层之间加入噪音&#xff0c;等同于加入正则 h2和h5变成0了 dropout一般作用在全连接隐藏层的输出上 Q&A dropout随机置零对求梯度和求反向传播的影响是什么&#xff1f;为0 dropout属于超参数 dropout固定随…

深入Android架构(从线程到AIDL)_06 短程通信 vs. 远程通信

目录 7、 短程通信 vs. 远程通信 範例&#xff1a; 短程通信 撰写步骤 範例&#xff1a; 遠程通信 7、 短程通信 vs. 远程通信 範例&#xff1a; 短程通信 首先出现ac01画面&#xff0c;立即启动myService&#xff0c;定时连续传来数字&#xff0c;如下&#xff1a;由于定…

进销存软件数据库设计

设置 system_config 系统参数配置pricing_policy 价格策略&#xff08;销售采购价格取数优先级&#xff09;code_rule 编码规则account_book 账套checkout 结账admin 管理员role 角色menu 菜单menu_role 角色菜单merchant 商户merchant_menu 商户菜单merchant_user 商户用户资料…

[文献阅读]ReAct: Synergizing Reasoning and Acting in Language Models

文章目录 摘要Abstract:思考与行为协同化Reason(Chain of thought)ReAct ReAct如何协同推理 响应Action&#xff08;动作空间&#xff09;协同推理 结果总结 摘要 ReAct: Synergizing Reasoning and Acting in Language Models [2210.03629] ReAct: Synergizing Reasoning an…