Prometheus时序数据库-内存中的存储结构
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
}
相关文章