当前位置: 首页 > news >正文

Redis高可用

最近离职后还没开始找工作,在找工作前去学习一下Redis高可用方案。

目录

  • Redis高可用
    • 高可用的概念
    • 实现方式
  • 持久化
  • 主从复制
    • 简单结构
    • 优化结构
    • 优缺点
  • 哨兵模式(Sentinel)
    • 哨兵进程的作用
    • 自动故障迁移(Automatic failover)
    • 优缺点
  • 集群
    • 优缺点

Redis高可用

高可用的概念

通过尽量缩短日常维护操作和突发的系统崩溃所导致的停机时间,以提高系统和应用的可用性。

实现方式

Redis高可用的实现方式有:

  1. 持久化
  2. 主从复制
  3. 哨兵
  4. Cluster集群

持久化

通过AOF和RDB实现持久化,服务器宕机后可以快速找回之前的数据,防止大量请求打入数据库,防止服务或系统宕机导致数据丢失。
具体看Redis入门(二)——持久化

主从复制

将一台Redis作为主节点(Master),将上面的数据复制到其他Redis,其他的Redis就是从节点(Slave)。

Master节点提供数据的事务性操作(增删改),Slave只提供读操作。

简单结构

将Slave都挂在Master节点上
在这里插入图片描述
优点

Slave节点与master节点的数据延迟较小

缺点

Slave节点较多时,Master同步一次数据较久

优化结构

为了提高Master同步数据的效率,只在Master下挂一个Slave节点,其他节点挂载到这个Slave节点上。
通过传递完成数据同步,减少Master性能消耗
在这里插入图片描述

优缺点

优点

  • 实现读写分离,降低Master的读数据压力,提高系统性能
  • 配置简单,容易搭建

缺点

  • Master宕机时,无法选择哪台Slave作为新的Master节点,保证不了高可用
  • 写压力都集中到Master节点上

哨兵模式(Sentinel)

基于主从复制,解决Master宕机时不知道选择哪台Slave作为新的Master节点。
对每个节点进行监控,Master宕机时通过投票机制选择新的Master节点,并将其他Slave节点连接到新的Master节点。

哨兵进程的作用

监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
提醒(Notification):当被监控的某个Redis节点出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

自动故障迁移(Automatic failover)

当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作:

  • 将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master;
  • Client试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用现在的Master替换失效Master

优缺点

优点

  • 保证高可用

缺点

  • 中心化集群实现方式,基于主从模式,切换节点时,会发生数据的丢失。
  • 集群里所有节点保存的都是全量数据,浪费内存空间,没有真正实现分布式存储。数据量过大时,主从同步严重影响master的性能。
  • 数据写的操作都集中在master上,仍然没有解决master写数据的压力。

集群

哨兵实现了高可用,但是每个节点存储的都是相同的内容,浪费内存。同时也没有解决master写数据的压力。

集群模式,能自动将数据进行分片,实现分布式储存,每个节点存储不同的数据。

架构如下:
在这里插入图片描述

优缺点

优点

  • 无中心架构;
  • 数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布;
  • 可扩展性:可线性扩展到 1000 多个节点,节点可动态添加或删除;
  • 高可用性:部分节点不可用时,集群仍可用。通过增加 Slave 做 standby 数据副本,能够实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave 到 Master 的角色提升;
  • 降低运维成本,提高系统的扩展性和可用性。

缺点

  • 节点会因为某些原因发生阻塞(阻塞时间大于 cluster-node-timeout),被判断下线,这种failover是没有必要的
  • 数据通过异步复制,不能保证数据一致性
  • 多个业务使用同一个集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况
  • 不支持多数据库空间,单机时可以选择16个数据库,集群只能选择一个数据库,即db0
  • key批量操作限制,如mget、mset,目前只支持相同slot值的key执行批量操作,不同的slot不支持跨slot查询

相关文章:

Redis高可用

