时序数据库"metrics limit"?

Time series database "metrics limit"?

我想知道时间序列数据库是否会在这种情况下崩溃:

我有数以万计的 IoT 每 5 分钟发送 4 个不同的值。

我将在特定时间段内为每个 IoT 查询这些值。我的问题是:

tsdb 方法是否可行且可扩展到例如一百万个物联网,具有如下指标:

iot.key1.value1
iot.key1.value2
iot.key1.value3
iot.key1.value4
iot.key2.value1
.
.
.
iot.key1000000.value4

?或者他们太多了 "amount of metrics"?

保留政策为 2 年,可能会在 (TBA) 个月后汇总。但我认为这种考虑仅对磁盘大小 afaik 重要。

现在我正在使用石墨

五分钟的报告频率应该是相当容易管理的,只需确保将您的存储模式设置为五分钟,这是为了保存最小分辨率数据 space,因为您不会需要在较短的时间内保留数据。

话虽如此,缩放石墨簇以满足您的需求并不容易,因为 Whisper 并未针对此进行优化。有几个 resources/stories 其他人分享了他们试图实现这一目标的沮丧,例如:here and here

还有其他限制需要考虑,Whisper 的配置方式是每个时间戳只能记录一个数据点,并且接收到最后一个数据点 "wins"。现在这对您来说可能不是问题,但以后您可能会发现您需要增加数据点报告频率才能更好地了解您的数据。

问题来了,我该如何解决这个问题?通常,StatsD 就是答案 - 它是一个聚合器,在定义的时间段内获取您的个人指标,并生成一组类似直方图的指标,其中包含数据的不同统计衍生物(最小值、最大值、X 百分位数等)。突然间,您面临着管理 Graphite 实例或集群、一个(或多个)StatsD 服务的前景,而这甚至在您进入可视化数据的有趣部分之前:这里经常用到Grafana,也需要你自己架设和维护。

相反,假设您将保持该报告频率,但增加设备数量(如您所述),您可能会发现 Graphite 堆栈的另一个组件 - Carbon-relay - 运行 出现一些瓶颈问题(如 here 所述)。

我在 MetricFire 工作,以前是 Hosted Graphite,我们在构建 product/service 时考虑了很多这些因素。我们共同处理数百个帐户每秒数百万个数据点。数据以四种分辨率汇总和存储:5 秒、30 秒、5 分钟、1 小时,其中每种分辨率分别适用于 24 小时、3 天、六个月和两年。

我们设置的一个关键组成部分是我们的存储不是建立在典型的 Whisper 后端上 - 相反,我们使用 Riak 的定制数据存储允许我们做很多事情:轻松扩展和聚合数据点公制为 Data Views,仅举几例。那篇关于数据视图的文章是由我们的一位工程师撰写的,详细介绍了我们在构建存储层时所做的决定。