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.mzph.cn/news/700972.shtml

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

相关文章

内核解读之内存管理(8)什么是page cache

文章目录 0. 文件系统的层次结构1.什么是page cache2.感观认识page cache3. Page Cache的优缺点3.1 Page Cache 的优势3.2 Page Cache 的劣势 0. 文件系统的层次结构 在了解page cache之前,我们先看下文件系统的层次结构。 1 VFS 层 VFS ( Virtual Fi…

Vulhub 靶场训练 DC-8解析

一、环境搭建 kali的IP地址:192.168.200.14 DC-8的IP地址:192.168.200.13(一个flag) 靶机和攻击机处于同一个网络方式:nat或桥接 若出现开机错误,适当将dc的兼容版本改低,我的vmware workst…

pythonJax小记(三):python: 使用Jax已知若干坐标,提取二维矩阵中对应坐标的值(持续更新,评论区可以补充)

python: 使用Jax已知若干坐标,提取二维矩阵中对应坐标的值 前言直接上代码 前言 自用,刚开始接触可能顺序会比较乱。 直接上代码 import jax.numpy as jnp from jax import jitjit def _extractValues(matrix, positions): values matrix[pos…

Vue事件处理之v-on

1. 使用及定义 定义方法 function 方法名称(接受的event或是什么都不写) {//不管方法后括号内写与不写event,都可以接受到方法内表达式 }//定义一个接受参数的方法,此时也会在传入event function 方法名称(传入参数) {//可接受传入参数与event方法内表达式 } //定义一个接受参…

说一下 JVM 有哪些垃圾回收器?

如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。下图展示了7种作用于不同分代的收集器,其中用于回收新生代的收集器包括Serial、ParNew、Parallel Scavenge,回收老年代的收集器包括SerialOld、Parallel Old、C…

34.云原生之devops集成istio

云原生专栏大纲 文章目录 什么样的项目适合上istio参考bookinfo中reviews服务资源DeploymentServiceGatewayVirtualServiceDestinationRule kustomize资源清单 经过前边的学习我们已经知道istio官方bookinfo应用的部署及流量治理。我们自己的项目cicd发布后如何使用Istio呢&am…

恒创科技:香港服务器和香港云服务器哪个好啊?

"香港服务器"和"香港云服务器",是两种不同的香港区域的服务器,免备案,都有各自的优势和适用场景,取决于您的需求和预算。以下是它们的一些区别和特点: 香港服务器: 物理服务器&#xf…

第2.5章 StarRocks表设计——行列混存表

注:本篇文章阐述的是StarRocks- 3.2.3版本的行列混存表 一、概述 1.1 背景 StarRocks 基于列存格式引擎构建,在高并发场景,用户希望从系统中获取整行数据。当表宽时,列存格式将放大随机IO和读写。自3.2.3开始,StarRo…

Java/Python/Go不同开发语言基础数据操作总结-基础篇

Java/Python/Go不同开发语言基础数据操作总结-字符篇 1. Java1.1 字符串操作1.1.1 构建String1.1.2 String拆分转列表1.1.4 列表拼接成String1.1.4 寻找第一个匹配的子字符串1.1.5 判断2个字符串是否相同 2. Go2.1 字符串操作2.1.1 构建String2.1.2 String拆分转列表2.1.3 列表…

(delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)

5.5 什么是指针? ​ 指针是 Object Pascal 语言的另一种基本数据类型。一些面向对象的语言在很大程度上隐藏了指针这种强大但危险的语言结构,而 Object Pascal 则允许程序员在需要时使用指针(一般情况下并不经常使用)。 ​ 那么…

密码算法简单整理

密码组成 国外的密码算法: DES、3DES、AES、SHA1、SHA2、SHA3、DSA、RSA、RC4等 高危密码算法: MD5、DES、RSA1024以下、SSH1.0、SSL3.0以下、SHA1等 密码算法通常可分为三大类: 对称密码算法 非对称密码算法 密码杂凑算法 1.对称密码算法&am…

LeetCode 1637.两点之间不包含任何点的最宽垂直区域

给你 n 个二维平面上的点 points ,其中 points[i] [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。 垂直区域 的定义是固定宽度,而 y 轴上无限延伸的一块区域(也就是高度为无穷大)。 最宽垂直区…

udp服务器【Linux网络编程】

目录 一、UDP服务器 1、创建套接字 2、绑定套接字 3、运行 1)读取数据 2)发送数据 二、UDP客户端 创建套接字: 客户端不用手动bind 收发数据 处理消息和网络通信解耦 三、应用场景 1、服务端执行命令 2、Windows上的客户端 3…

掌控互联网脉络:深入解析边界网关协议(BGP)的力量与挑战

BGP简介 边界网关协议(Border Gateway Protocol,BGP)是互联网上最重要的路由协议之一,负责在不同自治系统(AS)之间传播路由信息。BGP使得互联网中的不同网络可以互相通信,支持互联网的规模化扩…

2278. 企鹅游行(最大流,拆点)

活动 - AcWing 在南极附近的某个地方,一些企鹅正站在一些浮冰上。 作为群居动物,企鹅们喜欢聚在一起,因此,它们想在同一块浮冰上会合。 企鹅们不想淋湿自己,所以它们只能利用自己有限的跳跃能力,在一块块…

UnityWebGL 设置全屏

这是Unity导出Web默认打开的页面尺寸 修改后效果 修改 index.html 文件 1.div元素的id属性值为"unity-container",宽度和高度都设置为100%,意味着该div元素将占据整个父容器的空间。canvas元素的id属性值为"unity-canvas"&#xff…

Llama中文大模型-模型部署

​​​​​​选择学习路径 快速上手-使用Anaconda 第 0 步:前提条件 确保安装了 Python 3.10 以上版本。 第 1 步:准备环境 如需设置环境,安装所需要的软件包,运行下面的命令。 git clone https://github.com/LlamaFamily/Ll…

论文阅读——SimpleClick

SimpleClick: Interactive Image Segmentation with Simple Vision Transformers 模型直接在VIT上增加交互是分割 用VIT MAE方法训练的预训练权重 用交互式分割方法微调,微调流程: 1、在当前分割自动模拟点击,没有人为提供的点击 受到RITM启发…

uni-app nvue vue3 setup中实现加载webview,解决nvue中获取不到webview实例的问题

注意下面的方法只能在app端使用, let wv plus.webview.create("","custom-webview",{plusrequire:"none", uni-app: none, width: 300,height:400,top:uni.getSystemInfoSync().statusBarHeight44 }) wv.loadURL("https://ww…

1003: 【C1】【一维数组】【入门】统计

题目描述 给出n个整数和k&#xff0c;统计其中有多少个整数和k相等。 输入 第一行为1个整数 n &#xff08;1 < n < 1000 &#xff09;&#xff0c;整数的个数。 之后 的n 行&#xff0c;每行1个整数。 最后一行&#xff0c;1个整数k。 输出 一个整数&#xff0c;表…