简介

        本文介绍Redis集群(Cluster)的伸缩的流程。

伸缩原理

        Redis集群提供了灵活的节点扩容和收缩方案。 在不影响集群对外服务的情况下, 可以为集群添加节点进行扩容也可以下线部分节点进行缩容, 如下图所示:

Redis集群--Cluster--集群伸缩--过程/原理_redis

        从上图看出, Redis集群可以实现对节点的灵活上下线控制。 其中原理可抽象为槽和对应数据在不同节点之间灵活移动。 首先来看我们之前搭建的集群槽和数据与节点的对应关系, 如下图所示:

Redis集群--Cluster--集群伸缩--过程/原理_数据_02

        三个主节点分别维护自己负责的槽和对应的数据, 如果希望加入1个节点实现集群扩容时, 需要通过相关命令把一部分槽和数据迁移给新节点, 如下图所示:

Redis集群--Cluster--集群伸缩--过程/原理_集群_03

        图中每个节点把一部分槽和数据迁移到新的节点6385, 每个节点负责的槽和数据相比之前变少了从而达到了集群扩容的目的。 这里我们故意忽略了槽和数据在节点之间迁移的细节, 目的是想让读者重点关注在上层槽和节点分配上来, 理解集群的水平伸缩的上层原理: 集群伸缩=槽和数据在节点之间的移动, 下面将介绍集群扩容和收缩的细节。

扩容集群

见:《Redis开发与运维》=> 第10章 集群=> 10.4 集群伸缩=> 10.4.2 扩容集群

收缩集群

见:《Redis开发与运维》=> 第10章 集群=> 10.4 集群伸缩=> 10.4.3 收缩集群

其他网址

《Redis开发与运维》=> 第10章 集群=> 10.4 集群伸缩