提升Pinterest中Goku时间序列数据库的效率

Pinterest 现代化并增强其 Goku 时间序列数据库

Pinterest 对其自建的时间序列数据库 Goku 进行了现代化改造和增强,最新更新专注于在不影响服务质量的前提下优化存储和资源使用。

Goku 的背景与动机

Pinterest 构建 Goku 是为了解决 OpenTSDB 的特定限制。Goku 的研发旨在满足 Pinterest 在可观测性方面的需求,特别是处理大规模时间序列数据的能力。

最新功能与优化

Goku 团队近期引入了两项新功能:

  1. 指标命名空间:通过组织指标配置,实现高效的数据管理。
  2. 识别高写入指标:帮助可观测性团队阻止不必要的数据,减少存储的时间序列数据达 37%。

架构改进与成本优化

  • 命名空间配置:存储在动态共享配置文件中,所有 Goku 主机都会监控该文件的变化,并实时解析新内容。
  • 索引优化:指标名称的索引改进使每台主机的内存使用量从 12 GB 降至 3 GB。
  • 字典编码:在 Goku Compactor 中引入字典编码,消除了内存不足问题,允许使用成本更低的硬件。
  • 内存分配优化:通过解决内部碎片化和过度分配内存问题,每台主机的内存使用量减少了 8-11 GB。

时间序列压缩算法

时间序列压缩算法通过识别数据中的模式和冗余,显著减少数据大小,提升查询性能并降低存储成本。常用的技术包括:

  • Delta 编码
  • Delta-of-Delta 编码
  • XOR 压缩

例如,TimescaleDB 使用这些算法实现了超过 90% 的存储效率,Meta 的 Gorilla 数据库也通过类似技术将存储占用减少了 10 倍。

行业趋势

Pinterest 的努力是科技行业优化时间序列数据管理系统的一部分。类似的项目包括:

  • Apple 的 FiloDB
  • Netflix 的 Atlas
  • Uber 的 M3
  • Meta 的 Gorilla
  • Salesforce 的 Argus

这些项目都专注于高效的时间序列数据管理,部分项目已在 GitHub 上开源。

成果与效益

Pinterest 通过这些优化实现了:

  • 时间序列存储减少 40%
  • 成本降低 70%
  • 有机存储增长 30%,而无需额外容量

行业见解

在可观测性领域的成本控制方面,许多企业将可观测性视为仅次于基础设施/托管的第二大成本。行业专家在 Reddit 等平台上分享了相关见解和基准,强调了优化可观测性系统的重要性。

阅读 28
0 条评论