微服务框架 SpringCloud微服务架构 分布式缓存 41 Redis 持久化 41.2 RDB 持久化【底层原理】

news2024/12/23 5:10:22

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

分布式缓存

文章目录

      • 微服务框架
      • 分布式缓存
      • 41 Redis 持久化
        • 41.2 RDB 持久化【底层原理】
          • 41.2.1 RDB
          • 41.2.2 总结

41 Redis 持久化

41.2 RDB 持久化【底层原理】

41.2.1 RDB

上一节课中已经实现了当满足一定条件时就去触发bgsave,完成异步的持久化

【开启子进程】bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。

因为是异步的,所以这个操作基本上对 主进程0 阻塞

【举个栗子】

首先有一个物理内存【粗略理解 → 计算机中的内存条】

在这里插入图片描述

然后有一个主进程,它要实现对数据的读写,肯定需要到内存中实现操作,

在这里插入图片描述

但是在Linux 系统中,所有的进程都没有办法直接操作物理内存,而是由操作系统给每一个进程分配一个虚拟内存,所以主进程就只能操作虚拟内存

这时操作系统会维护一个物理内存 与虚拟内存之间的映射关系表,我们称之为 页表

在这里插入图片描述

所以现在的情况就是,主进程操作虚拟内存,虚拟内存基于页表的映射关系,到物理内存真正的存储位置,由此实现对物理内存的数据的读写

而我们执行fork 的时候,会去创建一个子进程

在这里插入图片描述

fork 并不是把内存数据做拷贝,它仅仅是对 页表做一个拷贝

在这里插入图片描述

即把这个映射关系拷贝给子进程,有了这个页表,在子进程操作虚拟内存时,就也可以通过页表映射到相同的物理内存区域

在这里插入图片描述

这样就实现了子进程和主进程 内存空间的共享【这样就无须拷贝内存数据,速度嘎嘎提升】

然后子进程就可以去读取数据了,并将其写入磁盘的文件中

在这里插入图片描述

其实到这儿就是异步持久化的实现

fork采用的是copy-on-write技术:【为了避免主进程在写、子进程又同时在读,产生冲突问题甚至于脏数据】

  • 当主进程执行读操作时,访问共享内存;

    在这里插入图片描述

  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作。

    在这里插入图片描述

这就是copy-on-write 的技术

每一次只要有写,就去拷贝。

41.2.2 总结

RDB方式bgsave的基本流程?

  • fork主进程得到一个子进程,共享内存空间

  • 子进程读取内存数据并写入新的RDB文件

  • 用新RDB文件替换旧的RDB文件。

RDB会在什么时候执行?save 60 1000代表什么含义?

  • 默认是服务停止时。
  • 代表60秒内至少执行1000次修改则触发RDB

RDB的缺点?

  • RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
  • fork子进程、压缩、写出RDB文件都比较耗时

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

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

相关文章

【IDEA】解决IDEA插件使用Lombok找不到符号问题

1.概述 今天合并了有冲突的代码,合并完毕后,发现运行的时候找不到符号。类似如下报错 java: 找不到符号* 符号: 方法 setData(java.lang.String)* 位置: 类型为com.fastjson.demo.lombok.

Vue渲染器(三):简单diff算法

渲染器(三):简单diff算法 我们将介绍渲染器的核心Diff算法。简单来说就是当新旧vnode的子节点都是一组节点时,为了以最小的性能开销完成更新操作,需要比较两组子节点。 1.减少DOM操作的性能开销: 核心Di…

第46篇 进阶(六) 国际化

导语 在第2篇中讲述如何显示中文时,曾提到使用QTextCodec和tr()的方式直接显示中文,其实这只是一种临时的方法,方便我们快速完成程序,显示效果。当真正要发布一个程序时,最好的方式是在程序中使用英文字符串&#xff…

四、函数基础、函数种类、形实参和映射关系

四、函数基础、函数种类、形实参和映射关系 编程基本原则:高内聚、低耦合。 我总结: 模块自身,要求高内聚:模块中代码相关性变强,代码紧密联系程度变高,希望它能独立完成一个功能。模块之间,…

【20221213】【每日一题】零钱兑换II

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。 …

新课程导学杂志新课程导学杂志社新课程导学编辑部2022年第30期目录

