Redis进阶底层原理-主从复制

Redis的主从节点都会记录对方的信息,核心还包括ReplicationID 和 offset ,

ReplicationID : 主从节点实例的ID ,redis内部就是通过这个id去识别主从节点。
offset数据同步偏移量,也就是从节点每次从主节点同步数据后记录的数值,用来标记已经同步到哪个地方了。一般offset是从小到大增长的,增长的大小就是获取数据的字节数。比如从A首次同步主B的数据,则一开始offset为-1,表示未同步数据。在一次同步完后,同数据未1000字节,则主节点和从节点都会记录当前偏移量,作用:实现部分数据同步,以后作为后续集群中选举过程中一个门槛。

Redis数据同步是一个异步的过程,所以不能保证数据强一致性。
在老版本中,主从复制在第一次或者断线重连后,只能进程全量数据同步SYNC,但是在新版本中,从节点断线重连后可以进行增量数据同步(这个指的是断线重连之后)

主从复制数据同步原理-全量复制

全量复制指主服务器将全量的RBD数据复制给从的过程。

什么情况下会进行全量复制?
1、从首次进行数据同步过程,在老版本中因为不支持部分复制,所以一旦从机启动就会进行全量同步。
2、在新版本中支持了部分同步,所以在从机断线从重启后会根据offset偏移量来判断是否全量同步。

全量复制原理以及怎么保证新增数据的一致性?

 当从节点与主节点建立关系后,
1、从节点会发送psync要求数据复制同步,此时传输过去的offset为-1,代表全量复制。
2、主节点会接受同步请求,并同步给从ID和offset
3、主中主线程会fork一个子进程开始RDB操作,并通过管道技术,将RBD传输给主线程。
4、主线程将RBD文件传输给子进程。
5、在同步过程中,如果有新的数据产生,则主节点会将数据写入 复制缓冲区(输出缓冲区的一种),在完成RBD传输后,会将缓冲区中的数据同步给从,来保证数据一致性

注意:复制缓冲区是针对客户端的缓冲区,也就是每有一个客户端连接就会有这样的一个缓冲区。用来接受客户端输出数据,如果超过缓冲区,就会断开客户端连接(后面详细说)通过 client-output-buffer-limit replica 256mb 64mb 60

 主从复制数据同步原理-增量复制(部分数据同步)

      这里的增量复制指的是从节点发生断线重连后,进行的增量数据同步,在老版本因为不支持增量数据同步,所以从节点重连后,依然会进行全量数据的同步,如果RBD很大的情况下,需要更多的开销,比如fork开销更大。所以在后续版本中redis支持从节点断线重连后进行增量数据复制过程。
一般从节点断线场景:
1、比如主从同步超时:repl-timeout
2、输出缓冲区溢出 output-limit : 1、当存在非常大的key 。2、读取频率非常高时。
3、输入缓冲区溢出 :  1、当存在非常大的key 。2、写入频率非常高时。

增量复制原理

在开启主从复制后,在进行全量数据同步的过程中,同时也会将数据写入到复制积压缓冲区(主从都是会维护自身的一个offset的)
1、当从节点重连后,会发送psync并带上id和offset给主,此时offset就是上次断线前同步的偏移量。
2、主节点会通过这个偏移量判断是否在复制积压缓冲区中,
     如果存在:则将缓冲区中剩余的内容同步给从,
     如果没有:则表示当前偏移量已经很老了,则需要全量同步。


ps:复制积压缓冲区是一个环形缓冲区,大小为1mb,它是所有slave共享的缓冲区,所以如果一个从断线后,在此过程中发生了数据同步,则新的数据可能会覆盖环形缓冲区的数据,导致断线的slave偏移量在缓冲区没有,此时就需要全量复制。通过:repl-backlog-size配置缓冲区大小,默认是1m

 原图下载:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬中断、软中断详解

文章目录 什么是中断? 什么是计算机的中断? 什么叫硬中断、什么叫软中断? 怎么查看硬中断、软中断 查看硬中断的运行情况 cat /proc/interrupts 查看软中断的运行情况 cat /proc/softirqs 怎么排查软中断过高的问题? 软中断注意事…

noSQL的小练习

目录 Redis: 1、 string类型数据的命令操作: 2、 list类型数据的命令操作: 3、 hash类型数据的命令操作: MongoDB: 1. 创建一个数据库 名字grade 2. 数据库中创建一个集合名字 class 3. 集合中插入若…

接入端口与中继端口

交换机端口是支持 IT 的基本组件,可实现网络通信。这些有线硬件设备负责连接并允许在不同设备和连接到其端口的网络部分之间进行数据传输。由于网络管理员在确保网络连接和可用性方面发挥着关键作用,因此网络管理员必须清楚地了解、映射和查看其网络交换…

从小白到大神之路之学习运维第64天--------Zabbix监控mysql、ftp服务以及自定义配置

第三阶段基础 时 间:2023年7月19日 参加人:全班人员 内 容: Zabbix监控mysql、ftp服务以及自定义 目录 一、Zabbix监控mysql数据库 二、Zabbix监控ftp服务 三、Zabbix自定义监控项 整体zabbix搭建完成,server端huyang1监…

SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文,查询明文

场景 为防止数据泄露,需要在插入等操作时将某表的字段在数据库中加密存储,在需要查询使用时明文显示。 Sharding Sphere ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈, 它由Sharding-JDBC、Sharding-Proxy和Shardi…

确认应答机制与超时重发机制【TCP原理(笔记一)】

文章目录 通过序列号与确认应答提高可靠性正常的数据传输数据包丢失的情况确认应答丢失的情况发送的数据 重发超时如何确定 通过序列号与确认应答提高可靠性 在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做…

iOS 中支持点击网页scheme超链接打开其他app

网页内容如图所示 思路,点击网页中一个href 超链接的时候,会执行 decidePolicyForNavigationAction 方法,我们在改方法中截获URL, 判断如果是URL scheme类型的,则执行 [[UIApplication sharedApplication]openURL:URL…

Tabby - 本地化AI代码自动补全 - Windows10

参考: https://github.com/TabbyML/tabby 为什么选择Tabby 已经有好几款类似强劲的代码补全工具,如GitHub Copilot,Codeium等,为什么还要选择Tabby? Tabby除了和其他工具一样支持联网直接使用之外,还支持本地化部…

椒图——靶场模拟

先查看ip,10.12.13.232模拟的外网ip,其他的模拟内网ip,服务里面搭建好的漏洞环境。 #第一个测试项目,web风险发现 新建,下发任务,点威胁检测,webshell,点扫描任务,点新…

Star History 月度开源精选|2023 年 6 月

上一期 Star History 月度精选是写给市场、运营人员的,而这一期回归到 DevTools 类别,我们六月发现了好一些开发者可以用的不错工具! AI Getting Started 还记得 Supabase “Build in a weekend” 的广告词吗!AI Getting Started…

消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序

目录 基本概念 MQ 的优势 1.应用解耦 2.异步提速 3.削峰填谷 MQ 的劣势 使用mq的条件 常见MQ产品 RabbitMQ简介 RabbitMQ的六种工作模式 JMS RabbitMQ安装和配置。 RabbitMQ控制台使用。 RabbitMQ快速入门——生产者 需求: RabbitMQ快速入门——消费者 小结 基本概…

S32 Design Studio for ARM(S32DS)下载和安装

1. S32 Design Studio for ARM 介绍 S32 Design Studio for ARM(下面简称S32DS),是 NXP 官方在 2014 年官方推出的,专门面向 S32K、KEA、MAC57D54H等系列微控制器的集成开发环境。 S32DS是由Eclipse和一些插件集成而来的开发平台…

MYSQL数据库-数据库的学习

MYSQL数据库-数据库的学习 MYSQL数据库一、数据库的基本概念二、常见的数据库三、MySQL数据库四、SQL操作五、SQL高级操作六、SQL函数(SQL 拥有很多可用于计数和计算的内建函数) MYSQL数据库 一、数据库的基本概念 1、数据库的英文单词:DataBase 简称 : DB 2、什么…

2023年经典【自动化面试题】附答案

一、请描述一下自动化测试流程? 自动化测试流程一般可以分为以下七步: 编写自动化测试计划; 设计自动化测试用例; 编写自动化测试框架和脚本; 调试并维护脚本; 无人值守测试; 后期脚本维…

MySQL中这14个小玩意,让人眼前一亮!!!

前言 我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。 1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中…

uniapp调接口出现跨域问题。

今天在写uniapp项目的时候,使用在线模拟接口的时候,出现跨域问题。 【问题描述】: ①在内嵌浏览器运行,不会出现跨域问题,好像是内嵌浏览器自动去掉了跨域问题。 ②在外部浏览器调用的时候会出现跨域问题。&#xf…

MIT 6.829 -- L2 The Internetworking Problem

MIT 6.829 -- L2 The Internetworking Problem 前言The Internetworking Problem: Many Different NetworksGateWays互联网设计原则通用性原则健壮性原则互联网缺点互联网协议标准流程 最早的TCP/IP今天的TCP/IP: IPv4地址分片和重组Time-to-live(TTL)Ty…

使用亚马逊(AWS)云服务在S3上实现图片缩放功能(CloudFront/S3[AccessPoint/LambdaAccessPoint])

亚马逊云服务中的S3对象存储功能和国内阿里云的oss对象存储使用基本一致。但是涉及到存储内容处理时,两家有些差别。 比如:对于云存储中的图片资源,阿里云比较人性化对于基本的缩放裁剪功能已经帮我们封装好了,只需要在url地址后…

11. 利用Tomcat服务器配置HTTPS双向认定

文章目录 Tomcat配置HTTPS1.为服务器生成证书2.为客户端生成证书3.让服务器信任客户端证书4.将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:5.查看证书库6.让客户端信任服务器证书7.配置tomcat8.验证 Tomcat配置HTTPS 1.启动cmd控制台&…

PostgreSQL考试难不难 ?

当涉及到PostgreSQL考试的详细难度,以下是一些可能涉及的主题和考点,这些主题在不同的考试中可能有所不同: 1.数据库基础知识:数据库的基本概念、关系型数据库模型、表、字段、主键、外键等。 2.SQL语言:对SQL语言的掌…