写点什么

5 分钟了解 Prometheus 的 WAL 机制

作者:johncming
  • 2022 年 2 月 18 日
  • 本文字数:357 字

    阅读完需:约 1 分钟

5分钟了解Prometheus的WAL机制

WAL 机制是 Prometheus TSDB 的重要功能, 提供容错和保持高可用. WAL 在数据库中比较常见, 请参见WAL.


本文简要介绍一下 WAL 数据类型相关的内容.


写入 WAL 的数据类型



  • 写入 WAL 的数据类型是字节切片([]byte), 可以一次写多个.

  • 上图列出基本类型 4 种, 包括时序 series, 样本 sample, Exemplar(外部引用相关, 后续介绍), tombstones.Stone(TSDB 的删除机制相关, 后续介绍)

  • 基本类型序列化为字节切片


WAL 数据的存储形式


  • 数据所在文件(segment), 默认大小 128MB, 超过限制切割文件继续.

  • 数据按照 record(head+body)写入 page(32KB)

  • page 为单位持久化到 segment 中

  • record 支持 CRC 校验

  • record 可能独占 page

  • record 可能跨 page

  • records 可能共存在一个 page 中, 比如 record-a 的尾和 record-b 的头, 提高利用率.

  • record 支持压缩, 但是否压缩看数据, 会做尝试, 避免出现压缩后反而大的情况.

  • record 的 head 中标记压缩与否.

发布于: 刚刚阅读数: 2
用户头像

johncming

关注

万事开头难 2017.10.20 加入

程序员,擅长golang,熟悉Prometheus(包括Thanos和Cortex),Prometheus contributor

评论

发布
暂无评论
5分钟了解Prometheus的WAL机制