MetricStore 2.0 的内存实时压缩基于时序数据的两个关键特征:时间线会在一定周期持续存在,且同类时间线的 LabelKey 和 LabelValue 存在大量重复。例如容器 cadvisor 的时间线中,只有少部分标签值是变化的,其他都是重复内容。基于这一特征,系统采用两级词典化编码:首先将 LabelPair 提取出来,按 LabelKey 维度将 LabelValue 编码成独立词典;然后对编码后的 LabelPairs 进行再次编码,提取出时间线单位。这种方式在容器场景下可实现近 10 倍压缩率。在数值和时间列上,由于同一时间线的变化不明显,采用优化版本的 Gorilla 压缩算法,并增加了动态内存管理以适应动态观测对象的场景。此外还引入了自适应 Block 方案,根据数据量和维度自动调整策略:低维度使用倒排索引,中维度转为扫描模式,高维度切换为列存编码。
加载中...