IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> prometheus/tsdb index索引格式规范 -> 正文阅读

[大数据]prometheus/tsdb index索引格式规范

内容源于

https://ganeshvernekar.com/blog/prometheus-tsdb-persistent-block-and-its-index/

比如一个metrics的格式如下:

cpu{host=“computer",ip="1.2.3.4",systerm="64bit"} timestamp=xxx, value=12

cpu{host=“computer",ip="1.2.3.5",systerm="64bit"} timestamp=xxx, value=13

index总体格式分为:

symbol_table

{}内部的str信息保存。即,

str按照字典序排列,比如len(computer),str_1="computer"?

可以看到,symbol是所有出现过的label的string的汇总,他和具体的某一个series,并没有直接关系,也无法反应某些关系特征。只是提供一个string的字典集合。方便后续使用到该string的地方,直接使用索引值。

Series

这一部分是放真实series数据的地方。

比如举例中有3个标签信息,那么labels count就是3。注意这里不包括metric name信息。具体的每一个label中,name和value,存放的是对应string在symbol table中的索引。

chunks count表示了该series信息,比如举例的cpu信息,存在于哪几个block里面,以及在每一个block中的时间范围。

到这里,似乎看起来,需要的信息都有了。但是,我们假设给一个请求,如何找到对应的数据。

比如请求cpu{host=“computer",ip="1.2.3.5"}的信息。

此时,存在两个查询条件,host和ip。很明显,symbol table只是字符串信息,并不是series信息,对查询没有直接帮助。series又是所有的metric集合,如果直接去每一个series的label count下面的name,value去匹配,就相当于全盘扫描,也体现不出index的作用了。

所以,对于label本身,还需要一个索引集合,能快速定位到series的位置。

Postings i

?

?在series组装完成后,series_1的ID为10,series_2的ID为20,那么host=computer有两个指标满足,就在posting i中,存放[10,20]

series_1

series_2

同时,还有其他组合,比如ip=xx,也会生成对应的series信息,因为ip不同,会生成[10],[20]两个posting i 信息。

Postings Offset Table

?当posting 组装完成后,就会生成对应的offset列表。比如对于host=computer的场景,

offset对应的就是[10,20]的posting位置。

对于ip=xx,offset就是[10]的posting位置。

综上,一次查找cpu{host=“computer",ip="1.2.3.5"}的过程如下:

首先查找host的posting offset table,根据offset, 去posting i表,找到了[10,20]

同时,再查找ip=.5的posting offset table.根据offset, 去posting i表,找到了20,?

所以,这次查找就需要series id=20的信息。

根据20*16的索引,在series中找到20的所有block索引信息。同时根据symbol table和block索引,拼接完数据后,就返回所有series数据了。

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 00:16:32  更:2021-07-28 00:16:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 20:57:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码