Redis集群设计包括2部分:哈希Slot和节点主从,本篇博文通过3张图来搞明白Redis的集群设计。

节点主从:

主从设计不算什么新鲜玩意,在数据库中我们也经常用主从来做读写分离,直接上图:

图上能看得到的信息:

1, 只有1个Master,可以有N个slaver,而且Slaver也可以有自己的Slaver,由于这种主从的关系决定他们是在配置阶段就要指定他们的上下级关系,而不是Zookeeper那种平行关系是自主推优出来的。

2, 读写分离,Master只负责写和同步数据给Slaver,Slaver承担了被读的任务,所以Slaver的扩容只能提高读效率不能提高写效率。

3, Slaver先将Master那边获取到的信息压入磁盘,再load进内存,client端是从内存中读取信息的,所以Redis是内存数据库。

当一个新的Slaver加入到这个集群时,会主动找Master来拜码头,Master发现新的小弟后将全量数据发送给新的Slaver,数据量越大性能消耗也就越大,所以尽量避免在运行时做Slaver的扩容。

简单总结下主从模式的设计:

优点:读写分离,通过增加Slaver可以提高并发读的能力。

缺点:Master写能力是瓶颈。

虽然理论上对Slaver没有限制但是维护Slaver开销总将会变成瓶颈。

Master的Disk大小也将会成为整个Redis集群存储容量的瓶颈。

哈希Slot:

这个艺名看起来很文艺,但也不是什么新技术,他的真名就叫分表分库,再上一个图:

图上能看到的信息:

1, 对象保存到Redis之前先经过CRC16哈希到一个指定的Node上,例如Object4最终Hash到了Node1上。

2, 每个Node被平均分配了一个Slot段,对应着0-16384,Slot不能重复也不能缺失,否则会导致对象重复存储或无法存储。

3, Node之间也互相监听,一旦有Node退出或者加入,会按照Slot为单位做数据的迁移。例如Node1如果掉线了,0-5640这些Slot将会平均分摊到Node2和Node3上,由于Node2和Node3本身维护的Slot还会在自己身上不会被重新分配,所以迁移过程中不会影响到5641-16384Slot段的使用。

简单总结下哈希Slot的优缺点:

缺点:每个Node承担着互相监听、高并发数据写入、高并发数据读出,工作任务繁重

优点:将Redis的写操作分摊到了多个节点上,提高写的并发能力,扩容简单。

双剑合并:

看到这里大家也就发现了,主从和哈希的设计优缺点正好是相互弥补的,将图一每一套主从对应到图二中的每一个Node,就是Redis集群的终极形态,先Hash分逻辑节点,然后每个逻辑节点内部是主从,如图:

想扩展并发读就添加Slaver,想扩展并发写就添加Master,想扩容也就是添加Master,任何一个Slaver或者几个Master挂了都不会是灾难性的故障。

三张图秒懂Redis集群设计原理相关推荐

  1. Redis 集群搭建原理

    一.设计的主要特性和基本原理 1.集群目标 Redis 集群是 Redis 的分布式实现,在设计中按重要性顺序具有以下目标: 高性能和线性可扩展性,多达 1000 个节点.没有代理,使用异步复制,并且 ...

  2. Redis集群的原理和搭建

    Redis集群的原理和搭建 前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.单节点的Redis已经就达到了很高的性能,为了提高可用性我们可以使用Re ...

  3. Redis集群选举原理与脑裂问题

    系列文章目录 第一节 Redis的安装 第二节 Redis的五种数据结构(String.Hash.List.Set.ZSet) 第三节 Redis的持久化方式 第四节 Redis主从架构 第五节 Re ...

  4. redis 集群模式原理

    一.Redis分布式扩展之Redis Cluster方案 主从切换的过程中会丢失数据,因为只有一个master,只能单点写,没有解决水平扩容的问题.而且每个节点都保存了所有数据,一个是内存的占用率较高 ...

  5. Redis集群分片原理

    转载:http://blog.csdn.net/shmnh/article/details/72868328 Redis集群的目的是实现数据的横向伸缩,把一块数据分片保存到多个机器,可以横向扩展数据库 ...

  6. Redis集群进阶之路

    Redis集群规范 本文档基于Redis 3.X或更高版本,讲解Redis集群算法以及设计原理.此官方文档长期更新且随着Redis新版本特性的变化变动,详细请留意官网. 官网地址:https://re ...

  7. 两台服务器安装redis集群_redis 集群搭建,小白也能搭三主三从的集群环境

    redis集群简介: Redis集群是一个程序集,它提供在多个 Redis节点之间共享数据. 一个 Redis集群不支持同时处理多个键的 Redis命令,因为这要求将数据移动到多个节点之间,这会降低 ...

  8. Redis集群搭建的三种方式

    一.Redis主从 1.1 Redis主从原理 和MySQL需要主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生性能瓶颈,特别是在读压力上,为了分担压力,Redis支持主从复制. ...

  9. c语言课程设计微博管理系统,支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)...

    上篇文章<支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)>介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建.配置,运维.扩容等具体操作 集群搭建 ...

最新文章

  1. 博为峰Java技术文章 ——JavaSE Swing FlowLayout布局管理器I
  2. JavaScript箭头函数(Arrow Function)
  3. Tkinter的OptionMenu组件
  4. 关于CPU、指令集、架构、芯片概述
  5. jeecg 导出的excel不能使用公式_微软:Excel公式是世界上使用最广泛的编程语言...
  6. 唐僧给李世民的取经汇报
  7. Java实例分析:宠物商店
  8. ajax提交form返回数据格式,ajaxSubmit 返回值
  9. RDKit | RDKit中处理分子Mol对象
  10. html图片随圆点下标轮播,基于JavaScript实现轮播图代码
  11. 面向金融的R语言——Lecture9
  12. SAP中复合角色的应用实例
  13. 对往届软件工程的思考——写在软件工程开课之际 by 姜健
  14. 向武 清华大学 计算机,双胞胎兄弟向威、向武同时考上清华大学
  15. 2022年四川二级建造师建设工程法规及相关知识《解决建设工程纠纷法律制度》练习及答案
  16. CCD 相机与CMOS 相机的区别在哪里?
  17. ES:ES支持的数据类型
  18. 双亲委派模型,类的加载机制,搞定大厂高频面试题
  19. 人工智能如何改变新闻工作?
  20. 工程伦理--9.1 岗位胜任力

热门文章

  1. 读书笔记-柒-《腾讯网UED体验设计之旅》
  2. 在一家公司待久了没有目标,没有动力,我该怎么办?
  3. linux系统应用学习(三)--- 动态库静态库
  4. 苹果开发者账号,年龄未满18周岁,怎么修改个人信息啊
  5. 计算机换系统之后无法打印,打印机win7系统正常打印,换成win10后打印机驱动消失无法打印?...
  6. 测评:借助6款强大的工具阻止内部攻击
  7. 一种基于嵌入式的多重识别门禁系统设计方案
  8. CDH-distcp
  9. 如何将CentOS Stream退回为CentOS 8.5
  10. 论文投稿指南——收藏|SCI写作投稿发表全流程