Redis 主从同步

news2024/11/24 7:27:58

主从同步

很多企业没有使用Redis的集群,但是至少都做了主从。有了主从,当master挂掉的时候,运维让从库过来接管,服务就可以继续,否则master需要经过数据恢复和重启的过程,可能会拖很长时间,影响业务持续服务。

CAP原理——现代分布式理论基石

  • C-Consistent,一致性
  • A-Availability,可用性
  • P-Partition tolerance 分区容错性

一句话概括CAP原理:在网络分区发生时,一致性和可用性难两全

分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的,这意味着必然会用网络断开的风险,这个网络断开的场景就叫【网络分区】。

在网络分区发生时,两个分布式节点之间无法进行通信,我们对一个节点进行修改操作无法同步到另一个节点,所以数据的【一致性】将无法满足。因为 两个分布式节点数据不再保持一致,除非我们牺牲【可用性】,也就是暂停分布式节点服务,在网络分区发生时,不再提供修改数据的功能,直到网络状况完全恢复再继续对外提供服务。

BASE理论

BASE理论是分布式系统设计中的另一个重要概念,他的核心是,在分布式环境中,完全一致性往往难以实现,因此可以采用柔性的一致性模型来提高系统的可用性和扩展性

  • 基本可用(Basically Available):系统在分布式环境中可能会出现部分故障,但保证核心功能可用,尽可能避免全面崩溃。

  • 软状态(Soft State):系统的状态不需要时刻保持一致,允许存在中间状态,最终通过异步的方式达到一致性。

  • 最终一致性(Eventually Consistent):系统保证在没有新的更新的情况下,最终所有的复制数据会达到一致的状态。

Redis的最终一致即Base理论

Redis的主从数据是异步同步的,所以分布式的Redis系统并不满足【一致性】要求。当客户端在Redis的主节点修改了数据后,立即返回,即使在主从网络断开的情况下,主节点依旧可以正常对外提供服务,所以Redis满足【可用性】

Redis保证【最终一致性】,从节点会努力追赶主节点,最终从节点的状态会和主节点的状态保持一致。如果网络断开了,主从节点的数据将会出现大量不一致。一旦网络恢复,从节点会采取多种策略努力追赶上落后的数据,继续尽力保持和主节点的一致。

主从同步

Redis同步支持主从同步和从从同步,从从同步是Redis后续版本增加的功能,为了减轻主库的同步负担。
在这里插入图片描述

增量同步

Redis同步的是指令流,主节点会将那些对自己的状态产生修改性影响的指令记录在本地的内存buffer中,然后异步将buffer中的指令同步到从节点,从节点一边执行同步的指令流来达到和主节点一样的状态,一边向主节点反馈自己同步到哪里了(偏移量)

因为内存的buffer是有限的,所以Redis主库不能将所有的指令都记录在内存buffer中。Redis的复制内存buffer是一个定长的环形数组,如果数组内容满了,就会从头开始覆盖前面的内容

如果因为网络状况不好,从节点在短时间内无法和主节点进行同步,那么当网络状况恢复时,Redis的主节点中那些没有同步的指令在buffer中有可能已经被后续的指令覆盖掉了,从节点将无法直接通过指令流来进行同步,这个时候就需要用到更加复杂的同步机制——快照同步。

快照同步

快照同步是一个非常耗费资源的操作,他 1. 首先需要在主库上进行一次bgsave将当前内存的数据全部快照到磁盘文件2.然后再将快照文件的内容全部传送到从节点3. 从节点将快照接收完毕后,立即执行一次全量加载,加载之前先要将当前内存的数据清空。加载完毕后通知主节点继续进行增量同步

在整个快照同步进行的过程中,主节点的复制buffer还在不停的往前移动,如果快照同步的时间过长或者复制buffer太小,都会导致同步期间的增量指令在buffer中被覆盖,这样就会导致快照同步完成后无法进行增量复制,然后会再次发起快照同步,如此极有可能会陷入快照同步的死循环。
在这里插入图片描述
所以, 务必配置一个合适的复制buffer大小参数,避免快照复制的死循环

增加从节点

当从节点刚刚加入集群时,需要先进行一次快照同步,同步完成后在继续进行增量同步。

无盘复制

