不点蓝字,我们哪来故事?

本文约:2000字 预计阅读时间:5分钟

1

前言

现在已经到了国庆的末尾了,大家这个国庆过的怎么样?是否已经顺利地从家中返航?

当你看到这篇文章的时候,就知道moon要来提醒你学习了!多看看自己的钱包?,是不是感觉学习的动力满满呢?

趁着你们玩的这几天,moon又将这篇redis cluster集群的文章肝了出来,是不是很感动呢,来吧,学起~

2

正文

cluster集群模式简介

在redis3.0版本中支持了cluster集群部署的方式,这种集群部署的方式能自动将数据进行分片,每个master上放一部分数据,提供了内置的高可用服务,即使某个master挂了,服务还可以正常地提供,我们先来看张图:

上图就是一个最简单的

cluster集群的架构图

使用cluster集群模式,只需要将每个数据库节点的cluster-enabled配置选项打开即可,但是每个cluster集群至少要保证有3个主数据库才能正常运行。

cluster集群模式是怎么存放数据的?

一个cluster集群中总共有16384个节点,集群会将这16384个节点平均分配给每个节点,当然,我这里的节点指的是每个主节点,就如同下图:

我们先聊聊键是如何和16384个插槽做关联的:

redis将每个redis的键的键名有效部分使用CRC16算法计算出散列值,然后与16384取余数,这样的就可以使每个键能够尽量的均匀分布在16384个插槽中。

我们再来说说插槽是如何和节点做关联的:

①插槽之前没有被分配过,现在想分配给指定节点

②插槽之前被分配过,现在想移动指定节点

第一种情况可以通过cluster add slot s 命令来实现

第二种情况的原理相对麻烦一点,但是redis也提供的便捷的方式去操作,我们可以使用redis-trib.rb去实现

如何获取与插槽对应的节点

当客户端向redis集群中的任意一个节点发送命令后,该节点都会判断当前键的信息是否存在于当前节点:

如果存在,那么就会像单机的reids一样执行命令。

如果不存在,就会返回一个move重定向请求,告诉客户端负责该数据的节点是哪一个,然后客户端会向该节点发送命令再次请求获取数据

新节点的加入

需要通过cluster meet命令来实现:

cluster meet ip port

ip port 是我们已运行的redis集群中任意一个节点的地址和端口号,新节点在客户端输入命令后,会与命令中的节点进行握手,握手后,命令中的集群节点会将这个新节点的信息分享给集群中的每一个节点。

故障恢复

判断故障的逻辑其实与哨兵模式有点类似,在集群中,每个节点都会定期的向其他节点发送ping命令,通过有没有收到回复来判断其他节点是否已经下线。

如果长时间没有回复,那么发起ping命令的节点就会认为目标节点疑似下线,也可以和哨兵一样称作主观下线,当然也需要集群中一定数量的节点都认为该节点下线才可以,我们来说说具体过程:①当A节点发现目标节点疑似下线,就会向集群中的其他节点散播消息,其他节点就会向目标节点发送命令,判断目标节点是否下线②如果集群中半数以上的节点都认为目标节点下线,就会对目标节点标记为下线,从而告诉其他节点,让目标节点在整个集群中都下线

之后当B已经下线,那么B的slave就会开始选举,选择是哪个slave升级为master,继续提供服务,这个过程和哨兵的过程基本相同,这里就不在赘述的,不知道的小伙伴可以传送学完redis的三种集群部署后,工资又涨了1000!!<2.哨兵模式>如何提高redis的读写能力

这个问题也是我们之前抛出来的问题,我们放一张图大家就会很容易明白了:

提高写能力只需要横向扩容我们的master节点

提高读能力只需要横向扩容slave就好了

3

结语

在国庆的尾巴和大家聊完了redis部署方式的最终篇-cluster部署,也解决了之前我们留下的问题

下一篇文章我会和大家聊聊redis的事务和mysql的事务到底有什么不一样

我们下期见,记得点赞哦~~

●学完redis的三种集群部署后,工资又涨了1000!!<2.哨兵模式>

●学完redis的三种集群部署后,工资又涨了1000!!<1.主从复制>

