本篇文章带大家了解一下Redis中的哨兵模式,希望对大家有所帮助!
Redis 主从模式,一旦主节点发生故障,可以将从节点 升为 主节点,同时还要通知客户端更新主节点地址,这样一般是不可行的。所以,Redis 提供了 Redis Sentinel
哨兵机制 来解决这个问题。【相关推荐:Redis视频教程】
主从复制的问题
1. 主从复制的好处
- 主节点发生故障,从节点会升级为主节点
- 扩展主节点的读能力,分担主节点压力
2. 存在的问题
- 从节点升级主节点的过程需要人工干预,同时要更改客户端Redis服务地址
- 主节点写能力、存储能力受到单机限制
- 性能的影响:Redis 复制中断 后从节点会发起
psync
。此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时,可能会造成毫秒或秒级的 卡顿
Sentinel 实现原理
1. 一些概念
主要功能
- 监控 : 不断检查主从服务器是否正常运行
- 通知 : 一旦某个节点发生故障,会通知其他节点
- 自动故障转移 : 当主节点不能正常工作会自动进行故障转移,从其中一个从节点升级为主节点
-
配置提供者 : 客户端不是配置单个节点,而是
Sentinel
节点集合
主观下线和客观下线
一般来说,每个 Sentinel
节点会不断的 对其他 Sentinel
节点和 Redis
节点发送 PING
,通过是否回复来确认是否在线
-
主观下线 : 适用于所有主节点和从节点,如果在
down-after-milliseconds
毫秒内,Sentinel
没有收到目标节点的有效回复,则会判定该节点为主观下线。 -
客观下线 : 只使用于主节点,如果主节点发生故障,
Sentinel
节点会通过sentinel is-master-down-by-addr
命令,向其它Sentinel
节点询问对该节点的状态判断。如果超过<quorum>
个数的节点判定主节点不可达,则该Sentinel
节点会判断主节点为客观下线。
2. 工作原理
- 每个
Sentinel
以1次/s
频率,向其他Sentinel
节点、Redis
主从节点发送PING
指令。 - 如果一个实例,距离最后有效回复
PING
命令超过down-after-milliseconds
,这个实例被Sentinel
标记为 主观下线。 - 如果一个 主服务器 被标记为主观下线,那么正在监视这个主服务器的所有
Sentinel
节点,以1次/s
确认此主服务器是否进入主观下线状态 - 如果超过
<quorum>
个数的节点判定主节点不可达,则该Sentinel
节点会判断主节点为 客观下线。 - 当主服务器被标记为客观下线时,
Sentinel
向下线服务器的所欲服务器发送INFO
命令,会从10次/s
改为1次/s
。 -
Sentinel
节点之间协商主节点状态,如果主节点处于SDOWN
状态,则投票自动选出新的 主节点。将剩余的 从节点 指向 新的主节点 进行 数据复制。 - 当没有足够数量的
Sentinel
同意 主服务器 下线时, 主服务器 的 客观下线状态 就会被移除。当 主服务器 重新向Sentinel
的PING
命令返回 有效回复 时,主服务器 的 主观下线状态 就会被移除。
3. 消息丢失
Redis 采用主从复制的模式,一旦主节点挂掉,从节点正在同步的数据可能会丢失,延迟越大,丢失的越多。
Redis 提供了两个配置项来限制主库的请求处理,分别是 min-slaves-to-write
和 min-slaves-max-lag
。
- min-slaves-to-write:这个配置项设置了主库能进行数据同步的最少从库数量;
- min-slaves-max-lag:这个配置项设置了主从库间进行数据复制时,从库给主库发送 ACK 消息的最大延迟(以秒为单位)。
这两个配置项组合后的要求是,主库连接的从库中至少有 N 个从库,和主库进行数据复制时的 ACK 消息延迟不能超过 T 秒,否则,主库就不会再接收客户端的请求了。
所以,Sentine 无法保证消息完全不丢失,但是也能尽量保证消息少丢失。
小结
Sentinel
解决了高可用,没有解决主节点单节点扩容的问题。
更多编程相关知识,请访问:编程入门!!
以上是一文了解Redis中的哨兵模式的详细内容。更多信息请关注PHP中文网其他相关文章!

REDISACTSASBOTHADATASTOREANDASERVICE.1)ASADATASTORE,ITUSESIN-MEMORYSTOOGATOFORFOFFASTESITION,支持VariousDatharptructuresLikeKey-valuepairsandsortedsetsetsetsetsetsetsets.2)asaservice,ItprovidespunctionslikeItionitionslikepunikeLikePublikePublikePlikePlikePlikeAndluikeAndluAascriptingiationsmpleplepleclexplectiations

Redis与其他数据库相比,具有以下独特优势:1)速度极快,读写操作通常在微秒级别;2)支持丰富的数据结构和操作;3)灵活的使用场景,如缓存、计数器和发布订阅。选择Redis还是其他数据库需根据具体需求和场景,Redis在高性能、低延迟应用中表现出色。

Redis在数据存储和管理中扮演着关键角色,通过其多种数据结构和持久化机制成为现代应用的核心。1)Redis支持字符串、列表、集合、有序集合和哈希表等数据结构,适用于缓存和复杂业务逻辑。2)通过RDB和AOF两种持久化方式,Redis确保数据的可靠存储和快速恢复。

Redis是一种NoSQL数据库,适用于大规模数据的高效存储和访问。1.Redis是开源的内存数据结构存储系统,支持多种数据结构。2.它提供极快的读写速度,适合缓存、会话管理等。3.Redis支持持久化,通过RDB和AOF方式确保数据安全。4.使用示例包括基本的键值对操作和高级的集合去重功能。5.常见错误包括连接问题、数据类型不匹配和内存溢出,需注意调试。6.性能优化建议包括选择合适的数据结构和设置内存淘汰策略。

Redis在现实世界中的应用包括:1.作为缓存系统加速数据库查询,2.存储Web应用的会话数据,3.实现实时排行榜,4.作为消息队列简化消息传递。Redis的多功能性和高性能使其在这些场景中大放异彩。

Redis脱颖而出是因为其高速、多功能性和丰富的数据结构。1)Redis支持字符串、列表、集合、散列和有序集合等数据结构。2)它通过内存存储数据,支持RDB和AOF持久化。3)从Redis6.0开始引入多线程处理I/O操作,提升了高并发场景下的性能。

RedisisclassifiedasaNoSQLdatabasebecauseitusesakey-valuedatamodelinsteadofthetraditionalrelationaldatabasemodel.Itoffersspeedandflexibility,makingitidealforreal-timeapplicationsandcaching,butitmaynotbesuitableforscenariosrequiringstrictdataintegrityo

Redis通过缓存数据、实现分布式锁和数据持久化来提升应用性能和可扩展性。1)缓存数据:使用Redis缓存频繁访问的数据,提高数据访问速度。2)分布式锁:利用Redis实现分布式锁,确保在分布式环境中操作的安全性。3)数据持久化:通过RDB和AOF机制保证数据安全性,防止数据丢失。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),