本篇文章带大家了解一下Redis中的哨兵模式,希望对大家有所帮助!
Redis 主从模式,一旦主节点发生故障,可以将从节点 升为 主节点,同时还要通知客户端更新主节点地址,这样一般是不可行的。所以,Redis 提供了 Redis Sentinel
哨兵机制 来解决这个问题。【相关推荐:Redis视频教程】
psync
。此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时,可能会造成毫秒或秒级的 卡顿
Sentinel
节点集合一般来说,每个 Sentinel
节点会不断的 对其他 Sentinel
节点和 Redis
节点发送 PING
,通过是否回复来确认是否在线
down-after-milliseconds
毫秒内,Sentinel
没有收到目标节点的有效回复,则会判定该节点为主观下线。Sentinel
节点会通过 sentinel is-master-down-by-addr
命令,向其它 Sentinel
节点询问对该节点的状态判断。如果超过 <quorum>
个数的节点判定主节点不可达,则该 Sentinel
节点会判断主节点为客观下线。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
命令返回 有效回复 时,主服务器 的 主观下线状态 就会被移除。Redis 采用主从复制的模式,一旦主节点挂掉,从节点正在同步的数据可能会丢失,延迟越大,丢失的越多。
Redis 提供了两个配置项来限制主库的请求处理,分别是 min-slaves-to-write
和 min-slaves-max-lag
。
这两个配置项组合后的要求是,主库连接的从库中至少有 N 个从库,和主库进行数据复制时的 ACK 消息延迟不能超过 T 秒,否则,主库就不会再接收客户端的请求了。
所以,Sentine 无法保证消息完全不丢失,但是也能尽量保证消息少丢失。
Sentinel
解决了高可用,没有解决主节点单节点扩容的问题。
更多编程相关知识,请访问:编程入门!!
以上是一文了解Redis中的哨兵模式的详细内容。更多信息请关注PHP中文网其他相关文章!