redis cluster

一、redis cluster数据切片
1、最老土的哈希:
在这里插入图片描述
2、一致性哈希:
此哈希算法存在同一个master内可能有太多的数据,可以用虚拟节点解决。
在这里插入图片描述
3、哈希slot算法:
此算法也是为了解决同一个master内有大量的数据。
在这里插入图片描述
二、节点之间的通信机制
1、基础通信原理
(1)redis cluster节点间采取gossip协议进行通信,与集中式不同,不是把所有的元数据(节点信息、故障等等)信息都集中放在某个节点上,而是互相间不断通信,保证每个节点间的元数据信息都是完整的。
(2)每个节点都有一个专门用于通信的端口,一般是自己提供服务的端口号加10000,每隔一段时间都会往另外的节点发送ping消息,同时其他几个接收到ping后返回pong。
(3)交互的信息有故障信息、节点的增加和删除、hash slot信息等。
2、gossip协议
gossip协议包括以下4种信息:
(1)meet,每个节点发送meet给新加入的节点,通知那个节点去加入我们集群。
(2)ping
(3)pong
(4)fail,某个节点判断另一个节点fail之后,就发送fail给其他节点,通知其他节点指定的节点宕机了。
三、高可用性与主备切换
1、判断节点宕机
(1)如果一个节点认为另一个节点宕机,那么就是pfail,主观宕机
(2)如果多个节点都认为有一个节点宕机,那就是fail,客观宕机
(3)在cluster-node-timeout时间内,如果没有收到pong,那么就是pfail,如果一个节点发现另一个节点宕机了(pfail)了,那么会发送gossip ping信息告诉其他节点,如果收到半数的都是pfail,那么这个节点的状态就更新成fail。
2、从节点过滤
master节点宕机后,从slave中选择一个晋升为master,检测每个slave节点也超时,则过滤掉,这是一个超时过滤规则。
3、从节点选举
每个slave,都有一个复制master节点数据的偏移量offset,offset越大选举时间越靠前,优先进行选举。然后所有的slave再进行投票,多数派的竞选为新的master节点。
4、校验集群是否可用
以下两种情况集群是不可用的:
(1)如果集群任意 master 挂掉,且当前 master 没有 slave。此时集群进入 fail 状态,也可以理解成集群的 slot 映射[0-16383]不完整时进入 fail 状态。
(2)如果集群超过半数以上 master 挂掉,无论是否有 slave,集群进入 fail 状态. redis cluster节点分配

每个master都存一部分的哈希槽数据,当客户端链接的master没有需要查的数据时,此master会返回一个moved消息给客户端,告诉客户端查询的数据在哪个master节点上
5、新增删除节点
当新增或者删除节点时,redis cluster会自动再均衡,比如当有新节点接入,节点会发送一个meet消息,当前的所有mastrer会剥离一部分哈希槽出来分给新的节点。当有一个节点要移除时,同理这个被移除的节点会把自己的哈希槽均分给剩余的节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值