文章目录

  • 什么是 WAL 机制
    • WAL 应用场景
    • WAL 磁盘中具象结构
    • WAL 截断
    • WAL 检查点 checkPoint
  • Q&A
  • 附录

  WAL 机制,是个伟大的设计,在不同的系统、组件中,都存在它的身影。
  WAL 的分析了解,也是你在架构设计道路上,必备的技能之一。

  下面来简单唠唠:


什么是 WAL 机制

  WAL 全称为,Write Ahead Log ,译为进行写操作前先写日志。

WAL 应用场景

  那么 WAL 是用来做什么的呢?

  WAL 最早/常出现的场景数据库操作中,解决两个问题。

1、提升数据写磁盘效率。将数据直接随机写的行为,调整为,内存缓存数据之后进行批量 或 有序写。
2、进行数据恢复,提升系统鲁棒性。记录了数据行为信息,重播可复原数据。

WAL 磁盘中具象结构

  在磁盘中,WAL 一般为以下目录结构


  上图包含两个数据文件「000004、000005」、和一个检查点checkpoint.000003。
  每个文件大小一般在128M左右,具体存储数据格式有具体业务决定。


  结合上一篇 普罗米修斯?古希腊泰坦之神?异形?不,新一代企业级监控组件—Prometheus!中提到的 WAL 机制,下面详细讲解一下关于 WAL 结构中各部分的设计。

  在 Prometheus 中,数据写入利用到了 WAL 。TS 数据指标首先写入内存结构「 head 」,之后写入 WAL 中。
  在 head 中数据会按照文件配置规格进行文件拆分,形成不同的 chunk 文件,相应的操作与文件对应,WAL 作为记录数据写入机制,也会形成对应的几个文件,图中可以看到「000001、000002、000003、000004、000005」。
  当 head 中数据规模在 chunkRange 的2/3时「一般默认chunkRange为2h」,就会将chunkRange中的 chunks 进行持久化入磁盘,同时会进行WAL截断。


WAL 截断

  为什么要进行 WAL 截断呢?

  • WAL 是对内存中数据的记录,需要与内存数据保持相似一致。
  • WAL 不可以持续扩张,资源有限且重播的时候没必要。

  在 head 持久化, WAL 进行截断的时候会进行检查点 checkPoint 的建立,完成之后进行截断。


WAL 检查点 checkPoint

  由于在写操作可能是无序的,在文件拆分时,不同的 chunk 可能含有 head 中后面还会用到的数据。比如,在 series 中,相同的 label 是只存储一次的,不同时间到 sample 只会存储 label 的引用,故在 WAL 文件中的数据可能存在拉扯状态。
   checkPoint 会按照 WAL 文件顺序进行便利,删除不在 head 中的 series 的所有 series 记录;删除时间T之前的所有 sample ;删除T之前时间范围内的所有逻辑删除记录。
  如上图中数据结构目录就是,head 的 000001、000002、000003文件已经进行了持久化, WAL 进行了截断,且形成了检查点 checkpoint.000003 。

  在进行重播时,从最后一个检查点开始依次遍历记录(与它关联的最大数字的检查点是最后一个检查点)。对于checkpoint.X,X告诉我们需要从哪个WAL段继续重放,即X + 1。因此,在上面的示例中,在重播checkpoint.000003之后,我们从WAL段000004继续重播。

Q&A

1、在 checkPoint 中为什么要记录最后检查点呢?「000003 为此次 WAL 截断的最后检查点」

  因为创建检查点和 WAL 截断不是原子的。在两者之间可能发生任何事情,所以记录检查点,进行跟踪,防止出现数据重播断片问题。

附录

一天一个小技巧,偷偷超越隔壁老大哥!

欢迎关注收藏,加入群聊【编程技术交流分享Q群717647116】,微信群请私信博主添加!

