前言

最近在复盘redis的知识,所以本文开始希望介绍下redis的集群架构、原理以及部署;本文主要介绍redis的主从复制集群,包括其架构模型,原理,高可用等;

一、主从集群的介绍

  redis的主从复制集群为了提高效率降低客户端等待时长,主从间的数据同步采用的是弱一致性的策略,即客户端请求发到主机后,不论是否同步到备机,都认为此次请求是成功的,这样虽然效率上提高了,但是数据一致性却得不到保障;所以redis提供了一个min-replicas-to-write参数用来配置,至少有几台从机与主机保持连接时主机才能执行写入操作,一定程度上维护了数据的一致性; 其次,使用redis主从复制集群主要是为了解决单点故障问题,从机相当于主机的备份,且只提供读不提供写入功能,为的是在主机故障导致不能对外提供服务时从机能快速接替从而实现集群的高可用;而集群间主从的切换显然不能通过人工来完成,所以redis提供了一个哨兵的概念,顾名思义,哨兵即负责监控放哨,当主机不可用时迅速从从机中选出一个主机来,而这又涉及到以下两个方面;

  • 1、如何判断redis集群的master不可用 判断master不可用使用的是过半机制,即当哨兵集群中某一个哨兵发现master不可用时,会向集群其他哨兵发送is-master-down-by-addr指令询问master是否真的挂了,集群其他哨兵收到指令后会根据自身与master的连接情况判断是否真的挂了,然后给第一个哨兵作出响应,是否赞成master挂了;当超过集群数量一半加1的机器认为master挂了那么就投票通过,即认为redis集群的master真的挂了,需要进行选主操