阿里云InfluxDB®之snapshot及其内存优化

  • 时间:
  • 浏览:1

不可能 有n个cache,一同做snapshot。 则耗费的内存为: n IndexSize。 

你是什么:5db
4 retention, IndexSize = 60 m。 则节省:5 4 60 = 1G的内存使用量。

如上图所示,每一4个多cache内内外部划分成了16个partition。每一4个多partition内内外部包含一4个多map,所有的map其key为SeriesKey,value为entry。

InfluxDB采用的是TSM引擎,TSM 存储引擎主要由有几次主次组成: cache、wal、tsm file、compactor

TSM存储引擎,其核心思想你是什么LSM Tree,它会将最近的数据缓处于磁盘中,在达到预设的阈值过后就会触发snapshot,也过后.我.我 常说的快照刷盘。

没人 ,这里涉及一4个多问题:

总结以上所述,大体的过程是,encode生层Series Data Block, 在迭代过程中,生成了Series Index Section,最终,将Series Index Section Append到Series Data Block 就生成了TSM文件。

而不需要磁盘来做Index缓冲区的过后,则不需要生成并与非 文件,如下图所示。

经过.我.我 的长时间的稳定性测试,证实,在利用磁盘来做Index的缓冲区时,能有效降低系统大压力下的OOME概率。

1、落盘的文件格式如保?

2、snapshot刷盘的过程并与非 是如保进行的?

.我.我 先看落盘的文件格式:

/>

关键的代码如下:

从代码层面上来讲,从总体的概要流程如下:

下面你都能能 们 来逐个分析下:

不可能 snapshot是将cache中的数据刷到磁盘,没人 首先,.我.我 来看一下Cache的内内外部形态。

作为阿里在APM和IOT领域的重要布局,时序数据库承载着阿里对于物理网和未来应用监控市场的未来和排头兵,作为业内排名第一的时序数据库InfluxDB,其在国内和国际都拥有了小量的用户,阿里适逢其时,重磅推出了阿里云 InfluxDB®。

         限于篇幅,本文仅就InfluxDB的其中一4个多模块:snapshot,对其机制和内存使用的优化进行分析。

1、Series Data Section生成:

Series Data Section有若干个Series Data Block组成。

其中对于Series Data Block,并与非 是在内存中完成组装的,具体是有cacheKeyIterator.encode函数完成,代码如下:

2、依次刷盘

前面.我.我 已知iter中保留有哪有几次cacheBlock,.我.我 只需要遍历迭代器就也能将哪有几次数据刷盘。但还一4个多多问题,Series Index Section如保生成?

不可能 Series Index Section最终由IndexEntry构成,而IndexEntry中minTime和maxTime、Size都也能由cacheBlock的数据得到,关键是Offset。

人太好Offset的计与非 随着迭代的过程,不断地往前走,就像在一4个多Buffer中,填满了一4个多Series Data Block,就会更新一次Offset。

没人 问题来了Series Index Section的保存需要要空间的,不可能 是Series Index Section占用的内存过大,则不可能 会过后 加大了进程OOME的风险。

每隔1秒钟检查一次,与非 达到snapshot的条件。

snapshot的条件一4个多:

与非 达到配置的阈值。(默认状态下是25M)

离上次snapshot的间隔与非 超越:cache-snapshot-write-cold-duration的配置。(默认状态下是10min)

某些,.我.我 也能想到的一4个多优化点是:在snapshot过程当中利用文件来做Series Index Section的暂存区,从而节省并与非 主次内存。

.我.我.我 利用磁盘来做Index的缓冲区时,系统在snapshot的过程中,会生成一4个多临时的索引文件,如下图所示。

entry是一4个多Value类型的数组,Value并与非 是一4个多接口,按照值类型的不同分为:FloatValue、StringValue、BooleanValue、IntegerValue、FloatValue、StringValue。 

以FloatValue为例,每并与非 类型的Value包含了一4个多int类型的时间戳和具体的值value。

阿里云InfluxDB®现已正式商业化,欢迎访问购买页面(https://common-buy.aliyun.com/?commodityCode=hitsdb_influxdb_pre#/buy)与文档(https://help.aliyun.com/document_detail/1160 93.html?spm=a2c4e.11153940.0.0.57b04a02biWzGa)。

TSM文件包括了一4个多主次:Series Data Section、Series Index Section、 Footer。

其中针对有几次不同的数据类型分别通过不同Encoder来进行组装,最后是形成了一4个多cacheBlock的二维数组,并保处于iter当中。

接下来的问题过后如保将哪有几次二维数组刷盘。