前言
对上《一篇一分钟了解消息送达及幂等操作》中消息前置持久化用到redis这个点可能存在丢消息的补充
一、概述
redis集群其实是多个主从节点组成的集群,某个节点可以是一主一从或者一主多从
二、集群节点存活判断
每个节点都有集群所有主从节点的信息,他们之间通过ping来判断是否可用,如果一半以上节点都连不上,集群就认为这个节点不可用
三、集群挂掉判定
3.1 某个主节点和从节点都挂掉,集群就挂掉
3.2 某个主节点挂掉没有slave或者slave没有切换到master,集群挂掉
3.3 半数以上master挂掉,集群挂掉
四、高可用
集群中的每个节点都有1至n个从节点,其中一个为主节点,其余的为从节点。如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,这样集群就不会因为一个主节点的下线而无法正常工作。
五、一致性hash算法与hash槽
redis cluster没有使用一致性hash算法,so “三、集群挂掉判定”这个成立。 用的是hash槽分配,这个也是核心,如下图redisCluster官方文档说明
本人实战过程中遇到的问题
宿主机宕机,当时一主一从,主的宿主机挂了,手动切slave为主,并且快速搭建了新的从,slave of挂上,数据恢复10s内,当时内存在2~3g,整体性能还是非常可靠的
后面看排期会深入介绍Redis各细节的点,刷到的对redis有疑问的可以私信