Vla*_*lad 6 logging time-series mongodb apache-kafka
我正在考虑是否将 MongoDB 或 Kafka 用于时间序列数据集。
乍一看,显然使用 Kafka 是有意义的,因为它就是为此而构建的。但我也希望在查询等方面有一些灵活性。
这让我产生了疑问:“为什么不直接使用 MongoDB 来存储带时间戳的数据并按时间戳对其进行索引?”
天真地想,这感觉它具有与 Kafka 类似的好处(因为它按时间偏移量索引),但具有更大的灵活性。但话又说回来,我确信人们在此类用例中使用 Kafka 而不是 MongoDB 的原因有很多。
在这种情况下,有人可以解释为什么要使用 Kafka 而不是 MongoDB 的一些原因吗?
我会尝试回答这个问题,因为您正在尝试随着时间的推移收集指标
是的,Kafka 主题具有可配置的时间保留,我怀疑您是否使用主题压缩,因为您的消息可能采用 的形式(time, value),因此时间无论如何都不能重复。
Kafka 还提供流处理库,以便您可以找出时间窗口内的平均值、最小值/最大值、离群值和异常值、前 K 值等。
然而,虽然处理所有这些数据很棒且有用,但您的消费者将陷入对这些数据进行线性扫描的困境,无法轻松查询任何给定时间范围内的数据片段。这就是时间索引(不仅是开始索引,而且是结束索引)会有所帮助的地方。
因此,当然您可以使用 Kafka 创建排队指标的积压并随着时间的推移处理/过滤它们,但我建议将这些数据消耗到适当的数据库中,因为我假设您希望能够更轻松地查询它并可能创建对这些数据的一些可视化。
通过该架构,您可以让高度可用的 Kafka 集群在一段时间内保留数据,而您的下游系统不必始终在线才能接收事件。但一旦他们这样做了,他们就会从最后一个可用的偏移量中消耗并在之前的位置拾取
就像上面评论中的答案一样 - Kafka 和 MongoDB 都不适合作为具有灵活查询功能的时间序列数据库,原因@Alex Blex 解释得很好。
根据处理速度、查询灵活性、数据大小的要求,我会做以下选择:
PS 这里的“处理”是指在需要时进行摄取、分区和汇总 PPS 我选择了现在最广泛使用的那些选项,在我看来,但还有数十种其他选项和组合,以及更多选择使用标准 - 有兴趣了解其他工程师的经验!
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |