Redis解析之集群(一)

Redis-Cluster 架构:
这里写图片描述

1)所有 Redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽。

2)集群节点之间定期交换节点信息并且更新,从发送节点的角度看,这些信息包括:集群内有哪些节点,节点IP、PORT、名字、状态(比如OK,PFAIL,FAIL)、角色(master 或者 slave)等。

3)节点定期给其他所有的节点发送Ping,cluster-node-timeout(可配置,毫秒级)时间内没有收到对方的回复,则单方面认为对端节点宕机,将该节点标为PFAIL状态。通过节点之间交换信息,收集到通过超过半数的节点都认为这个节点为PFAIL,则将该节点标记为FAIL,并且将其发送给其他所有节点,其他所有节点收到后立即认为该节点宕机。

4)客户端与 Redis节点直连,不需要中间proxy层;客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

5)Redis-Cluster 内置数据自动分片机制,集群内部将所有的key映射到 [0-16383] 2^14个Slot中,集群中的每个节点负责其中的一部分的Slot的读写。

6)客户端可向任一个集群节点发送命令,当节点收到自己不负责的 Slot 的请求时,会将负责请求 Key 所在Slot 的节点地址返回给客户端,客户端收到后自动将原请求重新发往这个地址。Key 与 Slot 的对应关系由CRC16(key) % 16384 决定。

7)一个 Master 可对应0个或多个 Slave,若没有 Slave,则意味着 Master 宕机后其负责的Slot读写服务不可用;否则,主宕机时某个 Slave 会被提升为 Master,具体哪个从被提升为主,协议类似于Raft。

8)整个集群不可用(cluster_state:fail),需满足以下条件之一:集群任意 Master 挂掉,且该 Master 没有 Slave;超过半数以上 Master 挂掉(无论是否有 Slave)。
当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值