导读:InfluxDB是最常用的时间序列数据库之一,大家广泛使用其开源版本。然而其开源版本缺乏一些高可用相关的特性,本文介绍Hulu在使用InfluxDB的过程中碰见的问题和解决方案,十分值得一读。
随着Hulu的持续增长,时间序列数据库已成为公司监控系统的关键部分。 这可以像机器性能指标或应用程序本身的数据一样简单处理。 由于我们拥有的数据量很大,因此创建一个支持冗余和可扩展的体系结构至关重要。
为什么时间序列数据很重要?
时间序列数据使我们能够评估趋势,以便发现问题并采取措施。
下图用于确定最近的内存泄漏,该问题会影响在特定数据中心运行的应用程序版本。
Graphite 架构
最初,每个开发团队都有自己的时间序列数据解决方案。 由于大多数团队都有类似的需求,这种情况无疑是浪费资源的。 为了解决这个问题,我们建立了原始的时间序列数据管道,该管道为整个工程团队提供了时间序列数据库。
该管道基于Graphite,并将数据存储到OpenTSDB。 在高峰时,该Graphite集群的吞吐量为每秒140万个指标。 在维持这一流程的同时,我们遇到了许多问题,这些问题随着我们继续增长而变得越来越常见。
其中许多问题源于为Hulu所有开发团队提供数据管道共享服务, 这样就需要支持巨大吞吐量和基数,其他问题是来自于可伸缩性的固有问题。
数据管道遇到的挑战
使用方经常且无意间会在其标准名称空间中发送唯一数据,例如时间戳或另一个唯一标识符。 例如:
stats.application.dc1.1557471341.count 1 1557471341
stats.application.dc1.1557471345.count 1 1557471345
stats.application.dc1.1557471346.count 1 1557471346
这导致了命名空间中基数爆炸式增长,从而影响了接收速度和整个管道的稳定性。尽管可