●内存屏障?cpu级别的优化,你真的懂单例了吗???

●现在居然还有不知道持久化的......出门右拐不送!!!!

END

关注moon

我们一起吊打面试官!

回复666  免费获得一线大厂面试资料!

点亮 ,告诉大家你也在看

mysql cluster_redislt;3.cluster集群模式gt;相关推荐

  1. Redis 高级特性(5)— 集群模式(主从模式、哨兵模式、cluster 集群模式)

    Redis 是如何做到高可用的呢? 它主要通过支持主从模式.哨兵模式.集群模式这三种模式,来满足不同业务特点和可用等级的需求. 其中,主从模式部署最简单,用得也最多,集群模式比较复杂,但可用性最高. ...

  2. CentOS7下安装Redis伪集群(基于Redis官方Cluster集群模式版本redis-5.0.10)

    文章目录 Redis简介 什么是redis redis的优点 Redis集群都有哪些模式 主从复制(Master-Slave Replication) 哨兵模式(Sentinel) Redis官方 C ...

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

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

  4. redis cluster集群模式简述

    前言 redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master:后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自 ...

  5. reids 5.0.4 cluster集群模式部署实操。

    一.准备工作 5.0.4的redis压缩包,可以自行去官网下载. linux环境 二.解压并且安装 1.新建6个文件夹用于安装redis目录 目录路径为/root/tools/7001 [root@m ...

  6. Redis集群搭建(Cluster 集群模式,分片集群)

    Redis集群搭建Cluster 集群模式 引言 Redis的集群介绍 搭建方法 创建集群 其他服务的搭建 引言 redis相信大家不陌生,是最常用的缓存解决方案了.但是,在服务开发中,单机都会存在单 ...

  7. Redis Cluster集群模式

    Redis Cluster 它是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求.当遇到单机内存.并发.流量等瓶颈时,可以采用Cluster架构达到 ...

  8. redis的cluster集群模式

    我们知道主从复制和哨兵模式解决了Redis的单机问题,但是Redis仍然存在着以下两个问题: 1)所有的写操作都集中到主服务器上,主服务器CPU压力比较大 2)不管是主服务器还是从服务器,它们都同样保 ...

  9. [Java工程师面试精选]Redis cluster集群模式的原理

    redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内 ...

最新文章

  1. Java的继承多态的练习
  2. 何杰月c语言课程,多线程 - 何杰leo的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. phpstorm知识点
  4. vscode智能提示css的插件_Visual Studio Code 必备插件,主题及语法提示
  5. 【转载】应广大群众的要求,今天开始连载《超容易的Linux系统管理入门书》一书...
  6. Java中的双重检查锁定
  7. knn分类 knn_关于KNN的快速小课程
  8. 04.MyBatis别名的设置和类型转换器
  9. python_sorted()详解
  10. Yandex浏览器 - 可以在手机上安装chrome插件的浏览器
  11. preHandle执行多次问题
  12. python 股票交易接口 github_GitHub - Higgsbit/vnpy: 基于python的开源交易平台开发框架...
  13. ACM简单题——不能被3整除的数
  14. 零死角玩转stm32中级篇2-IIC总线
  15. 【基础】dB、dBm、dBc等概念的解释
  16. (未完)第十二章:动态内存
  17. AI走进中小学|百度飞桨全力支持,全球青少年图灵计划震撼开启!
  18. javascript原生—悬浮导航栏
  19. 【文字识别】TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models
  20. html制作简易时钟

热门文章

  1. ajax csrf php,Laravel中Ajax调用时的CSRF对策
  2. 找工作java还是python有用_你觉得学 Python 还是 Java 更好找工作?
  3. 同一台电脑上使用两个 github 账号
  4. ?线程池为什么可以复用,我是蒙圈了。。。
  5. java基础提升篇:synchronized同步块和volatile同步变量
  6. 服务器内存一般多大_性能调优第一步,搞定服务器硬件选型
  7. (JavaWeb)Filter过滤器
  8. 网络爬虫初步:从访问网页到数据解析
  9. springMVC如何接收和发送json数据对象
  10. small android,Android-Small框架-基础