一、redis-cluster架构图

  • 使用如下图的命令连接到别的Redis服务器,并通过命令ping检测Redis服务器是否处于健康状态
  • 下图所示的圆圈表示一个Redis服务器,每个结点的数据都是不一样的,只要有一个结点挂了,那么那么Redis集群就挂了,考虑到高可用,每个节点都需要添加备份机
  • redis-cluster投票:容错

    • 投票机制,用于指导那个结点挂了

    • 规则:要判断一个结点是不是挂了,那么需要集群中半数的结点认为他挂了,那么他就挂了

    • 分析:下图的红色的结点是挂了的结点,黄色的结点发现了红色的结点挂了,那么他会想其他的结点广播,让其他的结点试试红色的结点是否挂了,黄色的箭头代表测试红色的结点没有反应,图中一共有五个结点,三个认为红色的结点挂了,那么则认为红色的结点挂了,我们的集群就不完整了,就会看一下是否有备份结点,如果没有备份结点,那么整个Redis集群就挂了

  • 架构细节:

    • ​​​​​​​所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽
    • 节点的fail是通过集群中超过半数的节点检测失效时才生效(redis-cluster投票:容错)
    • 客户端与redis节点直连,不需要中间proxy(代理)层。客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
    • redis-cluster把所有的物理节点映射到[0-16383]slot(槽,作用:均匀分布。不管服务器有多少,槽只有16384个)上,cluster 负责维护
      • ​​​​​​​Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
      • 步骤:0-5000、501-10000、10001-16383分到三个不同的服务器上,通过crc16得到每一个key的一结果,这个结果对16384求余,得到不同的哈希槽,然后根据哈希槽分配到不同的服务器上

Redis的集群原理相关推荐

  1. Redis cluster集群原理与配置

    Redis cluster集群原理与配置 一.cluster集群原理 1.数据迁移 过程 2.复制以及故障转移 故障检测 故障转移 二.配置cluster集群 1.创建文件夹 2.编辑 7001.co ...

  2. Redis——cluster集群原理

    摘要 在 redis3.0之前,redis使用的哨兵架构,它借助 sentinel 工具来监控 master 节点的状态:如果 master 节点异常,则会做主从切换,将一台 slave 作为 mas ...

  3. Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理

    概要 我们知道「主从复制是高可用的基石」,从库宕机依然可以将请求发送给主库或者其他从库,但是 Master 宕机,只能响应读操作,写请求无法再执行. 所以主从复制架构面临一个严峻问题,主库挂了,无法执 ...

  4. Redis学习(二)之 Redis Cluster集群

    redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并 ...

  5. 5-Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理(码哥)

    概要 我们知道「主从复制是高可用的基石」,从库宕机依然可以将请求发送给主库或者其他从库,但是 Master 宕机,只能响应读操作,写请求无法再执行. 所以主从复制架构面临一个严峻问题,主库挂了,无法执 ...

  6. python连接redis集群如何释放内存_python 连接 redis cluster 集群

    一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...

  7. 基于Redis6.2.6版本部署Redis Cluster集群

    基于Redis6.2.6版本部署Redis Cluster集群 文章目录 基于Redis6.2.6版本部署Redis Cluster集群 1.Redis6.2.6简介以及环境规划 2.二进制安装Red ...

  8. java集群解析文件_干货:一文详解Redis集群原理核心内容

    集群原理 一个系统建立集群主要需要解决两个问题:数据同步问题和集群容错问题. Naive方案 一个简单粗暴的方案是部署多台一模一样的Redis服务,再用负载均衡来分摊压力以及监控服务状态.这种方案的优 ...

  9. Redis cluster集群扩容缩容原理

    1. Redis Cluster集群扩容 1.1 扩容原理 redis cluster可以实现对节点的灵活上下线控制 3个主节点分别维护自己负责的槽和对应的数据,如果希望加入一个节点实现扩容,就需要把 ...

  10. Redis Cluster 集群模式原理和动态扩容

    Redis Cluster原理 详细参考 Redis cluster集群模式的原理, 在这里补充下要点 16384个slot, 平均分布在各个master, key-value 对存储在slot中; ...

最新文章

  1. js 打开窗口window.open
  2. 异常检测算法:Isolation Forest
  3. IDA Pro IDA 数据库文件
  4. 电子邮件的故事:令人吃惊的预测
  5. 云炬随笔20160914
  6. 类装载器ClassLoader
  7. java的虚拟机不支持在鲲鹏上_屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!...
  8. php mysql 全文检索_MySQL中文全文检索
  9. XMPP之openfire无法启动
  10. spark on yarn webUI logs不能查看
  11. 数据结构排序法之堆排序he归并排序
  12. 《转》不要过打折的生活,当你发现这些你有了,说明你开始成熟了
  13. sklearn中lstm_分别用sklearn和tensorflow做房价预测
  14. MATLAB 求一个矩阵的最大值极其所在位置
  15. 怎么把python写的程序打包成软件_python怎么把软件打包出来
  16. CSS——网易云音乐之登录页面的实现
  17. SpringMVC Web实现文件上传下载功能实例解析
  18. MapGIS应用操作题
  19. 用户可以更方便高效的使用计算机,有了操作系统,用户可以更方便高效的使用计算机。...
  20. 事务的4个特性——ACID(原子性、一致性、隔离性和持久性)、更新丢失问题...

热门文章

  1. 解决Fedora14使用root权限登录问题
  2. 数据库系统概念(中文第六版):杨冬青-电子书
  3. 智能网联汽车测试场景数据车载采集平台搭建要求及方法
  4. win10 2016 LTSB
  5. html 登录页面提示信息,登陆界面.html
  6. Axure下载安装-汉化-注册码
  7. python+selenium 自动拖拽滑块
  8. linux里怎么解压war包,Linux压缩war和解压war包
  9. 家庭收支软件用java写,eclipse编写的Java家庭收支记账软件
  10. 三对角矩阵解算——TDMA解法(C++)