主从复制-复制缓冲区与偏移量|学习笔记

简介: 快速学习主从复制-复制缓冲区与偏移量

开发者学堂课程【Redis 入门到精通(进阶篇)主从复制-复制缓冲区与偏移量】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13455


主从复制-复制缓冲区与偏移量

 

目录

复制缓冲区说明

复制缓冲区内部工作原理

复制缓冲区总结

主从服务器复制偏移量 (offset)

 

本章主要讲解复制缓冲区设计的内容及流程

 

一,复制缓冲区说明

1.概念:

复制缓冲区,又名复制积压缓冲区,是一个先进先出 (FIFO)的队列,用于存储服务器执行过的命冷,每次传播命令,master 都会将传播的命令记录下来,并存储在复制缓冲区

2.操作流程解析

(1).主机和多个 slave 进行连接以后,主要要发送命令注意master里通过一个叫做命令传播程序的东西来做这件事,命令来到以后给到 master,然后由这个程序负责向外分发,发给每一个 slave。在这里边有一个问题要注意,如果说某一条线的连接中,它断网了,那么它的对应指令会接收不到为了解决这个问题,于是建立了一个复制缓冲区的概念

(2).当命令来收到以后,除了发过来,还放在这一份。一旦有了这一块儿区域,就不会丢数据。注意,复制缓冲区是一个队列,且是一个先进先出的队列,先进先出意味着能进也能出去,出去的方法是被挤出去的。当这里边容量到达上限的时候,前面的指令就被挤

以下图为流程的图片形式的解释图可供参考

image.png

 

二,复制缓冲区内部工作原理

1.组成

(1).偏移量

(2).字节值

2.工作原理

通过 offset 区分不同的 slave 当前数据传播的差异

以下图为说明内部工作原理的解释图

image.png

三,复制缓冲区总结

1.概念:

复制缓冲区,又名复制积压缓冲区,是一个先进先出 (FIFO)的队列,用于存储服务器执行过的命令,每次传播命令,master 都会将传播的命令记录下来,并存储在复制缓冲区,复制缓冲区默认数据存储空间大小是 1M,由于存储空间大小是固定的,当入队元素的数量大于队列长度时,最先入队的元素会被弹出,而新元素会被放入队列

2. 由来:

每台服务器启动时,如果开启有 AOF 或被连接成为 master节点,即创建复制缓冲区

3. 作用:

用于保存master收到的所有指令(仅影响数据变更的指令,例 set,select)

4. 数据来源:

 master 接收到主客户端的指令时,除了将指令执行,会将该指令存储到缓冲区中

 

四,主从服务器复制偏移量 (offset)

1.概念:

一个数字,描述复制缓冲区中的指令字节位置

2.分类:

(1).master 复制偏移量:记录发送给所有 slave 的指令字节对应的位置(多个)

(2).slave 复制偏移量:记录 slave 接收 master 发送过来的指令字节对应的位置(一个)

3.数据来源:

(1).master 端:发送一次记录一次

(2).slave 端:接收一次记录一次

4.作用:

同步信息,比对 master  slave 的差异,当 slave 断线后,恢复数据使用。

相关文章
|
1月前
|
缓存 前端开发 Java
深入理解 Java 类加载器:双亲委派机制的前世今生与源码解析
本文深入解析Java类加载器与双亲委派机制,从Bootstrap到自定义加载器,剖析loadClass源码,揭示类加载的线程安全、缓存机制与委派逻辑,并探讨SPI、Tomcat、OSGi等场景下打破双亲委派的原理与实践价值。(238字)
286 8
深入理解 Java 类加载器:双亲委派机制的前世今生与源码解析
|
2月前
|
网络协议 Linux 虚拟化
配置VM网络:如何设定静态IP以访问主机IP和互联网
以上就是设定虚拟机网络和静态IP地址的基本步骤。需要注意的是,这些步骤可能会因为虚拟机软件、操作系统以及网络环境的不同而有所差异。在进行设定时,应根据具体情况进行调整。
340 10
|
NoSQL 网络协议 Redis
Redis的主从复制和哨兵模式
本文详细介绍了Redis的主从复制配置、原理(包括全量复制和增量复制)以及如何搭建一主二从的Redis集群,同时还探讨了Redis哨兵模式的概念、配置文件、以及如何配置一主二从三哨兵的Redis哨兵模式,以实现高可用性。
|
Java Maven 开发工具
IDEA使用Spring Initializr流畅的创建springboot项目
IDEA使用Spring Initializr流畅的创建springboot项目
1097 0
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万级数据统计优化实践
【10月更文挑战第21天】 在处理大规模数据集时,传统的单体数据库解决方案往往力不从心。MySQL和Redis的组合提供了一种高效的解决方案,通过将数据库操作与高速缓存相结合,可以显著提升数据处理的性能。本文将分享一次实际的优化案例,探讨如何利用MySQL和Redis共同实现百万级数据统计的优化。
720 9
|
JavaScript 算法 前端开发
基于抽象语法树+diff算法实现Markdown编译器
基于抽象语法树+diff算法实现Markdown编译器
|
数据采集 Web App开发 iOS开发
爬取B站评论:Python技术实现详解
爬取B站评论:Python技术实现详解
|
关系型数据库 数据库 PostgreSQL
PostgreSQL从入门到精通教程 - 第39讲:数据库完全恢复
postgresql技术大讲堂 - 第39讲:数据库完全恢复
445 0
|
Web App开发 开发框架 前端开发
SpringCloud微服务实战——搭建企业级开发框架(三十九):使用Redis分布式锁(Redisson)+自定义注解+AOP实现微服务重复请求控制
通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题,如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后台产生多条重复记录,此时我们需要考虑在后台增加防重设置。
837 53
SpringCloud微服务实战——搭建企业级开发框架(三十九):使用Redis分布式锁(Redisson)+自定义注解+AOP实现微服务重复请求控制
|
Linux 应用服务中间件 网络安全
使用Nginx结合CertBot配置HTTPS协议
Nginx结合CertBot配置HTTPS协议,同时简单介绍cron定时规则
5605 0