对初学者十分友好的redis集群详解

主从复制

主从链(拓扑结构、主负责写,从负责读)

画了两张图来帮助理解

 

 

复制模式

  • 全量复制:Master 全部同步到 Slave

  • 部分复制:(只复制增量 主服务器有8个数据,从服务器有3个数据,只把那5个复制过来)Slave 数据丢失进行备份

问题点

  • 同步故障

    • 复制数据延迟(不一致)

    • 读取过期数据(Slave 不能删除数据)

    • 从节点故障

    • 主节点故障

  • 配置不一致

    • maxmemory 不一致:丢失数据

    • 优化参数不一致:内存不一致.

  • 避免全量复制

    • 选择小主节点(分片)、低峰期间操作.

    • 如果节点运行 id 不匹配(如主节点重启、运行 id 发送变化),此时要执行全量复制,应该配合哨兵和集群解决.

    • 主从复制挤压缓冲区不足产生的问题(网络中断,部分复制无法满足),可增大复制缓冲区( rel_backlog_size 参数).

  • 复制风暴

哨兵机制

拓扑图(来自网络)

一主二从三哨兵 每一个哨兵都监控着除了自己以外的所有节点

节点下线

  • 主观下线

    • 即 Sentinel 节点对 Redis 节点失败的偏见,超出超时时间认为 Master 已经宕机。

    • Sentinel 集群的每一个 Sentinel 节点会定时对 Redis 集群的所有节点发心跳包检测节点是否正常。如果一个节点在 down-after-milliseconds 时间内没有回复 Sentinel 节点的心跳包,则该 Redis 节点被该 Sentinel 节点主观下线。

举个例子:一个烧饼监控着主节点,但是他们之间的网络可能不太好,所以发生了超时,所以这个哨兵就认为这个主节点下线了;第二点很容易理解了,可以理解为redis的ping-pong,你没回应,我就认为你下线了。

  • 客观下线

    • 所有 Sentinel 节点对 Redis 节点失败要达成共识,即超过 quorum(这是个参数,可以理解为超过总数的一半?) 个统一。

    • 当节点被一个 Sentinel 节点记为主观下线时,并不意味着该节点肯定故障了,还需要 Sentinel 集群的其他 Sentinel 节点共同判断为主观下线才行。

    • 该 Sentinel 节点会询问其它 Sentinel 节点,如果 Sentinel 集群中超过 quorum 数量的 Sentinel 节点认为该 Redis 节点主观下线,则该 Redis 客观下线。

主观下线是一个哨兵节点认为你下线了,客观下线是所有节点都认为你下线了!!!之所以这样做是为了放在网络波动导致节点下线问题

Leader选举(这个leader哨兵的作用只是用来选出新的Redis Master,选出来以后就恢复平齐地位,原来的master节点恢复正常以后成为新的master的slava)

  • 选举出一个 Sentinel 作为 Leader:集群中至少有三个 Sentinel 节点,但只有其中一个节点可完成故障转移.通过以下命令可以进行失败判定或领导者选举。

  • 选举流程

    1. 每个主观下线的 Sentinel 节点向其他 Sentinel 节点发送命令,要求设置它为领导者.

    2. 收到命令的 Sentinel 节点如果没有同意通过其他 Sentinel 节点发送的命令,则同意该请求,否则拒绝。(只同意第一个)

    3. 如果该 Sentinel 节点发现自己的票数已经超过 Sentinel 集合半数且超过 quorum(一个参数),则它成为领导者。

    4. 如果此过程有多个 Sentinel 节点成为领导者,则等待一段时间再重新进行选举。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值