越来越多的企业选择使用redis来管理缓存,而在高并发时,单台机器的读取很明显有些弱,这个时候就需要增添机器。本篇主要讲述redis的集群。
redis集群
在redis集群中,每一个节点都存有整个集群中所有的主节点和从节点信息。
判断节点挂掉
在集群中,如果半数以上的节点去ping一个节点不通,集群就认为它挂掉了。
投票机制
在集群中,如果主节点A和他的所有从节点都挂掉了,那么集群会进入fail状态。如果半数以上的主节点挂掉了,集群也会进入到fail状态。
ps : fail状态就是集群挂掉了。。
redis集群挂掉的情况:
1)任意master挂掉,且该master所有子节点也挂掉;
2)半数master挂掉。
redis的集群方案
对于redis的集群方案,现阶段认可的是多主多从
方案。
原因:1)多主节点可以防止部分节点坏掉;
2)如果有某个主节点坏掉了,其从节点会顶替上去;
3)主写从读,单一功能,效率提高。
redis同步
在redis的同步中,主节点同步给其中所有的从节点。
主从同步
runID:每一个redis节点都有一个runID,类似于身份标识。
offset:复制偏移量。在master和slave中都会有这个量。master传输出去N个字节,master的offset增加N;slave收到N个字节,slave的offset增加N。
复制积压缓冲区:维护在master中一个FIFO(先进先出)队列。在master每次向外传输时,也会向该队列中传输。该队列中会有对应的偏移量和其对应的字节记录。
slave有无master的runid(身份ID):无,即第一次;有,则不是第一次。
如果是第一次请求,slave全量复制master,并获取runid。
如果不是第一次请求,比较runid,相同再比较复制偏移量,若偏移量相同,继续传输;
若偏移量不同,从复制积压缓冲区里去取对应的复制偏移量之后的数据,有就从复制积压缓冲区里传输复制,没有就完整复制。
runid不一样,视为第一次请求。
参考:redis集群设计原理。
主从同步原理。
网友评论