redis 架构

 

*******************************************

单机:单机环境常用于测试,实际应使用主从哨兵,或者集群

 

 

*******************************************

主从哨兵

 

        redis 架构

master:可读可写,负责写入数据,并将数据发送给slave

slave:只可读,同步master的数据

sentinel:监控redis节点与其余sentinel节点,当master节点发生故障时,负责故障转移,将slave节点切换为mster节点

 

主从同步过程:

slave节点发送同步请求,

master节点接受同步请求,将数据生成快照文件,并将写入命令存入缓冲区,

发送快照给slave,slave接收快照数据,并开始写入

slave写入完成后,发送缓冲区命令给slave,slave接受缓冲命令并写入

slave写入完成后,之后master每写入命令,都将对应命令发送给slave,主从同步完成

 

故障转移:

当一个sentinel监控到master故障,则master节点主观下线;

当有足够数量的sentinel认为master节点不可用时,则master客观下线,触发故障转移;

sentinel选出一个主sentinel负责故障转移;

主sentinel优先选取复制偏移量最大的slave节点,如果有多个slave节点,则在选取run id最小的节点作为主节点,

将其余slave的主节点切换为新的主节点;

若原先的主节点恢复重启,则降级为slave节点,主节点为新的master节点

 

**************************************

redis cluster

 

                        redis 架构

实现原理:redis cluster共有16384(0-16383)个hash槽,每个主节点维护一部分hash槽,主节点下可以有一到多个从节点,当对应的主节点故障后,可以切换为主节点,实现整个集群的高可用,同时redis cluster支持动态增减主节点,当增加主节点时,需要将其它主借点的hash槽移一部分交给新增加的主节点,删除主节点时,需要将主节点的hash槽移出给其余主节点后,才能够删除

 

主节点故障转移:

当集群中的一个节点认为另一个节点不可用时,则为主观下线

当有足够数量的节点认为该节点不可用时,则为客观下线,若该节点为主节点,则触发主节点故障转移

持有hash槽的主节点负责投票给从节点,从节点获得超过半票后,从节点升级为主节点,其余从节点切换主节点为新的主节点

 

相关文章:

  • 2021-09-13
  • 2021-12-05
  • 2022-01-17
  • 2021-10-18
  • 2021-05-05
  • 2021-12-20
  • 2021-12-08
猜你喜欢
  • 2021-10-09
  • 2022-02-09
  • 2021-07-14
  • 2022-12-23
  • 2022-02-09
  • 2021-07-14
  • 2021-11-28
相关资源
相似解决方案