Redis集群三种方式

Redis集群三种方式为什么要有集群单个 Redis 存在不稳定性 当 Redis 服务宕机或硬盘故障 系统崩溃之后 就没有可用的服务了 还会造成数据的丢失单个 Redis 的读写能力也是有限的还由于互联网的三高架构 高并发 高性能 高可用概念通过添加服务器的数量 提供相同的服务 从而让服务器达到一个稳定 高效的状态三种模式主从模式哨兵模式 Cluster 模式主从模式为什么要用主从复制单机 redis 的风险与问题问题一 机器故障硬盘故障 系统崩溃本质 数据丢失 可能对业务造成灾难性打击问题二 容

为什么要有集群

概念

通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定,高效的状态

三种模式

  • 主从模式
  • 哨兵模式
  • Cluster模式

主从模式

在这里插入图片描述

为什么要用主从复制

单机redis的风险与问题

问题一:机器故障

  • 硬盘故障,系统崩溃
  • 本质:数据丢失,可能对业务造成灾难性打击

问题二:容量瓶颈

  • 内存不足,一台redis内存是有限的

解决方案:

为了避免单点Redis服务器故障,准备多台服务器,互相联通,将数据复制多个副本保存在不同服务器上,连接在一起,并保证数据是同步的,即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份

特征

  • 一个master可以拥有多个slave,一个slave只对应一个master
  • 主从复制即将master中的数据及时,有效的复制到slave中

职责

master

  • 写数据
  • 执行写操作时,将出现变化的数据自动同步到slave
    slave:
  • 读数据,禁止写数据

作用

  • 读写分离:master写,slave度,提高服务器的读写负载能力
  • 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数据,通过多个结点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量
  • 故障恢复:当master出现问题时,由slave提供服务,实现快速的故障恢复
  • 数据冗余:实现数据热备份,是持久化之外的一种数据冗余方式
  • 高可用基石:基于主从复制,构建哨兵模式与集群,实现Redis的高可用方案

工作流程

分三个阶段

  • 建立连接阶段-建立slave到master的连接,使master能够识别slave,并保存slave端口号
  • 数据同步阶段-在slave初次连接master后,复制master中的所有数据到slave
  • 命令传播阶段-当master数据库状态被修改后,导致主从服务器数据库状态不一致,此时需要让主从数据同步到一致的 状态
建立连接阶段

在这里插入图片描述

数据同步阶段

要想了解这一阶段,先了解这几个知识点:复制缓冲区

复制缓冲区
  • 偏移量(offset),用来记录已发送的信息对应的偏移量,作为下次发送信息的坐标依据
  • 字节值,存放的用户的操作命令
    原理:
    通过偏移量区分不同的slave当前数据传播的差异(每个slave可能接受到master的命令的数量还不一样)
    总结
    复制缓冲区存的是全量复制之后的用户的一些操作,因为rdb不是实时的,需要有一个地方存储在全量复制更新期间,用户的一些操作命令,全量复制之后,这些命令都会发到slave,但不是一次性全发过去,而是有一定的规则去发,分好几次发送,每次都会记录命令发到了哪个位置,下回发送就从这个地方发送



在这里插入图片描述

注意事项
  • 如果master数据量巨大,数据同步阶段应避开流量高峰期,避免造成master阻塞,影响业务正常执行
  • 复制缓冲区大小设定不合理,会导致数据溢出。如进行全量复制周期太长,进行部分复制时发现数据已经存在丢失的清空,必须进行第二次全量复制
  • master单机内存占用主机内存的比例不应过大,建议使用50%-70%的内存,留下30%-50%的内存用于执行bgsave命令和创建复制缓冲区
命令传播阶段

要想了解这一阶段,先了解这几个知识点:复制缓冲区、服务器运行ID、心跳机制

服务器运行ID
心跳机制
  • 指令:PING
  • 周期:由repl-ping-slave-period决定,默认10秒
  • 作用:判断slave是否在线
  • 查询:INFO replication 获取slave最后一次连接时间间隔,lag项维持在0或1视为正常
    slave心跳任务
  • 指令:REPLCONF ACK {offset}
  • 周期:1秒
  • 作用1:汇报slave自己的复制偏移量,获取最新的数据变更指令
  • 作用2:判断master是否在线

在这里插入图片描述

常见问题
  • master数据巨大的时候,一旦master重启,runid将会发生变化,会导致全部的slave的全量复制操作
  • 复制缓冲区过小,断网后slave的offset越界,触发全量复制

