概念:redis有三种集群模式,分别为主从模式,哨兵模式以及集群模式,其中主从是最常见的模式

三种集群模式说明
**·**Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的。哨兵顾名思义,就是用来监控的,主要作用就是监控主从集群,自动切换主备,完成集群故障转移。
**·**cluster 模式是redis官方提供的集群模式,使用了Sharding 技术,不仅实现了高可用、读写分离、也实现了真正的分布式存储。

一.主从复制
1.1 主从模式图

1.2 redis复制原理
redis 的复制分为两部分操作 同步(SYNC)和 命令传播(command propagate)

· 同步(SYNC)用来将从服务器的状态 更新到 和主服务器 一致。白话文解释就是从服务器主动获取 主服务器的数据。保持数据一致。具体实现是,主服务器收到SYNC命令后,生成RDB快照文件,然后发送给从服务器。
· 命令传播 (command propagate)用于在主服务器数据被修改后,主从不一致,为了让从服务器保持和主服务器状态一致,而做的命令传播。白话文解释就是主服务器收到客户端修改数据命令后,数据库数据发生变化,同时将命令缓存起来,然后将缓存命令发送到从服务器,从服务器通过载入缓存命令来达到主从数据一致。这就是所谓的命令传播。
· 为什么需要有同步和命令传播的两种复制操作: 当只有同步操作时候,那么在从服务器向主服务器发送SYNC命令时候,主服务器在生成RDB快照文件时候,仍然会收到客户端的命令修改数据状态,这部分数据如果不能传达给从服务器,那么就会出现主从数据不一致的现象。这时候就出现了命令传播,主服务器收到从服务器的SYNC命令后,生成RDB快照文件同时,将此段时间内收到的命令缓存起来,然后使用命令传播的操作发送从服务器。来达到主从数据一致。

1.3 主从复制原理
上面介绍了redis复制的两种操作,而redis得主从复制正式基于 同步 和 命令传播 来实现得。下面两张图展示了redis复制的流程:

1.4 redis主从复制优缺点
优点:

1.4.1、实现读写分离,提高了可用性,解决了单机故障2、主从复制期间master和slave都是非阻塞方式,仍然可用。

缺点:

1.4.2、master宕机期间,需要手动切换主机,同时会有部分数据不能及时同步从服务器,造成数据不一致(需要人工手动介入)

1.4.3、slave宕机后,多个slave恢复后,大量的SYNC同步会造成master IO压力倍增(可以手动规避启动时间)

1.4.4、在线扩容较复杂。

总结:
redis主从复制的优点主要是提高了可用性缺点

二. Sentinel 哨兵模式
Sentinel 哨兵Sentinel 哨兵介绍

Sentinel 哨兵本质上是一个运行在特殊模式下的Redis实例,只是初始化的过程和工作与普通的Redis不同,本质上也是一个单独的进程。

Sentinel 哨兵 是Redis的高可用解决方案:一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在主服务器下线时可以自动切换从服务器升级为主服务器。

2.1 Sentinel系统
下图是一个简单的Sentinel系统架构图,一个Sentinel系统监视一个主从集群,其中server1是Redis主服务器,server2/3/4是Redis 从服务器。主从之间利用上面的主从复制来达到主从一致。而Sentinel系统监视整个主从集群。

2.1.1 Sentinel 哨兵监控过程
Sentinel 哨兵监控集群过程:

· 命令 Sentinel哨兵通过发送命令,让redis服务器返回运行状态。发布订阅 当主服务器状态发生变化时,Sentinel哨兵通过
· 发布订阅模式通知其他从服务器。

2.2 Sentinel故障转移
当Sentinel系统察觉到Server1主服务器下线时,就会终止server2/3/4的复制。

同时Sentinel将server2升级为主服务器,server3/4从新的主服务器进行复制。同时等待server1的再次上线

Sentinel系统也可以主动降级主服务为从服务器,将从服务器升级为主服务器。

2.2.1 Sentinel 哨兵故障转移
Sentinel 故障转移:

2.2.1.1、Sentinel系统中的Sentinel实例每隔1s就像集群发送PING命令
2.2.1.2、如果集群中有实例的回复Sentinel实例时间超过了 down-after-milliseconds,那么这个实例就会发送PING命令的Sentinel实例被主观下线
2.2.1.3、那么什么时候会客观下线呢?需要Sentinel系统中其他实例也确认集群中该实例主管下线。
如果master主服务器被标记为主观下线,则Sentinel系统中监视master的Sentinel进程需要以每秒一次的频率确认Master是否进入主管下线状态
2.2.1.4、当有足够的Sentinel实例(取决于配置)确认Master进入了主管下线,则Master会被标记为客观下线。

2.3 Sentinel 哨兵优缺点

优点:
哨兵模式基于主从复制,因此主从复制的优点哨兵都具备、哨兵具备了主从切换和故障转移,因此集群有了更高的可用性
缺点:
Redis较难支持在线扩容,在线扩容比较复杂。
总结:
sentinel 哨兵主要用来监控redis主从集群,提高了redis 主从集群的可用性。

三.cluster 模式

