Prometheus时序数据库-内存中的存储结构

2022-02-18 00:00:00 数据 内存 监控 标签 结构

Prometheus时序数据库-内存中的存储结构

前言

笔者近担起了公司监控的重任,而当前监控流行的数据库即是Prometheus。按照笔者打破砂锅问到底的精神,自然要把这个开源组件源码搞明白才行。在经过一系列源码/资料的阅读以及各种Debug之后,对其内部机制有了一定的认识。今天,笔者就来介绍下Prometheus的存储结构。
由于篇幅较长,所以笔者分为两篇,本篇主要是描述Prometheus监控数据在内存中的存储结构。下一篇,主要描述的是监控数据在磁盘中的存储结构。

Gorilla

Prometheus的存储结构-TSDB是参考了Facebook的Gorilla之后,自行实现的。所以阅读
这篇文章《Gorilla: A Fast, Scalable, In-Memory Time Series Database》
,可以对Prometheus为何采用这样的存储结构有着清晰的理解。

监控数据点

下面是一个非常典型的监控曲线。


可以观察到,监控数据都是由一个一个数据点组成,所以可以用下面的结构来保存基本的存储单元

type sample struct {
    t int64
    v float64
}

相关文章