最近离职后还没开始找工作,在找工作前去学习一下Redis高可用方案。 目录Redis高可用高可用的概念实现方式持久化主从复制简单结构优化结构优缺点哨兵模式(Sentinel)哨兵进程的作用自动故障迁移(Automatic failover)优缺点集群优缺点Redis高可…...

Hyperledger Fabric 2.2版本环境搭建

前言 部署环境: CentOS7.9 提前安装好以下工具 git客户端golangdockerdocker-composecurl工具 以下是个人使用的版本 git: 2.39.2golang: 1.18.6docker: 23.0.3dockkekr-compose: v2.17.2curl: 7.29.0 官方文档参考链接:跳转链接,不同的版本对应的官…...

macOS Monterey 12.6.5 (21G531) Boot ISO 原版可引导镜像

本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 2023 年 4 月 10 日(北京…...

【软件设计师13】数据库设计

数据库设计 1. 数据库设计过程 2. E-R模型 3. E-R图向关系模型的转换 例如一对一联系,可以将联系单独做为关系模式,也可以存放到任意一个实体中 而一对多要合并只能合并到多这边,不能存放到1 多对多则联系必须单独转成一个关系模式 4. 案…...

SpringMVC的全注解开发

文章目录一、spring-mvc.xml 中组件转化为注解形式二、DispatcherServlet加载核心配置类三、消除web.xml一、spring-mvc.xml 中组件转化为注解形式 跟之前全注解开发思路一致&#xff0c; xml配置文件使用核心配置类替代&#xff0c;xml中的标签使用对应的注解替代 <!-- 组件…...

C# | 导出DataGridView中的数据到Excel、CSV、TXT

C# | 导出DataGridView中的数据到Excel、CSV、TXT 文章目录C# | 导出DataGridView中的数据到Excel、CSV、TXT前言DataGridView数据转存DataTableDataTable转Excel方法一、使用Microsoft.Office.Interop.Excel方法二、使用EPPlus库方法三、使用NPOI库DataTable转CSVDataTable转T…...

新规拉开中国生成式AI“百团大战”序幕?

AI将走向何方&#xff1f; ChatGPT在全球范围掀起的AI热潮正在引发越来越多的讨论&#xff0c;AI该如何管理&#xff1f;AI该如何发展&#xff1f;一系列问题都成为人们热议的焦点。此前&#xff0c;马斯克等海外名人就在网络上呼吁OpenAI暂停ChatGPT的模型训练和迭代&#xf…...

日撸 Java 三百行day31

文章目录day31 整数矩阵及其运算面向对象思想java异常处理java中的getter和setter方法代码day31 整数矩阵及其运算 面向对象思想 结合之前day7和day8面向过程开发&#xff0c;只关注了矩阵加法和矩阵乘法的功能。而day31是面向对象开发&#xff0c;一个矩阵类&#xff0c;在这…...

在线绘制思维导图

思维导图是一种可视化的思维工具&#xff0c;它可以将放射性思考具体化为可视的图像和图表。 思维导图利用图文并重的技巧&#xff0c;把各级主题的关系用相互隶属与相关的层级图表现出来&#xff0c;把主题关键词与图像、颜色等建立记忆链接。 它运用图像和颜色等多种元素&…...

月薪20k的性能测试必备技能:发现性能瓶颈掌握性能调优

背景 当下云计算、大数据盛行的背景下&#xff0c;大并发和大吞吐量的需求已经是摆在企业面前的问题了&#xff0c;其中网络的性能要求尤为关键&#xff0c;除了软件本身需要考虑到性能方面的要求&#xff0c;一些硬件上面的优化也是必不可少的。 作为一名测试工作者&#xf…...

3、Web前端学习规划:CSS - 学习规划系列文章

CSS作为Web前端开发的第2种重要的语言&#xff0c;笔者建议在学了HTML之后进行。CSS主要是对于HTML做一个渲染&#xff0c;其也带了一些语言语法函数&#xff0c;功能也非常强大。 1、 简介&#xff1b; CSS(层叠样式表)是一种用于描述网页样式的语言。它可以控制网页中的字体、…...

城市轨道交通列车时刻表优化问题【最优题解】

文章目录城市轨道交通列车时刻表优化问题思路文章底部城市轨道交通列车时刻表优化问题 最新进度在文章最下方卡片&#xff0c;加入获取思路数据代码论文&#xff1a;2023十三届MathorCup交流 (第一时间在CSDN分享&#xff0c;文章底部) 题目为数据分析类题目。列车时刻表优化…...

常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...

在职场上&#xff0c;你永远想不到什么样的员工会被优化&#xff0c;比如下面这位&#xff1a;常年不卷&#xff0c;按时下班&#xff0c;工作很专业&#xff0c;同事问什么都回答&#xff0c;不扯皮&#xff0c;不拉帮结派&#xff0c;简直是职场清流。在上个月竟然被优化了&a…...

基于改进多目标灰狼优化算法的考虑V2G技术的风、光、荷、储微网多目标日前优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Python 函数、文件与模块

“探索 Python” 这一系列的前几篇文章已为 Python 编程新手介绍了几方面的主题&#xff0c;包括变量、容器对象和复合语句。本文以这些概念为基础&#xff0c;构造一个完整的 Python 程序。引入了 Python 函数和模块&#xff0c;并展示了构建一个 Python 程序、将其存储在文件…...

在Spring Boot微服务使用RedisTemplate操作Redis

记录&#xff1a;400 场景&#xff1a;在Spring Boot微服务使用RedisTemplate操作Redis缓存和队列。 使用ValueOperations操作Redis String字符串&#xff1b;使用ListOperations操作Redis List列表&#xff0c;使用HashOperations操作Redis Hash哈希散列&#xff0c;使用SetO…...

4月软件测试面试太难,吃透这份软件测试面试笔记后,成功跳槽涨薪30K

4 月开始&#xff0c;生活工作渐渐步入正轨&#xff0c;但金三银四却没有往年顺利。昨天跟一位高级架构师的前辈聊天时&#xff0c;聊到今年的面试。有两个感受&#xff0c;一个是今年面邀的次数比往年要低不少&#xff0c;再一个就是很多面试者准备明显不足。不少候选人能力其…...

人人拥有ChatGPT的时代来临了,这次微软很大方!

技术迭代的在一段时间内是均匀发展甚至止步不前的&#xff0c;但在某段时间内会指数级别的爆发。 ChatGPT背后的GPT 3.5训练据说花了几百万美金外加几个月的时间&#xff0c;参数大概有1700多亿。 这对于绝大多数的个人或企业来说绝对是太过昂贵的。 然而&#xff0c;微软&am…...

【C++11】自动类型推导(Type Inference)

C11 中的自动类型推导是通过 auto 关键字实现的。auto 关键字可以用于声明变量&#xff0c;让编译器自动推导变量的类型。具体来说&#xff0c;编译器会根据变量的初始化表达式来推导变量的类型。 例如&#xff0c;下面的代码中&#xff0c;变量 x 的类型会被推导为 int 类型&…...

拐点!智能座舱破局2023

“这是我们看到的整个座舱域控渗透率&#xff0c;2022年是8.28%&#xff0c;主力的搭载车型仍然是30-35万区间。”3月29日&#xff0c;2023年度&#xff08;第五届&#xff09;高工智能汽车市场峰会上&#xff0c;高工智能汽车研究院首发《2022-2025年中国智能汽车产业链市场数…...

别再手动折腾了!CubeMX生成MDK工程后,一键开启STM32F4的FPU和DSP库(附完整配置流程)

解放双手&#xff1a;STM32F4硬件加速全自动配置指南 每次新建工程都要重复配置FPU和DSP库&#xff1f;是时候告别这种低效操作了。本文将带你用CubeMXMDK打造一套零手动干预的完整工作流&#xff0c;让硬件加速功能从工程创建之初就自动就位。 1. 环境准备与工程创建 在开始之…...

Linux命令行玩转CAN总线:像查日志一样用grep分析candump实时数据流

Linux命令行玩转CAN总线&#xff1a;像查日志一样用grep分析candump实时数据流 在Linux系统管理领域&#xff0c;日志分析是每个开发者都熟悉的日常操作。当面对CAN总线这样的专业数据流时&#xff0c;其实可以运用同样的思维——将candump视为持续输出的数据源&#xff0c;用g…...

别光顾着写EXP:复盘BUUCTF warmup_csaw_2016,聊聊PWN题里的‘信息泄露’与安全编程

从CTF漏洞利用到安全编程&#xff1a;深入解析信息泄露与防御实践 引言 在网络安全竞赛和实际系统安全中&#xff0c;信息泄露往往成为攻击者突破防御的第一块敲门砖。2016年CSAW CTF的warmup题目虽然看似简单&#xff0c;却完美展示了这类漏洞的典型模式——程序不仅存在栈溢出…...

Win10混合现实模拟器初体验:除了测试,还能怎么玩?

Win10混合现实模拟器&#xff1a;从测试工具到创意游乐场的5种玩法 当你第一次打开Win10混合现实模拟器&#xff0c;看到那个漂浮的手柄模型和空荡荡的虚拟空间时&#xff0c;是否也产生过"就这&#xff1f;"的疑问&#xff1f;这个被多数教程简单带过的内置工具&…...

如何快速备份微信聊天记录:Mac用户的完整解决方案

如何快速备份微信聊天记录&#xff1a;Mac用户的完整解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾经因为误删重要微信聊天记录而懊恼不已&#xff1f…...

告别命令行恐惧:用FinalShell 4.3.10图形化连接Linux虚拟机(Windows 10环境)

告别命令行恐惧&#xff1a;FinalShell 4.3.10图形化连接Linux虚拟机全指南 对于刚接触Linux系统管理的开发者而言&#xff0c;命令行界面往往像一堵无形的墙。我曾见过不少同事面对闪烁的光标不知所措——直到发现FinalShell这类工具&#xff0c;才真正打开了高效运维的大门。…...

学习第六天,python

元组&#xff08;tuple&#xff09;一、元组的本质与特点核心&#xff1a;不可变性二、元组的创建方式三、元组的访问四、元组的操作五、元组的经典使用场景六、元组的注意事项与陷阱字典&#xff08;dict&#xff09;字典以 key: value 的形式存储数据&#xff0c;通过 key 就…...

【从仿真到硬件】触发器电路的设计、验证与性能优化实战

1. 触发器电路基础与设计仿真 触发器是数字电路中最基础的存储单元&#xff0c;相当于电子世界里的"记忆开关"。我第一次接触触发器时&#xff0c;被它简单却精妙的工作原理深深吸引。想象一下&#xff0c;这就像是一个有记忆功能的电灯开关——不仅能根据当前输入改…...

Vue3后台管理系统终极指南:5个关键问题与V3 Admin Vite解决方案

Vue3后台管理系统终极指南&#xff1a;5个关键问题与V3 Admin Vite解决方案 【免费下载链接】v3-admin-vite ☀️ A crafted Vue3 admin template | Vue Admin | Vue Template | Vue3 Admin | Vue3 Template | Vue 后台 | Vue 模板 | Vue3 后台 | Vue3 模板 项目地址: https:…...

OpenClaw从入门到应用——工具(Tools):技能配置

通过OpenClaw实现副业收入&#xff1a;《OpenClaw赚钱实录&#xff1a;从“养龙虾“到可持续变现的实践指南》 所有与技能相关的配置都位于 ~/.openclaw/openclaw.json 中的 skills 字段下。 {skills: {allowBundled: ["gemini", "peekaboo"],load: {ext…...