快速理解 WAL 机制,架构师必备技能!「建议收藏!!」相关推荐

  1. 应用架构、业务架构、技术架构和业务流程图详解「建议收藏」

    应用架构.业务架构.技术架构和业务流程图详解「建议收藏」 应用架构(ApplicationArchitecture)是描述了IT系统功能和技术实现的内容.应用架构分为以下两个不同的层次:企业级的应用架 ...

  2. 安卓sdk开发!阿里面试100%会问到的JVM,架构师必备技能

    接触这一行也有很久了,从开始的实习到带团队,中间接触过很多人,前不久身边刚好有人去面试了阿里,抖音等这些公司还成功的面试上了,现在来分享一下面试前需要准备的知识点 很多人去面试之前,不知道会问到那些知 ...

  3. 互联网架构师必备技能

    一.每个好架构师都是一位出色的程序员 这一点毋庸置疑,如果不是写过N年代码的优秀程序员,一定不是好的架构师."架构师"这是一个听上去比较虚的职位,它的主要价值在于"落地& ...

  4. Android多线程实现方式及并发与同步,架构师必备技能

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rwcQW4s-1620361703648)(//upload-images.jianshu.io/upload_ima ...

  5. 高级前端架构师必备技能(marksheng)

    首先,前端架构师肯定是掌握好基本的前端技术基础的,正所谓一转多长,首先你得先精通一门,其次,掌握前端技术的同时,还要了解前端技术之外的技能.跳出前端这个思维,才能看到的更多.总结起来有以下几点: 跨界 ...

  6. app架构升级,该如何高效实用Kotlin?架构师必备技能

    开头 大家都知道,找工作的时候高薪不好拿,一般人能拿 30k 的 offer 就不错了.据我所知百分之九十的Android开发都在30k以下! 但是在我的群里有一位同学,平时就喜欢研究源码和框架,然后 ...

  7. GitHub标星1w的安卓架构师必备技能,终获offer

    开头 移动应用开发从逐渐开始火爆到如今也有小十年了,大部分的学校还是没有开放专门的课程. 目前市场上的大部分 Android 开发工程师大多数是自学或者是培训出身,用一段时间上手 Android 开发 ...

  8. GitHub标星1w的Java架构师必备技能,Java岗

    一.Spring Cloud微服务概念定义 提起微服务,不得不提 Spring Cloud 全家桶系列,Spring Cloud 是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案 ...

  9. 架构师必备技能:Maven Archetype生成项目模板

    基本每个公司的项目都有一套模板,只要开新项目直接复制一份改改包名和一些配置就初始化了一个新项目.这种方式有点繁琐,有没有通过命令甚至是可视化的方式从一个模板项目初始化项目.Maven其实有提供这种能力 ...

最新文章

  1. 社区生鲜领军者钱大妈携手神策数据,加速线上线下精准导流促增长
  2. deepin安装node,npm
  3. hibernate.cfg.xml hibernate 配置文件模板
  4. VMWare vijava –“用户名或密码不正确”异常的奇怪情况
  5. JavaScript 回调函数中的 return false 问题
  6. 电信充q币短信怎么发_移动、联通、电信话费快来领!微信小额提现免手续费方法!刚需羊毛!...
  7. php query builder,php – Symfony2 – Doctrine2 QueryBuilder WHERE I...
  8. windows server 2008 添加磁盘
  9. java无法远程读写HDFS系统解决方案
  10. 计算机教师考核方案,教师校园网使用考核方案范文
  11. Android学习日记(yzy):通过自定义View实现新手指导功能(蒙板效果)
  12. 稻城亚丁徒步攻略,与你共同感受这片净土
  13. Fabled Rooks UVA - 11134(题意+思路+题解)
  14. 帝国cms根据标题生成标题图片插件
  15. 所发生的发生的发顺丰噶时代发生的发生地方
  16. Android中调用.so库操作步骤
  17. 软件缺陷的严重程度和优先级
  18. 51单片机静态数码管原理及代码
  19. 湖南中医药大学宿舍无线网络一体化项目
  20. SVN —— 为什么,是什么,怎么用

热门文章

  1. firefox 显示网页加载时间的插件
  2. 高校学生考勤管理系统设计与简单实现
  3. H.266/VVC帧间预测技术学习:帧间和帧内联合预测(Combined inter and intra prediction, CIIP)
  4. 【React学习】React中ref的用法
  5. Xnip Mac上方便好用的截图工具
  6. python中 s == s[::-1]是什么意思?
  7. 灵魂显示正在登录聊天服务器,Soul跟随灵魂找到你
  8. 从微软官网下载VS2015(2016年8月25日)
  9. APP性能测试——启动耗时测试
  10. CLIP 论文学习笔记《Learning Transferable Visual Models From Natural Language Supervision》