Redis中的可用性保证之Sentinel 原理
如何实现主从的自动切换?我们的思路:
创建一台监控服务器来监控所有Redis 服务节点的状态,比如,master 节点超过一定时间没有给监控服务器发送心跳报文,就把master 标记为下线,然后把某一个slave变成master。应用每一次都是从这个监控服务器拿到master 的地址。
问题是:如果监控服务器本身出问题了怎么办?那我们就拿不到master 的地址了,应用也没有办法访问。
那我们再创建一个监控服务器,来监控监控服务器……似乎陷入死循环了,这个问题怎么解决?这个问题先放着。
Redis 的Sentinel 就是这种思路:通过运行监控服务器来保证服务的可用性。
官网:
https://redis.io/topics/sentinel
从Redis2.8 版本起,提供了一个稳定版本的Sentinel(哨兵),用来解决高可用的问题。它是一个特殊状态的redis 实例。
我们会启动一个或者多个Sentinel 的服务(通过src/redis-sentinel),它本质上只是一个运行在特殊模式之下的Redis,Sentinel 通过info 命令得到被监听Redis 机器的master,slave 等信息。
为了保证监控服务器的可用性,我们会对Sentinel 做集群的部署。Sentinel 既监控所有的Redis 服务,Sentinel 之间也相互监控。
注意:Sentinel 本身没有主从之分,只有Redis 服务节点有主从之分。
概念梳理:master,slave(redis group),sentinel,sentinel 集合
Redis中的可用性保证之Sentinel 原理相关推荐
- Redis中的可用性保证之Sentinel的Ratf 算法
在分布式存储系统中,通常通过维护多个副本来提高系统的可用性,那么多个节点之间必须要面对数据一致性的问题.Raft 的目的就是通过复制的方式,使所有节点达成一致,但是这么多节点,以哪个节点的数据为准呢? ...
- Redis中的可用性保证之Sentinel服务下线
Sentinel 默认以每秒钟1 次的频率向Redis 服务节点发送PING 命令.如果在down-after-milliseconds 内都没有收到有效回复,Sentinel 会将该服务器标记为下线 ...
- Redis中的可用性保证之Sentinel故障转移
如果master 被标记为下线,就会开始故障转移流程. 既然有这么多的Sentinel 节点,由谁来做故障转移的事情呢? 故障转移流程的第一步就是在Sentinel 集群选择一个Leader,由Lea ...
- 【转】Redis 分布式——可用性保证之 Sentinel(实战篇)
前言 在上个篇章我们阐述了Sentinel的原理,可能大家还是云里雾里,需要来点实战性的东西,那这个篇章我们来个实战篇吧-话不多说,我们开始今天的吹牛皮- 正文 Sentinel 实战 Sentine ...
- Redis中布隆过滤器的使用及原理
<玩转Redis>系列文章主要讲述Redis的基础及中高级应用.本文是<玩转Redis>系列第[11]篇,最新系列文章请前往公众号"zxiaofan"查看, ...
- redis中使用GeoHash
redis中使用GeoHash 1.GeoHash底层原理 2. 基本使用 1.GeoHash底层原理 1.Redis3.2开始提供GEO模块,该模块使用了GeoHash算法 2.核心思想:GeoHa ...
- Redis:哨兵模式(Sentinel)原理
1. 前言 Redis主从复制模式不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复.Redis哨兵模式就解决了Redis主从复制模式 ...
- Redis中的Sentinel 配置
为了保证Sentinel 的高可用,Sentinel 也需要做集群部署,集群中至少需要三个Sentinel 实例(推荐奇数个,防止脑裂). hostname IP 地址 节点角色&端口 mas ...
- redis缓存数据库中zset数据结构底层算法实现原理:ziplist 和 skiplist
有序集合对象是有序的.与列表使用索引下标作为排序依据不同,有序集合为每个元素设置一个分数(score)作为排序依据. ①.编码 有序集合的编码可以是 ziplist 或者 skiplist. zipl ...
最新文章
- Sharepoint之升级篇
- crf linux使用教程,Linux下CRF++的使用
- XMLHttpRequest、fetch的ajax请求
- spring mvc使用html页面,使用Spring MVC的纯HTML页面应用程序
- Linux 获取屏幕分辨率与窗口行列数(c/c++)
- 基于SSM + Redis的Shiro权限管理项目
- 吴恩达深度学习神经网络基础编程作业Python Basics with Numpy
- 人工智能凉凉了?中国 AI 人才缺口高达 12113 个!
- 学习动态性能表 第五篇--V$SESSION
- C语言中的`sprintf`和`sscanf`两个函数介绍
- java.lang.ClassNotFoundException解决办法
- 查找农历生日与阳历生日属于同一天的次数和年份
- 关于词嵌入(Word Embedding)的一些总结
- java 流计算_Java 流收集器 ( Stream Collectors ) ( 一 ) - 统计计算
- java实现一个简单的计算器的加减乘除
- 把照片唱给你听 | 腾讯AI Lab国际领先技术邀你「趣」体验
- Tikz学习笔记(一)
- uploadify3.2上传插件案例
- 卢伟冰:Redmi K50是2022年度骁龙8旗舰性价比之王
- pythonlist是什么意思_python中的list是什么意思