前沿《新课程导学》投稿:cn7kantougao163.com 贵州四条线路入选“稻花香里说丰年”全国乡村旅游精品线路 邓小青; 1 基地 梯云村落,晒秋人家——用绚烂色调谱写秋意之诗 邓小青; 2-9 分享 走进“那”文化回归稻香梦聆听丰收声——2022年顶蛳…

Redis 7 新特性之 自定义Functions

Redis 7 新特性之 自定义Functions Redis Functions(函数)是用于管理服务端执行代码的API。在Redis 7中出现,旨在取代之前版本的EVAL函数,是Redis 7新特性之一。 Eval 脚本的缺点 Redis 7之前的版本通过Eval执行脚本&#xff0…

流媒体协议介绍(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL) /SDP)

流媒体协议介绍(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL) /SDP) 一、RTP:实时传输协议(Real-time Transport Protocol) RTP是一种基于包的传输协议,它用来传输实时数据。在网络上传输数据包的延迟…

艾美捷CD8α体内抗体参数说明化学性质

CD8a(Ly 2.2)存在于大多数胸腺细胞和包括大多数T抑制/细胞毒性细胞的成熟T淋巴细胞亚群的表面。CD8通过与T细胞受体复合物和蛋白酪氨酸激酶lck的结合参与T细胞活化。 艾美捷CD8α体内抗体基本参数: 中文名称:抗小鼠CD8a体内抗体-…

Kafka极客 - 15 重设消费者位移 Offset

文章目录1. 为什么要重设消费者组位移?2. 重设位移策略3. 消费者 API 方式设置4. 命令行方式设置1. 为什么要重设消费者组位移? 我们知道,Kafka 和传统的消息引擎在设计上是有很大区别的,其中一个比较显著的区别就是,…

怎么看xray发了那些数据包

怎么看xray发了那些数据包。版本说明:Xray 下载地址:https://github.com/chaitin/xray/releases 使用环境:windows、linux、macos皆可 工具说明:Xray扫描器是一款功能强大的安全评估工具。支持主动、被动多种扫描方式&#xff…

UNIAPP实战项目笔记51 登录用户名和密码输入框的数据验证功能

UNIAPP实战项目笔记51 登录账号用户名和密码输入框的数据验证功能 实际案例图片 账号验证 密码验证 登录成功跳转 显示登录和注册页面布局 账号密码的验证功能和登录验证提交 具体内容图片自己替换哈,随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式…

基于PHP和MySQL的新闻发布系统

关于世界杯⚽️ 国际足联世界杯(FIFA World Cup),简称“世界杯”,是由全世界国家级别球队参与,象征足球界最高荣誉,并具有最大知名度和影响力的足球赛事。世界杯全球电视转播观众超过35亿 。世界杯每四年举…

【设计模式】简单工厂模式描述总结

简单工厂模式 定义:定义一个创建对象的接口,让子类决定实例化哪一个类。 类型:创建型模式 介绍: 在简单工厂模式中定义一个抽象产品类,抽象产品类声明公共的特性及属性,具体产品类继承抽象产品类后去实…

Educational Codeforces Round 121 (Rated for Div. 2) C. Monsters And Spells

翻译: Monocarp又在玩电脑游戏了。他是个巫师学徒,只会一个咒语。幸运的是,这个法术可以伤害怪物。 他目前所在的关卡包含𝑛个怪物。他们中的𝑖-th在关卡开始后𝑘𝑖秒出现,并拥有ℎ…

Java石头剪刀布

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

【iMessage苹果源码家庭推】tils扩大软件安装大概释放事变是由程序员筑造的,很轻易发生MemoryLeak控制

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

[附源码]计算机毕业设计的小区宠物管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

小侃设计模式(十七)-中介者模式

1.概述 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性,这种模式提供了一个中介类,来封装一组对象之间的交互,它将对象之间的交互委派给中介对象交互,避免了对象之间的直接交互。中…

Vue2基础总结

知识点学了太多还是需要总结复习,否则后面会因为零碎的知识点而感到繁杂,那么今天我来总结一下vue相关的知识点,新学习vue的朋友也可以把这当做一个细致总结: 1.Vue是什么(重点): 对于Vue的总…