3.1 reids cluster
Redis Cluster是一种服务器 Sharding 技术,redis 3.0版本开始正式提供。
Sentinel基本已经实现了高可用,但是每台机器都存储相同内容,很浪费内存,所以Redis Cluster实现了分布式存储。每台机器节点上存储不同的内容。

3.2 Redis Cluster 数据分片原理
redis 数据分片使用的是hash slot, redis集群有16384个哈希槽,每个Key通过CRC16校验后对16384取模来决定放置哪一个槽。
当存取redis key时候,redis会根据CRC16算法得到一个结果,然后把结果和16384求余,通过这个值去对应得节点获取数据。
这个时候,应用客户端实际上只需要连接其中任意一个节点即可,然后Redis Cluster 中每个节点都保存了其他节点得槽信息。这样当存取key计算完槽之后,通过保存槽信息从配置中获取节点信息,然后再去对应得节点获取数据。

3.3 Redis Cluster 复制原理
redis-cluster集群引入了主从复制模型,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点 ping 一个主节点 A 时,如果半数以上的主节点与 A 通信超时,那么认为主节点 A 宕机了。如果主节点 A 和它的从节点 A1 都宕机了,那么该集群就无法再提供服务了

3.4 redis Cluster 优缺点
优点:
实现了分布式存储,节省了内存

redis 三种集群模式详解相关推荐

  1. Redis三种集群模式介绍

    三种集群模式 redis有三种集群模式,其中主从是最常见的模式. Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的.哨兵顾名思义,就是用来监控的,主要作用就是 ...

  2. redis集群模式详解

    redis集群模式详解 一,redis集群 1,哨兵集群 2,redis Cluster 二,redis Cluster集群的搭建 1,配置文件 2,redis服务启动 三,springboot连接r ...

  3. Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)...

    一.solr两种部署模式介绍 Standalone Server 独立服务器模式:适用于数据规模不大的场景 SolrCloud  分布式集群模式:适用于数据规模大,高可靠.高可用.高并发的场景 二.独 ...

  4. redis三种集群方案

    在开发测试环境中,我们一般搭建Redis的单实例来应对开发测试需求,但是在生产环境,如果对可用性.可靠性要求较高,则需要引入Redis的集群方案.虽然现在各大云平台有提供缓存服务可以直接使用,但了解一 ...

  5. Redis几种集群模式

    此文由转载 https://blog.csdn.net/wy0123/article/details/79583506 现在越来越多的项目都会利用到redis,多实例redis服务比单实例要复杂的多, ...

  6. redis的三种集群模式原理

    一.主从同步/复制 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据. 但是由于数据是存储在一台服务器 ...

  7. redis php方案,Redis三种部署方案图文详解

    standaloan(单机模式) standaloan 是redis单机模式,及所有服务连接一台redis服务,该模式不适用生产.如果发生宕机,内存爆炸,就可能导致所有连接改redis的服务发生缓存失 ...

  8. STM32三种BOOT启动模式详解(全网最全)

    一.三种boot启动模式 一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存.用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式. ...

  9. Redis详解(十五)------ 集群模式详解

    1.为什么需要集群? ①.并发量 通常来说,单台Redis能够执行10万/秒的命令,这个并发基本上能够满足我们所有需求了,但有时候比如做离线计算,为了更快的得出结果,有时候我们希望超过这个并发,那这个 ...

最新文章

  1. 新手搭ssm要多久_如何快速学习ssm 框架?
  2. 图的实现(邻接链表C#)
  3. Spring– DAO和服务层
  4. Python(4)--Pycharm安装、使用小技巧
  5. java编程方向_java网络编程方向具体该怎么去学
  6. 赠书 | 如何建设数据中台?看这份企业数据能力测评就够了!
  7. struts2中常用Result类型(type)的用法
  8. 114. PHP command line getopt
  9. 「HNOI 2015」落忆枫音
  10. 修改注册表,改回主页---内容来自百度
  11. 腾讯会议共享屏幕,ppt如何使用演讲者模式
  12. tcl语言读取文件一行_TCL语言笔记:TCL中的列表操作
  13. 服务器远程关机软件,实现远程关机需要哪些步骤?向日葵怎么实现远程关机控制?...
  14. 高等数学|微积分(上)知识点总结
  15. Python 批量修改PDF文件名
  16. 快速读懂CAN报文 DBC文件 解析文件
  17. Vim插件之python-mode
  18. 特征:什么是特征和特征选择?
  19. 微信原生小程序电商实战项目----附源码和分析
  20. 什么是导航?导航具有什么样的作用?

热门文章

  1. 使用matplotlib,pylab进行python绘图
  2. ffmpeg实现变速播放的两种方案
  3. “二手”市场的困境:用户习惯培养阶段
  4. STL string容器 构造,查找,替换,拼接,比较,截取,插入删除
  5. 2022年Java秋招面试必看的 | Linux 面试题
  6. 如何用google translate API接口
  7. C# 设置线程的默认CultureInfo
  8. python将视频转为图片
  9. 中文保存CSV文件乱码解决方法
  10. 某某客户的一次勒索病毒应急响应