redis架构系列——生产常用的部署模式介绍

主从高可用模式

在这里插入图片描述

这是最基本的高可用模式,它允许数据从主节点自动复制到一个或多个从节点。这种模式下,从节点可以处理读操作,从而实现负载均衡,并提供故障恢复的基本功能。然而,它的故障恢复不能自动化,写操作也无法实现负载均衡,且存储能力受限于单个服务器的性能。

主从复制原理

  • 从数据库启动成功后,连接主数据库,发送 SYNC 命令;
  • 主数据库接收到 SYNC 命令后,开始执行 BGSAVE 命令生成 RDB 文件并使用缓冲区记录此后执行的所有写命令;
    主数据库 BGSAVE 执行完后,向所有从数据库发送快照文件,并在发送期间继续记录被执行的写命令;
  • 从数据库收到快照文件后丢弃所有旧数据,载入收到的快照;
    主数据库快照发送完毕后开始向从数据库发送缓冲区中的写命令;
  • 从数据库完成对快照的载入,开始接收命令请求,并执行来自主数据库缓冲区的写命令;(从数据库初始化完成)
  • 主数据库每执行一个写命令就会向从数据库发送相同的写命令,从数据库接收并执行收到的写命令;(从数据库初始化完成后的操作)
  • 出现断开重连后,8之后的版本会将断线期间的命令传给重数据库,增量复制。
  • 主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。Redis 的策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

哨兵高可用模式

在这里插入图片描述

在主从复制的基础上,哨兵模式增加了自动化的故障检测和恢复功能。哨兵是特殊的Redis实例,不存储业务数据,主要负责监控集群中的节点状态,并在主节点出现故障时自动将从节点提升为新的主节点。这种模式解决了单点故障问题,提高了系统的可用性。但是,写操作仍然无法实现负载均衡,且存储能力同样受到单机限制。

Cluster模式

在这里插入图片描述

Redis Cluster是Redis提供的一种分布式数据库解决方案,它允许数据在多个Redis节点之间自动分片,同时提供了高可用性、故障转移和负载均衡等功能。以下是Redis Cluster模式的详细介绍:

  • 分布式架构:Redis Cluster通过将数据分布在多个节点上来提供分布式服务,这样可以有效地扩展存储容量和处理能力。

  • 容错性:当集群中的某个节点发生故障时,Redis Cluster能够自动检测并触发故障转移机制,确保数据不丢失,并且服务可以继续运行。

  • 自动分片:Redis Cluster会自动将数据分为多个槽(slots),并将这些槽分布到不同的节点上。这种分片机制对客户端透明,客户端可以根据一致性哈希算法自动定位到正确的节点。
    在这里插入图片描述

  • 最少节点数:为了保证集群的高可用性,一个Redis Cluster至少需要6个节点,这样即使失去一半的节点,集群仍然能够正常工作。

  • 集群配置:每个节点需要开启cluster-enabled yes的配置,以运行在集群模式下。此外,根据官方推荐,集群部署至少要有3台以上的master节点。

  • 部分功能限制:需要注意的是,Redis Cluster并不支持所有的Redis功能,它是一个功能子集。例如,某些涉及跨槽操作的命令可能无法在集群模式下使用。

  • 监控与管理:虽然Redis Cluster提供了自我管理和自动故障转移的能力,但在实际生产环境中,仍然需要对集群的状态进行监控和管理,以确保其稳定运行。

  • 读写分离与负载均衡:在Redis Cluster模式下,客户端可以连接到任何一个节点进行读写操作,集群会根据数据所在的槽自动将请求路由到正确的节点,从而实现负载均衡。

  • 数据一致性:Redis Cluster采用异步复制的方式来保证数据的一致性,这意味着在一定的窗口期内,可能会存在数据不一致的情况。

  • 部署简易性:尽管Redis Cluster提供了复杂的分布式能力,但其启动和验证过程相对简单,主要涉及到配置文件的设置和启动验证步骤。

分片集群模式

在这里插入图片描述