主节点在进行快照同步时,会进行很重的IO文件操作,特别是对于非SSD磁盘存储时,快照会对系统的负载产生较大影响。特别是 当系统正在进行AOF的fsync操作时如果发生快照,fsync将会被推迟执行,这就会严重影响主节点的服务效率

Redis的无盘复制是一种优化主从复制过程的技术,旨在减少主节点在进行复制时对磁盘的依赖,从而提高复制速度并减轻主节点磁盘IO压力。

工作原理

  • 在无盘复制模式下,Redis主节点不会像传统复制那样先将数据保存为RDB文件到本地磁盘,然后再由从节点下载该文件。相反,主节点会直接在内存中创建RDB文件,并通过网络socket直接将RDB数据流发送到从节点,整个过程绕过了磁盘操作。
  • 这个过程涉及主节点创建一个子进程,该子进程负责将内存中的数据序列化并通过网络发送,而无需写入磁盘。

wait指令

Redis的复制是异步进行的,wait指令可以让异步复制变为同步复制,确保系统的强一致性(不严格)。

> set key value 
OK
> wait 1 0 
(integer) 1

wait提供两个参数,第一个参数是从库数量N,第二个参数是时间t,以毫秒为单位。他表示等待wait指令之前的所有写操作同步到N个从库,最多等待t时间,如果t为0,表示无限等待直到N个从库同步达到一致

假设此时出现了网络分区,wait指令第二个参数时间t=0,主从同步无法进行,wait指令会永远阻塞,Redis服务器将丧失可用性。

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

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

相关文章

Ubuntu 24.04安装zabbix7.0.0图形中文乱码

当zabbix安装完成后,设置中文界面时,打开图形,中文内容会显示方框乱码,是因为服务器字体中没有相关的中文字体,需要更换。 1、找到中文字体,可以在网络上下载《得意黑》开源字体,也可以在windo…

AI人工智能产品经理,就该这么学!

前言 想入行AI人工智能产品经理,该如何学习呢? 随时AI的兴起,AI产品经理开始爆火,很多功能性产品经理想转行做AI产品经理。转行的原因,这个仁者见仁智者见智。唯一的共同点就是,大家都看好AI行业的发展前景…

【Spine学习14】之 人物死亡动作 思路总结

其实大致过程跟攻击那个流程一样了 没什么特别的 就只是K帧不一样: 记录一下,姿势参考就好 0s还是跟攻击一样的站立姿势 10s帧 22s帧 40s帧 不同的是把角色倒地时间延长了许多 这样看起来更合适一点 剑和盾在人物死亡的时候或脱离手心 移动开一些距离…

【Linux安装Conda环境的详细教程】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

XTR115的一些感悟

今天花了些时间看了下XTR115的资料,虽然之前经常用,但是电路里面的细节一直没有去深究。1、XTR115的最大电流是32mA.当环路电流接近32 mA时能自动限流,这个在手册里有的。我在想XTR115坏了是什么情况。以前遇到过好多个XTR115损坏的情况&…

科研——BIBM论文修改和提交

文章目录 引言投递流程Latex翻译流程latex模板使用bib文件正文修改 反馈时间线等待审稿结果 引言 第一轮投递快结束了,这里得加快进度,二十号截至,这里得在截至之前投一下,这里翻译整理一下投递的流程 投递流程 投递链接论文是…

梅施云CRM客户关系管理系统-新一代智能营销CRM客户关系系统

首先了解一下什么是CRM客户关系管理系统? CRM系统是客户关系管理系统的缩写。它是一种用于帮助企业有效管理与客户关系相关的信息、活动和数据的软件工具或平台,通过对大量客户信息的收集、分析和整理,来管理客户关系、提高客户满意度、增强客户忠诚度…

四十九、openlayers官网示例Immediate Rendering (Geographic)——在地图上绘制星空动画效果

官网demo地址&#xff1a; Immediate Rendering (Geographic) 首先先创建1000个随机点&#xff0c;创建点对象。 const n 1000;const geometries new Array(n);for (let i 0; i < n; i) {const lon 360 * Math.random() - 180;const lat 180 * Math.random() - 90;ge…

【医学图像处理】从ADNI中下载样本的MMSE数据

MMSE是什么&#xff1f; 简易精神状态检查&#xff08;MMSE&#xff0c;Mini-Mental State Examination&#xff09;是一种广泛使用的认知功能评估工具。它通常用于临床和研究环境中筛查痴呆症及评估其严重程度。MMSE通过考察患者的多种认知功能来进行评估&#xff0c;包括算术…

