redis 集群

我的梦境 提交于 2019-12-15 14:34:24

介绍

redis 主要是有三种集群模式:

  • 主从模式
  • 哨兵模式(Sentinel)
  • Cluster模式(常用的集群模式)

我们本次主要完成的是Cluster模式,也是现在比较常用的一种模式。而主从模式哨兵模式,制作一下简介介绍。

主从模式

在这里插入图片描述

一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
用户请求主节点进行增、删、改操作,而查询则放到其他从节点。 满足 多查少写 的网络应用状态。

存在问题:
主从模式中,只存在一个主节点,而如果主节点发生单机故障,对于其他的从节点则可以正常获取数据,但无法进行的修改、删除、增加数据。高可用性提高不大。

贴个连接: redis 主从复制模式

哨兵模式

贴个连接:redis 哨兵模式

Cluster模式

我们主要来说一下Cluster模式,此模式至少需要6个redis服务完成,从redis3.0版本以后才可以使用。

在这里插入图片描述

redis 槽设置

在redis集群中,采用虚拟槽设置,共计16384个槽,cluster 负责维护,并平均分配到各个Master节点上面。当新增一个数据时,采用CRC16算法将数据分配到某个Master节点上。

槽示例

初始化Master

例如3个Master服务:

序号 槽范围
1 0~5460
2 5461~10921
3 10921~16384
添加一个Master服务

如果这时候再加一个Master服务,则会各取三个序号中前一部分拼接成一个新的Master服务槽范围。

序号 槽范围
1 1365~5460
2 6842~10921
3 12286~16384
4 0~1364 , 5461~6842 , 12286~16384‬
某个Master服务宕机

如果某个Master服务宕机了,会在他的从节点中挑选一个替代宕机的Master,槽节点不变

序号 槽范围
1 1365~5460
2 6842~10921
3 12286~16384
4(从) 0~1364 , 5461~6842 , 12286~16384‬

Cluster 容错

在cluster中,节点之间通过gossip协议进行通信。A节点会发送PING消息给B节点,若是在cluster_node_timeout时长内没有收到B节点的回复消息,则A节点会判定B节点已经下线(只是A节点)了。
这时候,A节点会发起投票,会向集群广播B节点下线的消息。如果集群中的超过半数以上(所以Master最少为3台)的节点都认为B节点下线后,B节点就会真正的下线。然后会从B的从节点中挑选一个出来替代下线的B节点。
当B节点没有从节点的可以替代他时,集群就进入fail状态(槽点不完整)。
当半数以上的Master下线,不管有没有从节点代替,集群也会进入fail状态

感谢

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!