当前位置:   article > 正文

31、Redis 7系列:集群(cluster)_redis7.0 cluster

redis7.0 cluster

一、官网

官网地址: Redis cluster specification | Redis
在这里插入图片描述

二、介绍

由于数据量过大,单个 Master 复制集难以承担,因此需要对 多个复制集 进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是 Redis 的集群,其作用是提供在多个 Redis 节点间共享数据的程序集。
在这里插入图片描述

三、作用

1、Redis集群的特点

  • Redis 集群支持多个 Master ,每个 Master 下可以挂在多个 Slave
  • Cluster 自带 Sentinel 的故障转移机制,内置了高可用,无需单独使用哨兵的功能。
  • 客户端与 Redis 节点的连接,不需要连接集群中的所有节点,只需要连接集群中任意可用节点即可。
  • 槽位slot 负责分配各个物理服务节点。由对应的集群来负责维护 节点插槽数据 之间的关系。

2、集群算法-分片-槽位slot

(1)槽位slot

**`Redis集群`** 没有采用一致性 **`hash`**,而是采用了 **哈希槽** 的的概念。
**`Redis集群`** 一共有 **16384** 个哈希槽,每个 **`key`** 通过 **`CRC16`** 算法后,对 **16384** 取模来决定放置哪个槽。集群中每个 **主节点** 负责一部分哈希槽。
  • 1
  • 2

举例: 当前集群由3个主节点
在这里插入图片描述

(2)分片

定义: 使用 Redis集群 时我们会将存储的数据分散到多台 Redis 机器(Master)上,这称为 分片 。简言之,集群中的每个 Redis 实例(Master)都被认为是整个数据的一个分片。

为了找到指定 key 的分片,我们对 key 进行 CRC16(key) 算法处理并通过对总分片数量(16383)取模。然后,使用确定性哈希函数,这意味着指定的 key 将多次始终映射到同一个 分片 ,我们可以推断将来读取特定 key 的位置。

(3)槽位和分片的优点

方便增加和删除 Redis 主节点。
例如: 增加D主节点,需要将A、B、C中部分槽位分给D。
例如: 删除A主节点,将A的所有槽位分给B、C。然后将没有任何槽位的A节点在集群中删除即可。

由于从一个主节点将哈希槽移动到另一个主节点,并不会停止服务。所以,无论增加删除或者改变某个主节点的哈希槽的数量并不会对集群造成不可用状态。

(4)槽位映射-3种方案

  • 哈希取模分区
    在这里插入图片描述
    用户每次读写操作都是根据公式:hash(key) % n 个机器台数,计算出哈希值,用来决定数据映射到哪一个节点上。

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/783935
推荐阅读
相关标签