redis哨兵模式

    大家好,我是程序媛雪儿。上上期咱们聊的是redis主从复制,那么这期咱们聊redis哨兵模式,在聊之前,咱们要先明确一下我们为什么要用redis主从复制,redis哨兵模式,这两个技术点是为了解决什么问题的。

    redis主从复制,是指一个主节点有多个相同的从节点,可以解决高并发读的问题。

    redis哨兵模式,是指redis的哨兵会持续关注主从节点的健康状态,主节点宕机,哨兵会根据一定的规则选取某个从节点作为主节点继续工作,为了保障系统高可用需求。

    那么接下来我们具体聊聊redis的哨兵模式。

一、哨兵机制

    哨兵(Sentinel)机制主要是实现主从集群故障恢复的

    哨兵结构作用如下:

监控(Sentinel):检查master和slave是否按期工作

自动故障恢复:如果master故障了,哨兵会选一个slave提升为master,当故障实例恢复,master还是那个提升的slave不变

通知:如果集群里有redis故障了,会把最新消息(比如谁现在是master)推送给redis的客户端

二、服务状态监控(哪个故障了)

哨兵会每隔1s向集群的每个实例发送ping命令

主观下线:某个哨兵发现某个实例在规定时间未响应

客观下线:超过指定数量(最好是过半数)的哨兵(quorum)都认为该实例主观下线

三、哨兵选主规则

1、主从节点断开时间长短,超过一定时间的不考虑

2、判断slave-priority,优先级(可设置)

3、判断slave的offset值,越大优先级越高

四、哨兵模式脑裂问题

问题如下:

因为网络原因,哨兵联系不到master,以为master挂了,另立新master,但是原来的master和客户端数据沟通的好好的,写入了很多数据,等到网络恢复,哨兵强制把原来的master变为slave,数据同步后导致原master断网后写入的一部分数据丢失。

解决方案1:

配置redis的两个参数

min-replicas-to-write 1 表示最少的slave节点为1个

min-replicas-max-lag 5 表示数据复制和同步的延迟不能超过5s,这样处理,最多会丢失5s的数据

只要主从同步时间超过5s,直接拒绝客户端修改数据

redis使用建议

一般来说1主1从+哨兵就够用了,单节点不超过10g,如果redis内存不足,可以采用微服务的方式,给不同的服务分配独立的redis主从节点

         欢迎大家关注我的微信公众号,程序媛雪儿,雪儿会定期在上面发布编程的知识碎片,也有雪儿博客地址,上面有详细系统的笔记,雪儿是全栈,但是公众号目前主要还是发后端的技术,以后可能也会涉及到一些前端的知识,我们下期见,拜拜~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值