redis集群方案-主从复制,哨兵模式,分片集群

一、主从复制

单节点redis并发能力存在上线,想要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离,但无法保证高可用,当master宕机之后则面临瘫痪,高可用方案详见下文哨兵模式
在这里插入图片描述

1.redis主从数据同步流程

1.1 全量同步

执行replicaof命令建立与master连接。
从节点会向主节点发送同步数据的请求。
主节点判断是否第一次同步,如果时第一次,向slave返回master的数据版本信息。不是第一次则增量,详见下文增量同步。
slave保存master的版本信息。
主节点执行bgsave,生成rdb文件并发送给slave。
slave清空本地的所有数据,加载rdb文件。
master记录在生成rdb期间的所有命令完成后发送给slave。
slave接收到执行的命令。
在这里插入图片描述

1.2 增量同步

在这里插入图片描述

二、哨兵模式

1.哨兵作用

redis他提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。作用如下。

1.1 监控:Sentinel会不断检查master和slave是否按照预期工作。

  • 服务状态监控
    sentinel基于心跳机制监测服务状态,每隔一秒向集群的每个实例发送ping命令。
    • 主观性下线:如果某sentinel节点发现某实例未在规定时间相应,则认为主观下线。
    • 客观下线:若超过指定数量(quorum)的sentinel都认为该实例主管下线,则认为实例客观下线。quorum值最好超过sentinel实例数量的一半。

1.2 自动故障恢复:如果master故障,Sentinel会讲一个slave提升为master。当故障回复后也以新的master为主。

1.3 通知:Sentinel充当Redis客户端的服务发现来源,当局群发生故障转移时,会将最新的信息推送给redis客户端。

2.哨兵选举规则

  • 首先判断与从节点断开时间长短,如果超过指定值就排除该节点。
  • 然后判断从节点的slave-priority值,越小优先级越高。可以通过配置文件配置。
  • 如果每个优先级都一样就判断slave的offset值,越大优先级越高。
  • 最后判断slaveid的大小,越小优先级越高。

3.redis集群(哨兵)脑裂

sentinel因为网络原因与主节点断联,此时选举了新的master,而客户端与老master依旧可以连接而且进行写入操作,与当前选举出来的新master出现了数据不一致。此时sentinel强制把老master降级为slave。在后面进行同步时,此slave清空了自己的数据。导致sentinel与此节点断联期间的数据丢失。此为集群脑裂问题。解决方案如下。
在这里插入图片描述

三、分片集群

今天太晚了 待更新

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值