分享自:

Khronos:一种用于大规模性能监控系统的时间序列数据库的实时索引框架

期刊:Proceedings of the 32nd ACM International Conference on Information and Knowledge ManagementDOI:https://doi.org/10.1145/3583780.3614944

类型a:这篇文档报告了一项原创研究,因此以下内容将遵循类型a的要求进行撰写。


Khronos: 一种面向大规模性能监控系统的时间序列数据库实时索引框架

主要作者及机构
本研究的主要作者包括刘欣宇、魏子敬、余文清、刘少智、王刚、刘晓光和李玉森。其中,刘欣宇、魏子敬和余文清来自阿里巴巴集团控股有限公司(北京),而王刚、刘晓光和李玉森则隶属于南开大学计算机学院(天津)。该研究于2023年10月在《ACM国际信息与知识管理会议(CIKM ‘23)》上发表。

学术背景
时间序列数据库(Time Series Databases, TSDBs)在计算机系统的性能监控中扮演着至关重要的角色。TSDBs通过接收被监控实体周期性上报的实时指标数据,存储采样点并构建时间序列元数据索引来加速条件查询。然而,在大规模性能监控场景中,TSDBs需要每秒处理数百万条消息,同时支持实时搜索以满足性能分析、自动调度和告警等需求。目前广泛采用的日志结构合并树(Log-Structured Merge-Tree, LSM)设计虽然能够实现高写入吞吐量,但在新段创建时会因瞬时索引压力导致可见延迟峰值,严重影响系统可靠性。例如,延迟的指标数据会阻碍问题发现和分析,甚至可能导致系统过载。为了解决这一问题,研究团队提出了Khronos,一种异步索引框架,旨在减少可见延迟并提高查询效率。

详细工作流程
本研究的工作流程主要包括以下几个步骤:

  1. 数据建模与索引构建
    监控数据通常被建模为多维时间序列,每个时间序列由唯一的系列键(Series Key)标识,包含一个度量(Metric)和一系列标签键值对(Tag Key-Value Pairs)。研究团队提出了一种基于最小排除值函数(Minimum Excluded Value Function, Mex)的索引组织方法,用于重用非活跃系列ID并确保准确召回。具体而言,当一个新的段(Segment)被创建时,只有未在前一段中报告过的系列会被索引(称为补充系列,Complementary Series),从而减轻瞬时索引压力。

  2. 数据处理与存储
    研究对象包括从被监控实体收集的消息流,这些消息被分配到独立的分区中进行处理。每个分区内的构建线程负责将点样本存储到缓冲区并构建内存中的补充索引。一旦当前段的时间范围超过阈值,新的空段将被创建以接收实时写入,而先前填满的段(称为转储段,Dumping Segment)则由转储线程异步处理,以进行点去重和索引补充。随后,不可变段将被持久化到远程存储中,而索引的生命周期由依赖关系决定。

  3. 查询处理与优化
    查询过程分为多个阶段:首先,查询被广播到所有分区;然后,仅涉及时间范围与查询时间范围重叠的段参与查询会话。在每个段内,查询线程遍历补充索引以确定相关系列ID,进而获取系列键和样本。为了优化查询效率,研究团队开发了一种中间结果重用方法,通过缓存前一段的召回结果来消除重复计算,从而显著减少查询延迟。

  4. 依赖管理与压缩
    为了控制依赖链长度,研究团队设计了一种依赖切断策略,在持久化之前补充索引以减少内存占用和查询执行开销。此外,定期触发的异步压缩任务会删除过期系列并合并持久化段,以消除时间重叠。

主要结果
实验结果表明,Khronos框架显著减少了可见延迟,从分钟级降低到毫秒级。具体而言,Khronos在写入吞吐量方面比现有最先进的数据库(如InfluxDB和TimescaleDB)高出至少4倍,可见延迟降低了数百倍,查询延迟减少了6倍。例如,在处理5亿条消息/秒的生产环境中,Khronos能够维持毫秒级的可见延迟,为系统稳定性提供了关键支持。此外,中间结果重用方法在多段查询中表现出色,避免了重复索引访问,进一步提高了查询效率。

结论与意义
Khronos框架的成功开发为大规模性能监控系统提供了一种高效、可靠的解决方案。其科学价值在于提出了一种基于时间局部性的补充索引算法,显著缓解了瞬时索引压力;其应用价值体现在大幅提升了写入吞吐量和查询效率,同时降低了可见延迟,为实际生产环境中的性能监控提供了强有力的支持。自2020年部署以来,Khronos已成为阿里巴巴最大的性能监控数据库。

研究亮点
1. 提出了基于Mex函数的索引组织方法,安全地重用了非活跃系列ID,避免了冲突并支持高效压缩。
2. 开发了中间结果重用方法,通过缓存前一段的召回结果显著减少了查询延迟。
3. 设计了依赖切断策略,有效控制了依赖链长度,减少了内存消耗和查询路径延长。
4. 在实际生产环境中验证了框架的高效性和可靠性,处理能力达到5亿条消息/秒。

其他有价值内容
研究团队还详细分析了时间序列的生命周期分布,发现大多数系列的生命周期小于一小时。这一发现为补充索引的设计提供了重要依据。此外,Khronos框架的模块化设计使其易于扩展和优化,未来可进一步应用于其他高性能计算场景。


以上内容全面介绍了Khronos框架的研究背景、工作流程、主要结果及其科学和应用价值,为相关领域的研究人员提供了详实的参考。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com