Redis大乱探------哨兵(二)
2019独角兽企业重金招聘Python工程师标准>>>
1.1前言
前一篇文章中,我们分析了主从复制的原理,但是在该模式下,一旦主节点由于故障无法提供服务,需要人工干预才能将从节点变为主节点,因此该模式不是高可用的。欣慰的是,Redis从2.8开始正式提供哨兵架构来解决这个问题。
1.2哨兵
当主节点出现故障时,哨兵(Redis Sentinel)模式下能自动完成故障发现和故障转移,并通知应用方,从而实现真正的高可用。
1.2.1故障发现
- Sentinel节点每隔1秒钟向主节点发动ping命令判断其存活状态,当主节点在down-after-milliseconds时间内没有正确的响应,则Sentinel将此主节点置为“主观下线”。主观即当前Sentinel节点单方面认为主节点不可用,并没有得到其他Sentinel节点的确认。
- 随后该Sentinel节点会通过 is-master-down-by-addr命令向其他Sentinel节点进行确认。当确认的Sentinel节点数>=quorum时,则该Sentinel节点认定该主节点“客观下线”。
- 当判定主节点为客观下线时,需要选取一个Sentinel节点作为领导者来处理故障转移工作。Redis使用了Raft算法实现领导者选举。大致选举流程如下:首先Sentinel节点确认主节点主观下线时,会像其他Sentinel节点发送is-master-down-by-addr命令,要求将自己设置为领导者。然后收到该命令的Sentinel节点,如果没有同意过其他Sentinel节点的命令,则同意该请求,否则拒绝。最后如果该Sentinel节点如果收到超过一半的意向同意,则成为领导者,如果本回合没有选出领导者,则开启下一回合。
1.2.2故障转移
步骤如下:
- 在从节点列表中选出一个节点作为新的主节点(1.先过滤掉不健康节点。2.选择从节点优先级最高的从节点,最在则返回,否则继续第三步。3.选择复制偏移量最大的节点,即复制最完整的节点,不存在则继续第四步。4.选择runid最小的从节点)。
- 将上面选出来的从节点执行slaveof no one 命令,让其成为主节点。
- Sentinel领导者节点向剩余的从节点发送命令,让他们成为新主节点的从节点。
1.3总结
哨兵机制能够自动完成故障发现和故障转移,有效的解决了Redis的高可用问题。
转载于:https://my.oschina.net/wuchanghao/blog/1824112
Redis大乱探------哨兵(二)相关推荐
- 大数据笔记(二十一)——NoSQL数据库之Redis
一.Redis内存数据库 一个key-value存储系统,支持存储的value包括string(字符串).list(链表).set(集合).zset(sorted set--有序集合)和hash(哈希 ...
- Cocos Creator | 飞刀大乱斗开发教程系列(二)!
点击上方蓝字关注我 预览效果 具体内容 ■ 这一期,主要讲解主页中间人物效果的实现.也就是,在下方列表选择不同人物,上方显示不同的人物,播放不同的效果,即下图的效果实现,此部分也是采用预制 Prefa ...
- 为什么至少三个哨兵_入职第一周,组长让我把部门redis服务搞成哨兵模式...慌-龙跃十二...
少点代码,多点头发 本文已经被GitHub收录,欢迎大家踊跃star 和 issues. 入职第一周,我被坑了 最近刚入职新公司,本来想着这刚来新公司,一般都是熟悉熟悉公司同事,看看组内工程文档,找几 ...
- redis专题:redis的主从、哨兵、集群架构的配置和部署详情、以及问题分析
文章目录 1. 在linux下安装redis 2. redis主从架构 2.1 redis主从架构搭建步骤 2.2 redis主从架构数据同步原理 2.3 如果在主从传输过程中,从节点挂了怎么办? 2 ...
- Redis(主从复制、哨兵模式、集群)概述及部署
Redis(主从复制.哨兵模式.集群)概述及部署 前言 一.主从复制 (1)主从复制原理 (2)主从复制作用 (3)主从复制流程 (4)搭建主从复制 ①修改master节点配置文件 ②修改Slave节 ...
- Redis主从搭建(哨兵模式),springboot整合redis主从
相关文章: redis主从复制(读写分离) redis哨兵模式 Redis配置详解 一.Redis主从搭建 本文讲解用的是Redis5.0.10搭建一主二从 Redis官方下载连接:http://do ...
- Redis主从复制(Replication)和哨兵模式(Sentinel)
1.主从复制 1.什么是主从复制 redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据 ...
- Redis(十八)——Sentinel 哨兵模式
文章目录 Redis(十八)--Sentinel 哨兵模式 1.哨兵模式概述 2.搭建 Sentinel 集群 3.sentinel 集群测试 4.哨兵模式的所有配置详解 Redis(十八)--Sen ...
- Day267.预约系统的性能瓶颈、营销活动无缝切换秒杀活动、预约系统数据迁移方案、高流量下预约系统搭建熔断机制、预约系统redis集群主从哨兵架构 -Redis的高并发预约抢购系统
一.预约系统的性能瓶颈 1.预约系统应对热门爆品时的缺陷 用户进行预约会涉及到两个维度的数据变更一个是用户信息,一个是SKU信息,如图↓所示: 正常来说这么搞一点问题没有,即便涉及到写数据库,但是每个 ...
最新文章
- 重温JavaScript
- hive 时间转字符串_2. HIVE 基本操作
- oracle命令窗口粘贴,Oracle数据库中的Copy命令
- 计算机导论的试题,计算机导论试题
- 前端学习(1947)vue之电商管理系统电商系统之使用自定义模板渲染
- 2-6:C++快速入门之内联函数,auto关键字,C++11基于范围的for循环和nullptr
- php试题库,PHP试题库一
- Java String常用的两个方法
- 对一个存储过程语法的解读
- 传统接口写法与Restful API 区别
- 请投量子位一票 | 2018年度明星学术公众号评选
- 项目引用android-support-v7-appcompat,如何使用android-support-v7-appcompat
- iec61508最新2020_功能安全IEC61508标准新旧版的对比.pdf
- cnn程序流程图_画流程图的基本原则
- Linux efi分区被删除了,恢复删掉的 MSR 和 EFI 分区
- wifi网络摄像机怎么用 无线网络摄像机怎么连wifi
- 环形10个树洞兔子c语言设计,[阅读打卡]I am a Bunny+提高孩子的欣赏能力我是一只小兔子,我的名字叫尼古拉斯 我住在一个树洞里面 在春天的时候,我喜欢看美丽的花儿,有...
- R语言入门——不掉包实现FNN(单层感知机)
- VS2017_扩大程序运行内存
- Stream使用技巧(1)------数据处理技巧