
依靠哨兵可以实现Redis的高可用,如果还想在支容纳海量的数据,那就需要Redis集群
- 无中心架构(不存在哪个节点影响性能瓶颈)
- 数据按照哈希槽(hash slot)分布存储在多个节点, 一个Redis集群包含16384个哈希槽
- 集群中的每个节点负责维护一部分哈希槽。 比如一个集群可以有三个节点:
- 节点 A 负责处理 0 号至 5500 号哈希槽
- 节点 B 负责处理 5501 号至 11000 号哈希槽
- 节点 C 负责处理 11001 号至 16384 号哈希槽
- 如果节点A向节点B发送ping消息,节点B没有在规定的时间内响应,那么节点A会标记节点B为疑似下线状态,同时把B的状态通过消息的方式发送给其他节点,如果超过半数以上的节点都标记B为疑似下线状态,B就会被标踢出集群,然后将会发生故障转移,优先从复制数据较多的从节点选择一个成为主节点,整个过程和哨兵非常类似,都是基于Raft协议做选举。