Redis分片集群是一种通过将数据分布在多个Redis节点上来提高性能和可扩展性的技术。

分片集群模式为多个服务的集合,不进行实际部署;添加多个Redis服务到分片集群中,应用绑定Redis时就可以选择该集群,而不需要单独关联每个服务。

客户端通过hash绑定到指定的Redis服务中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/486666.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

导出本地环境venv包whl文件。

把python环境 venv 对应包的文件导出成whl文件 将 Python 虚拟环境中包导出到文件,可以方便地在其他电脑上安装相同的环境,无需重复下载。 使用 pip freeze 和 pip download 使用 pip freeze 命令列出所有已安装的包和版本号保存到 requirements.txt …

【某机构vip教程】Selenium(7):元素定位_css_selecto定位

Css_selector是什么 CSS是一个被用来描述如何在屏幕等处渲染HTML和XML文档的语言。CSS使用选择器来为文档中的元素绑定样式属性。 选择器(selector)是用来在树中匹配元素的模式,选择器对HTML和XML进行了优化,被设计用来在注重性能…

pikachu靶场-XSS

XSS: XSS(跨站脚本)概述 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型: 1.反射性XSS; 2.存储型XSS; 3.DOM型XSS; …

有名管道的大小

管道:有名管道、无名管道 通信: 单工通信:固定的读端和写端 -- 广播 半双工通信:同一时刻,只有有一方写,另外一方读:对讲机 全双工通信:随时两方都能读写 -- 电话 特点: 管道属…

Microsoft 365自定义安装软件

如图,在安装类型的步骤的时候,可以勾选自己想要的软件(而非一股脑儿的安装一大堆自己不需要的)。

如何在java中使用 Excel 动态函数生成依赖列表

前言 在Excel 中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化。依赖列表通常用于Excel的业务报告,例如学术记分卡中的【班级-学生】列表、区域销售报告中的【区域-国家/地区】列表、人口仪表板中的【年…

使用redisMQ-spring-boot-starter实现消息队列和延时队列

简介 redisMQ-spring-boot-starter是一个轻量级的、基于Redis实现的消息队列中间件,它有如下优点: 开箱即用,你几乎不用添加额外的配置支持消息队列、延时队列,并提供精细化配置参数提供消息确认机制支持虚拟空间,不…

在springboot中调用openai Api并实现流式响应

之前在《在springboot项目中调用openai API及我遇到的问题》这篇博客中,我实现了在springboot中调用openai接口,但是在这里的返回的信息是一次性全部返回的,如果返回的文字比较多,我们可能需要等很久。 所以需要考虑将请求接口响应…

Nginx -2

接着上文写 5.4.7 验证模块 需要输入用户名和密码 模块名称:ngx_http_auth_basic_module 访问控制基于模块 ngx_http_auth_basic_module 实现,可以通过匹配客户端资源进行限制 语法: Syntax: auth_basic string | off; Default: auth_ba…

日常工作软件安装总结

日常工作软件安装总结 系统服务安装集成 Skywalking SpringBoot集成Skywalking服务 地址:http://192.168.1.52:8686/general nohup java -javaagent:/mnt/skywalking-agent/skywalking-agent/skywalking-agent.jar -DSW_AGENT_NAMEdev::rms-risk-service agent…

谈谈智能机器人智能电表运维管理体系在铁路牵引变电所建设构想

关键词:智能移动机器人状态检测分析决策智能化管理 0前言 牵引变电所是铁路机车供电的来源,是保障铁路运行的基本环节,经过多年的改造和发展,牵引变电所在我国大部分的铁路线路中已经得到了合理的覆盖,无人值班牵引变…

LED景观照明灯驱动电路串联、并联和恒流3款方案

LED景观照明灯是现代城市照明中常见的一种灯具。为了保证LED景观照明灯的正常工作,需要设计合适的驱动电路。LED景观照明灯的驱动电路可以采用串联、并联或恒流的方式来设计。 首先,串联驱动电路是指将多个LED灯串联在一起,然后接入电源进行…