InfluxDB 在时间序列数据和指标基准测试中显著优于 OpenTSDB

导航至

此博客文章已于 2018 年 2 月 6 日更新,包含 InfluxDB 1.4.2 和 OpenTSDB v2.3.0 的最新基准测试结果。为了向您提供最新发现,本博客会定期更新最新的基准数据。

在 InfluxData,近几个月来,我们经常被开发人员和架构师问到的一个常见问题是:“对于时间序列工作负载,InfluxDB 与 OpenTSDB 相比如何?” 提出这个问题可能有几个原因。首先,如果他们正在启动一个全新的项目,并且正在进行尽职调查以评估几个解决方案的正面交锋,这有助于创建他们的比较网格。其次,他们可能已经在现有的监控设置中使用 OpenTSDB 来摄取日志,但现在想看看如何将指标收集集成到他们的系统中,并且认为可能有一个比 OpenTSDB 更好的解决方案来完成这项任务。

在过去的几周里,我们着手比较 InfluxDB 和 OpenTSDB 在常见时间序列工作负载方面的性能和功能,特别是关注数据摄取率、磁盘数据压缩和查询性能。 InfluxDB 在所有三项测试中都优于 OpenTSDB,每个服务器的写入吞吐量高出 9 倍,与 OpenTSDB 的时间序列优化配置相比,磁盘空间减少了 8 倍,并且对于测试的查询,响应时间快了 7 倍。

同样重要的是要注意,OpenTSDB 使用 Apache HBase 作为其存储后端,并且需要大量的设置、配置和调整才能实现最佳的写入和查询性能,并且通常需要一个单独的团队来管理 HBase 和 HDFS 部署。另一方面,InfluxDB 可以开箱即用地用于时间序列工作负载,无需额外配置,并且具有专为处理时间序列而设计的模式和查询语言。

要阅读基准测试和方法的完整详细信息,请下载“InfluxDB 与 OpenTSDB 在时间序列数据、指标和管理方面的基准测试”技术论文,或观看录制的网络研讨会

我们的首要目标是创建一个一致的、最新的比较,以反映 InfluxDB 和 OpenTSDB 的最新发展。我们将定期重新运行这些基准测试,并使用我们的发现更新我们详细的技术论文。所有这些基准测试的代码都可以在 Github 上找到。如果您有任何问题、意见或建议,请随时在该存储库上提出问题或拉取请求。

现在,让我们来看看结果...

测试版本

InfluxDB v1.4.2

InfluxDB 是用 Go 编写的开源时间序列数据库。其核心是一个名为 时间结构化合并 (TSM) 树的定制存储引擎,该引擎针对时间序列数据进行了优化。 InfluxDB 由一种名为 InfluxQL 的定制类 SQL 查询语言控制,提供对跨时间范围的数学和统计函数的开箱即用支持,非常适合定制监控和指标收集、实时分析以及物联网和传感器数据工作负载。

OpenTSDB v2.3.0

OpenTSDB 是一个可扩展的分布式时间序列数据库,用 Java 编写,并构建在 HBase 之上。它不是一个独立的时间序列数据库,而是依赖 HBase 作为其数据存储层,因此 OpenTSDB 时间序列守护进程有效地提供了查询引擎的功能,实例之间没有共享状态。此外,OpenTSDB 主要设计用于生成仪表板可视化,因此它并不总是返回任意时间范围的精确数据。请注意,我们将 HBase 复制因子设置为 1,以实现最公平的比较。

关于基准测试

在构建具有代表性的基准测试套件时,我们确定了处理时间序列数据时最常评估的特征。我们研究了三个向量的性能

  • 数据摄取性能 – 以每个服务器每秒的值数衡量
  • 磁盘存储要求 – 以字节衡量
  • 平均查询响应时间 – 以毫秒衡量

关于数据集

对于此基准测试,我们专注于一个数据集,该数据集模拟了一个常见的 DevOps 监控和指标用例,其中模拟服务器集群定期以规则的时间间隔报告系统和应用程序指标。我们每 10 秒对 9 个子系统(CPU、内存、磁盘、磁盘 I/O、内核、网络、Redis、PostgreSQL 和 Nginx)中的 100 个值进行采样。对于关键比较,我们查看了一个数据集,该数据集代表 100 台服务器在 24 小时内的数据,这代表了一个相对适度的部署。

  • 服务器数量:100
  • 每个服务器测量的数值:100
  • 测量间隔:10 秒
  • 数据集持续时间:24 小时
  • 数据集中的总数值:每天 8700 万

这只是整个基准测试套件的一个子集,但它是一个具有代表性的示例。如果您对更多细节感兴趣,可以在 GitHub 上阅读有关测试方法的更多信息。

写入性能

在数据摄取方面,InfluxDB 的性能比 OpenTSDB 高出 9 倍。

InfluxDB vs OpenTSDB - Write throughput

磁盘压缩

InfluxDB 的压缩性能比 OpenTSDB 高出 8 倍。

InfluxDB vs OpenTSDB - disk storage

查询性能

InfluxDB 的查询吞吐量至少比 OpenTSDB 高出 7 倍。

InfluxDB vs OpenTSDB - Query Throughput

总结

OpenTSDB 和 InfluxDB 都是时间序列数据库。但是,OpenTSDB 需要多个数量级的管理开销才能在生产环境中运行,并且在性能良好之前需要许多依赖于应用程序的调整。即使这样,在对我们的数据运行临时查询时,它也并非完全正确。 InfluxDB 设置更简单,更易于有效使用,并返回正确的查询结果。

总之,我们强烈建议开发人员和架构师自己运行这些基准测试,以独立验证他们在自己选择的硬件和数据集上的结果。但是,对于那些正在寻找一个有效的起点,以确定哪种技术可以“开箱即用”地提供更好的时间序列数据摄取、压缩和查询性能的人来说,InfluxDB 显然是所有这些维度上的明显赢家,尤其是当数据集变得更大并且系统运行时间更长时。

下一步是什么?