关于哨兵的原理,关键是了解以下几个概念:

定时任务:每个哨兵节点维护了3个定时任务。定时任务的功能分别如下:通过向主从节点发送info命令获取最新的主从结构;通过发布订阅功能获取其他哨兵节点的信息;通过向其他节点发送ping命令进行心跳检测,判断是否下线。

主观下线:在心跳检测的定时任务中,如果其他节点超过一定时间没有回复,哨兵节点就会将其进行主观下线。顾名思义,主观下线的意思是一个哨兵节点“主观地”判断下线;与主观下线相对应的是客观下线。

客观下线:哨兵节点在对主节点进行主观下线后,会通过sentinel is-master-down-by-addr命令询问其他哨兵节点该主节点的状态;如果判断主节点下线的哨兵数量达到一定数值,则对该主节点进行客观下线。

需要特别注意的是,客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。

选举领导者哨兵节点:当主节点被判断客观下线以后,各个哨兵节点会进行协商,选举出一个领导者哨兵节点,并由该领导者节点对其进行故障转移操作。

监视该主节点的所有哨兵都有可能被选为领导者,选举使用的算法是Raft算法;Raft算法的基本思路是先到先得:即在一轮选举中,哨兵A向B发送成为领导者的申请,如果B没有同意过其他哨兵,则会同意A成为领导者。选举的具体过程这里不做详细描述,一般来说,哨兵选择的过程很快,谁先完成客观下线,一般就能成为领导者

redis 哨兵的原理相关推荐

  1. Redis哨兵模式原理

    Redis哨兵模式原理 一.哨兵模式 二.配置 三.检测异常(主观下线) 四.客观下线 五.故障转移 六.使用 七.缺点 一.哨兵模式 哨兵模式是Redis可用性的解决方案:它由一个或多个 senti ...

  2. redis哨兵模式原理_Redis哨兵原理,我忍你很久了

    [51CTO.com原创稿件]Redis 主从复制的作用中有这么一句话"主从复制是高可用的基石",那什么是高可用呢?高可用就是减少系统不能提供的时间,也就是常听到的以 6 个 9 ...

  3. Redis 哨兵模式原理

    主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. 一.哨兵 ...

  4. Redis——Redis哨兵机制原理

    摘要 redis的主从复制是redis系统的高可用前提,从库宕机依然可以将请求发送给主库或者其他从库,但是 Master 宕机,只能响应读操作,写请求无法再执行.所以主从复制架构面临一个严峻问题,主库 ...

  5. redis哨兵模式原理_Redis的哨兵 (sentinal) 机制的工作原理

    什么是哨兵机制? Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Mas ...

  6. Redis哨兵机制原理详解

    一.什么是哨兵模式: 1.哨兵模式的架构: 2.什么是哨兵模式: 在主从模式下(主从模式就是把上图的所有哨兵去掉),master节点负责写请求,然后异步同步给slave节点,从节点负责处理读请求.如果 ...

  7. Redis哨兵模式原理剖析,监控、选主、通知客户端你懂了吗?

    Redis 除了具有非常高的性能之外,还需要保证高可用,在故障发生时,尽可能地降低故障带来的影响,Redis提供了哨兵模式,来进行故障恢复. 哨兵主要负责做三件事: ①监控,监控主.从节点是否正常运行 ...

  8. Redis系列教程(五):Redis哨兵、复制、集群的设计原理,以及区别

    前一篇文章高并发架构系列:Redis为什么是单线程.及高并发快的3大原因详解谈了Redis高并发快的3个原因,本篇主要谈Redis的高可用,两篇合起来就可以把redis的高并发和高可用搞清楚了. 谈到 ...

  9. Redis的高可用详解:Redis哨兵、复制、集群的设计原理,以及区别

    谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. 哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能. ...

  10. Redis哨兵模式(原理剖析)

    Redis哨兵模式(原理剖析) 前言 一.Sentinel模式概述 二.配置哨兵模式 1.哨兵配置 1.1 优点: 1.2 缺点: 总结 前言 在Redis中主从复制解决高可用的方案是:当主节点服务器 ...

最新文章

  1. 一次防CC***案例
  2. VC2005中依然没有Refactoring和Code Expansion.
  3. ECC-based 算法(ECDSA/ECDH) 新潮算法的原理
  4. linux安装icc步骤,怎麼安装不到 icc?
  5. 工程设计论——如何写好工程代码
  6. 漫步最优化四十——Powell法(上)
  7. 485通信c语言编程linux,485通讯问题(C语言)
  8. 写给嵌入式方向的某些同学 - 基于WINCE系统的程序开发[不完整版]
  9. 分布式场景下数据一致性的问题——【分布式锁】 Java常用技术方案
  10. Linux服务器上安装node.js
  11. nodejs+socket.io用nginx反向代理提示400 Bad Request及ws://…无法连接的解决方法
  12. 高中学业水平测试计算机考试知识点,高中生物学业水平测试知识点归纳
  13. 使用PicGo和阿里云OSS建立云图床
  14. 惠普台式计算机耳机插口,惠普耳机插在台式电脑上没声音,为什么
  15. FineReport 填报报表数据自定义提交
  16. CentOS操作系统安装BT宝塔面板
  17. HTML5文件选择框(各种类型)
  18. echarts tree (树图) 实现自定义节点图标 自定义样式 点击节点后线条变色 自适应高度 搜索后节点关键字标红 写的很详细,建议收藏!
  19. 解决Windows提示缺少mfc140.dll文件的问题
  20. python中tan怎么表示_Python numpy.tan()用法及代码示例

热门文章

  1. maven解析xml+测试test+注解
  2. 从客户端中检测到有潜在危险的 request.form值
  3. markdown 常用语法格式
  4. viewport总结
  5. DataNucleus之JDO操作演示样例
  6. 读《单页web应用》-回顾作用域
  7. win7 任务计划 任务映像已损坏或篡改(异常来自HRESULT:0x80041321)
  8. 话说地址栏的URL的最大长度
  9. 知识整理2019清北学堂提高储备D1
  10. 解决百度BMR的spark集群开启slaves结点的问题