Redis Cluster数据分布原理

Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方案到达负载均衡的目的。之前,Redis分布式方案一般有两种:

  1. 客户端分区方案,有点事分区逻辑可控,确定是需要自己处理数据路由、高可用、故障转移等问题
  2. 代理方案,有点事简化客户端分布式逻辑和升级维护便利,确定是家中架构部署复杂度和性能损耗

接下来我们介绍下Redis Cluster的数据分布。

  • 数据分布

分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。

211935_CG8c_2313177.png

虚拟槽分区:巧妙的使用了哈希空间,使用分散度良好的哈希函数把所有数据映射到一个固定范围的整数集合中,整数定义为槽。这个范围一般远远大于节点数,比如Redis Cluster槽范围是0~16363.槽是集群内数据管理和迁移的基本单位。采用大范围槽的主要目的是为了方便数据拆分和集群扩展。每个节点会负责一定数量的槽。如下图所示:

212805_SvQV_2313177.png

Redis Cluster采用虚拟槽分区:所有的键根据哈希函数映射到0~16383整数槽内,计算公式slot=CRC16 & 16383.每一个节点负责维护一部分槽以及槽所映射的键值数据,如下图:

213211_RZ8a_2313177.png

Redis虚拟槽分区的特点:

  1. 解耦数据和节点之间的关系,简化了几点扩容和收缩的难度
  2. 节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据。
  3. 支持节点、槽、键之间的映射查询,用于数据路由、在线伸缩等场景

转载于:https://my.oschina.net/u/2313177/blog/1608239

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值