Redis集群方案-主从同步、哨兵模式、分片集群

一.主从复制

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。
在这里插入图片描述
主从数据同步原理
Replication ld: 简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的replid
offset:偏移量,随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset,如果slave的offset小于master的offset,说明slave数据落后于master,需要更新。

总从全量同步:
在这里插入图片描述
总从增量同步
在这里插入图片描述

二.哨兵模式

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

监控: Sentinel会不断检查您的master和slave是否按预期工作
自动故障恢复: 如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主
通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端
在这里插入图片描述
服务状态监控
Sentinel: 基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令:
主观下线: 如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。
客观下线: 若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线。quorum值最好超过Sentinel实例数量的一半。

哨兵选主规则
首先判断主与从节点断开时间长短,如超过指定值就排除该从节点。
然后判断从节点的slave-priority值,越小优先级越高
如果slave-prority一样,则判断slave节点的offset值,越大优先级越高。
最后是判断slave节点的运行id大小,越小优先级越高。
在这里插入图片描述
redis集群(哨兵模式)脑裂
在这里插入图片描述
解决方案:
redis中有两个配置参数︰
min-replicas-to-write 1 表示最少的salve节点为1个
min-replicas-max-lag 5 表示数据复制和同步的延迟不能超过5秒

三.分片集群结构

主从和哨兵可以解决高可用、高并发读的问题。
但是依然有两个问题没有解决:海量数据存储问题、高并发写的问题。

使用分片集群可以解决上述问题,分片集群特征:·
集群中有多个master,每个master保存不同数据。
每个master都可以有多个slave节点。
master之间通过ping监测彼此健康状态。
客户端请求可以访问集群任意节点,最终都会被转发到正确节点。
在这里插入图片描述
分片集群结构-数据读写
Redis分片集群引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值