总结

  • 主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库
  • 从数据库一般都是只读的,并且接收主数据库同步过来的数据
  • 一个master可以拥有多个slave,但是一个slave只能对应一个master
  • slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来
  • master挂了以后,不影响slave的读,但redis不再提供写服务,master重启后redis将重新对外提供写服务
  • master挂了以后,不会在slave节点中重新选一个master,只能手动的一个一个改,不合适,就有了之后的哨兵

哨兵模式

在这里插入图片描述

哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master

为什么有哨兵

主机宕机,如何能够高可用的恢复正常,不用人为进行干预

作用

  • 监控
    • 不断地检查master和slave是否正常运行
    • master存活检测,master与slave运行清空检测
  • 通知(提醒)
    • 当被监控地服务器出现问题时,向其他(哨兵、客户端)发送通知
  • 自动故障转移
    • 断开master与slave连接,选取一个slave作为master,将其他slave连接到新地master,并告知客户端新地服务器地址

注意:

  • 哨兵也是一台redis服务器,只是不提供数据服务
  • 通常哨兵配置数量为单数

工作原理博客

Cluster

redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充,哨兵模式还是只有一个master;所以在3.x提出cluster集群模式。

在这里插入图片描述

在redis-cluster架构中,redis-master节点一般用于接收读写,而redis-slave节点则一般只用于备份,其与对应的master拥有相同的slot集合,若某个redis-master意外失效,则再将其对应的slave进行升级为临时redis-master。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209492.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:06
下一篇 2026年3月19日 上午9:07


相关推荐

  • 重磅官宣:Nacos2.0性能提升10倍[通俗易懂]

    重磅官宣:Nacos2.0性能提升10倍[通俗易懂]简介:​Nacos2.0作为一个跨代版本,彻底解决了Nacos1.X的性能问题,将性能提升了10倍。作者:席翁继Nacos1.0发布以来,Nacos迅速被成千上万家企业采用,并构建起强大的生态。但是随着用户深入使用,逐渐暴露一些性能问题,因此我们启动了Nacos2.0的隔代产品设计,时隔半年我们终于将其全部实现,实测性能提升10倍,相信能满足所有用户的性能需求。下面由我代表社区为大家介绍一下这款跨代产品。Nacos简介Nacos是一个更易于构建云原生应用的动态服务发现、配置管理

    2026年2月2日
    5
  • JDK下载安装及环境变量配置的图文教程(详解)「建议收藏」

    JDK下载安装及环境变量配置的图文教程(详解)「建议收藏」学习Java,需要下载并安装JDK(JavaDevelopmentKit,Java开发工具包);而为了能够快捷打开java程序,就需要按照操作系统的要求进行环境变量的配置。一、下载并安装JDK(一)下载JDK搜索“jdk官方下载”或是直接进入Sun公司的官网(https://www.oracle.com/)…

    2022年6月1日
    35
  • GPT-Crawler教程:智能文本采集与处理

    GPT-Crawler教程:智能文本采集与处理

    2026年3月15日
    2
  • PKI 体系

    PKI 体系PKI简介公开密钥基础建设(英语:PublicKeyInfrastructure,缩写:PKI),又称公开密钥基础架构、公钥基础建设、公钥基础设施、公开密码匙基础建设或公钥基础架构,是一组由硬件、软件、参与者、管理政策与流程组成的基础架构,其目的在于创造、管理、分配、使用、存储以及撤销数字证书。(PKI体系(一)-PKI介绍-简书)概念对称加密特点:加解密使用相同密钥,加解密过程速度快 算法:DES、3DES、AES非对称加密特点:加解密各用密钥对其中之一,密钥对公开的部

    2022年8月22日
    8
  • IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)

    IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)因为觉得网络上的idea快捷键不够详尽,所以特别编写了此篇文章,方便大家使用ideaO(∩_∩)O~其中的英文说明来自于idea的官网资料,中文说明主要来自于自己的领会和理解,英文说明只是作为参考。重要的快捷键会附带图示,进行详细的说明。每一部分会先列出所有的快捷键说明表,如果有不清楚的地方,再看后续的图示详解。1编辑【Editing】快捷键英文说明

    2022年5月14日
    179
  • idea快捷键最全最新最好

    idea快捷键最全最新最好常用快捷键 返回最顶头 home 返回最末尾 end Alt Insert 可以新建类 文件 get 或 set 方法 此快捷键又名创造一切 编辑区和文件区的跳转 alt 1 编辑区跳转至文件区 esc 文件区跳转回到编辑区 关闭当前打开的

    2026年3月27日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号