在使用存储引擎的 InfluxDB 集群上实现每秒 100 万个值

导航至

在分布式数据库中,达到每秒 100 万次写入是一个常见的基准目标。在 InfluxDB 中,过去一年我们一直在朝着这个目标进行优化,从头开始构建存储引擎,在 InfluxDB Cloud 和 InfluxDB Enterprise 产品中多次发布集群版本,并针对我们的实现语言 Go 进行了特定优化。在此期间,我们一直在测试集群,并在此过程中不断提高性能和稳定性。随着即将发布的 InfluxDB 1.1 版本,我们在非常适中的配置下实现了每秒超过 100 万个值的写入。在本文中,我们将介绍一些配置,并提供指向我们测试代码的指针。

我们在 AWS 中的多种配置上进行了测试。最小配置是 4 个 m4.4xlarge 实例作为数据节点运行,复制因子为 2。在这种配置下,我们能够达到每秒 100 万次写入。显然,您的结果可能会有所不同,我们建议使用更大的设置来 100% 时间运行该负载,但我们认为这是一个良好的开端。在接下来的几个版本中,我们将提高吞吐量并获得更好的数字,但让我们看看目前的状况。

我们使用复制因子 1、2 和 3 在 AWS M4 实例上进行了测试。与其他分布式数据库不同,InfluxDB 不要求用户三重复制其数据,这带来了良好的吞吐量和磁盘空间节省。使用 4 个 m4.4xlarge 实例,一个 InfluxDB 集群持续每秒 100 万次写入,总共写入了 10 亿个值。写入通过 HTTP 协议使用 influx-stress 负载测试工具进行批处理。

我们还测试了一个使用 m4.4xlarge 实例和复制因子 3 的 5 节点集群,该集群持续每秒 100 万次写入。以下图表跟踪了测试期间硬件的 CPU、内存和磁盘利用率,您可以看到活动是一致且稳定的。

Graph-of-test

最后,我们测试了一个更大的 5 节点集群,复制因子为 2,时钟频率为每秒 150 万次写入。在真实世界的场景中,用户希望在额外的headroom下运行。大多数真实世界的生产安装可能需要在这些测试期间需要 2 倍的硬件。

即使在真实世界的生产环境中,InfluxDB 也能以比其他分布式数据库更便宜和更小的 footprint 实现每秒 100 万次写入。在接下来的几周内,我们将更新我们的技术性能报告,其中包含针对集群设置的比较。我们还将在准备达到每秒 1000 万次写入的过程中对更大的集群进行基准测试。

下一步

  • 下载 TICK-stack 的下载在我们的“下载”页面上已上线
  • 云端部署: 开始免费试用 InfluxDB Cloud 它具有完全托管的集群、Kapacitor 和 Grafana。
  • 在您的服务器上部署: 想在您的服务器上运行 InfluxDB 集群吗?试用 InfluxDB Enterprise 的 14 天免费试用版,它具有直观的 UI,用于部署、监控和重新平衡集群,以及管理备份和恢复。 
  • 分享您的故事: 超过 100 家公司 分享了 InfluxDB 如何帮助他们取得成功的故事。提交您的客户评价,即可获得限量版连帽衫作为感谢。