Redis Cluster数据分布原理
2018-01-17 10:35
344 查看
原文链接:https://my.oschina.net/u/2313177/blog/1608239
Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方案到达负载均衡的目的。之前,Redis分布式方案一般有两种:
- 客户端分区方案,有点事分区逻辑可控,确定是需要自己处理数据路由、高可用、故障转移等问题
- 代理方案,有点事简化客户端分布式逻辑和升级维护便利,确定是家中架构部署复杂度和性能损耗
接下来我们介绍下Redis Cluster的数据分布。
- 数据分布
分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。
虚拟槽分区:巧妙的使用了哈希空间,使用分散度良好的哈希函数把所有数据映射到一个固定范围的整数集合中,整数定义为槽。这个范围一般远远大于节点数,比如Redis Cluster槽范围是0~16363.槽是集群内数据管理和迁移的基本单位。采用大范围槽的主要目的是为了方便数据拆分和集群扩展。每个节点会负责一定数量的槽。如下图所示:
Redis Cluster采用虚拟槽分区:所有的键根据哈希函数映射到0~16383整数槽内,计算公式slot=CRC16 & 16383.每一个节点负责维护一部分槽以及槽所映射的键值数据,如下图:
Redis虚拟槽分区的特点:
- 解耦数据和节点之间的关系,简化了几点扩容和收缩的难度
- 节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据。
- 支持节点、槽、键之间的映射查询,用于数据路由、在线伸缩等场景
转载于:https://my.oschina.net/u/2313177/blog/1608239
相关文章推荐
- Redis Cluster实现原理
- redis系列09--redis-Cluster原理
- redis sentinel & cluster 原理分析
- 在线实时大数据平台Storm集成redis开发(分布锁)
- 【09-Redis-分区:怎样将数据分布到多个redis实例】
- 超融合集群数据分布原理
- 全面剖析Redis Cluster原理和应用
- Redis-cluster集群【第一篇】:redis安装及redis数据类型
- Redis学习笔记(十五)Redis数据类型底层编码和实现原理
- 关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布
- redis原理-数据结构
- redis使用教程原理命令篇-第四章:数据类型之list类型
- redis使用教程原理-第五章:数据类型之集合无序不重复
- redis集群(Redis Cluster)原理和应用
- 全面剖析Redis Cluster原理和应用
- Redis Cluster 原理
- 高级开发不得不懂的Redis Cluster数据分片机制
- Elasticsearch之重要核心概念(cluster(集群)、shards(分配)、replicas(索引副本)、recovery(据恢复或叫数据重新分布)、gateway(es索引的持久化存储方式)、discovery.zen(es的自动发现节点机制机制)、Transport(内部节点或集群与客户端的交互方式)、settings(修改索引库默认配置)和mappings)
- 初学乍练redis:Redis 5.0.3单实例数据迁移到Cluster
- redis使用教程原理-第二章:数据类型之字符串