《算法设计与分析》第五六章:回溯法与分支限界法

文章目录 回溯法分支限界法一、本章作业1.活动安排问题2.旅行商问题3.单源最短路径4.任务分配问题 二、算法积累1.回溯法求解01背包问题2.回溯法求解最大团问题3.回溯法求解n皇后问题4.回溯法求解地图着色5.回溯法求解哈密尔顿图6.回溯法求活动安排7.分支限界法求01背包问题8.分…

模拟原神圣遗物系统-小森设计项目,需求分析

需求分析 我操控某个角色的圣遗物时发现&#xff0c;一开始玩啥也不懂慢慢了解&#xff0c;今天才想起要不做一个 &#xff0c;然后开始想需求 跟Ai聊技术 聊着聊着 发现圣遗物 这个东西有点意思 本来今天打算写一下数据库 的外键想起了一些高兴的事情&#xff08;美人鱼&#…

超酷的数学神器2024最新破解版Mathtype7下载!

嗨&#xff0c;亲爱的朋友们&#xff01;&#x1f44b; 今天我要给大家分享一个超酷的数学神器——最新破解版Mathtype 7&#xff01;&#x1f389; 如果你像我一样&#xff0c;经常需要处理复杂的公式和文档&#xff0c;那么这个工具绝对是你的福音&#xff01;&#x1f4da;&…

大小鼠足底机械刺痛仪——可移动手持随时刺随时记录

简单介绍&#xff1a; 大小鼠足底机械刺痛仪主要用来评估机械痛&#xff08;阈值&#xff09;&#xff0c; 可用来检测所有的感官阈痛测试。配置了探针。能准确检测并能记录痛阈的仪器。操作方便&#xff0c;设计紧凑。 实验简便&#xff1a;使用时&#xff0c;把探针接触实验…

【C++】循环、控制流语句、

8、循环&#xff08;loops&#xff09;&#xff08;1&#xff09;for loops for循环非常灵活&#xff0c;可以做很多事情。上图红框框出来的代码块就是一个for循环。 for是关键字 for后面内容分为三部分&#xff0c;每部分用分号&#xff1b;隔开 第一部分A是变量的声明&…

小白如何重装系统win10?电脑一键重装系统傻瓜式操作!超详细步骤!

随着电脑的广泛应用&#xff0c;给笔记本/台式电脑系统重装已成为一项基本技能。对于电脑新手而言&#xff0c;如何重装Win10系统&#xff0c;或者更高版本的Win11系统可能是一个巨大的挑战。如果对电脑重装系统刚好有需要了解的小伙伴&#xff0c;不妨看看下面的干货分享。本文…

Spring源码-xxxAware实现类和BeanPostProcessor接口调用过程

xxxAware实现类作用 以ApplicationContextAware接口为例 ApplicationContextAware的作用是可以方便获取Spring容器ApplicationContext&#xff0c;从而可以获取容器内的Bean package org.springframework.context;import org.springframework.beans.BeansException; import or…

百度一下首页制作(HTML+CSS)

部分代码展示&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>百度一下&#xff0c;你就知道</title><style type"text/css">/*清除元素默认性质*/body { margin: 0;padding: 0;list-…

白酒:酒文化的教育价值与实践

酒文化作为中国传统文化的重要组成部分&#xff0c;具有丰富的教育价值。云仓酒庄的豪迈白酒作为酒文化的品牌之一&#xff0c;在传承与发展中不断挖掘和发挥酒文化的教育价值。 首先&#xff0c;豪迈白酒有责任传承丰富的历史文化知识。从酒的起源、酿造技艺、酒器文化到酒礼酒…

NoMaD: Goal Masked Diffusion Policies for Navigation and Exploration

引言 机器人学习的背景和挑战 本文的研究重点 现有方法的局限性 本文的创新点 相关工作 事先准备 视觉目标条件策略 ViNT在目标条件导航中表现出最先进的性能&#xff0c;但它不能执行无方向探索&#xff0c;需要外部的子目标建议机制。Nomad扩展了Vint&#xff0c;同时支持目…

【PyQt5】一文向您详细介绍 QHBoxLayout() 的作用

【PyQt5】一文向您详细介绍 QHBoxLayout() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&a…