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 中标记压缩与否.
版权声明: 本文为 InfoQ 作者【johncming】的原创文章。
原文链接:【http://xie.infoq.cn/article/997c64393ed3c2c96ba443f2e】。文章转载请联系作者。
评论