公司如何在生产环境中使用 InfluxDB 和 Kafka

导航至

本文最初发表于 The New Stack。

娱乐流媒体平台 Hulu 需要一个解决方案来扩展其内部应用程序和基础设施监控平台,因为其规模已超过每秒 100 万个指标。

它创建的解决方案结合了两种开源工具——InfluxDB(时间序列数据库)和 Kafka(事件流平台)。

不仅仅是像 Hulu 这样的全球企业才能获得世界一流的工具和基础设施来实现其业务目标。即使是初创公司也可以“现成”地购买合适的工具,而不是在内部创建它们,从而浪费开发人员的时间和资源。

对于许多公司来说,成功在于知道如何充分利用这些工具来解决团队最棘手的问题。在 Kafka Summit 2022 峰会之前,值得探讨两种特定的开源工具如何协同工作:Kafka 和 InfluxDB。

在下面的文章中,您将了解这两个项目的一些信息,然后获得一些真实世界的例子,了解主要公司如何在生产环境中使用这些工具来解决问题。

什么是 InfluxDB?

如前所述,InfluxDB 是一个开源时间序列数据库,旨在处理时间序列数据(也称为“时间戳数据”)。它针对处理大量写入数据进行了优化,并提供实时查询该数据的能力,而通用数据库在类似规模下会因设计权衡而难以应对,例如数据如何压缩和索引,以便在分析中查询特定时间范围内的数据。

除了其性能优势外,InfluxDB 还提供了许多开发者体验优势,使常见的时间序列工作负载更易于实现。这意味着内置了数据降采样、创建自定义警报以及专门为处理时间序列数据而设计的 Flux 查询语言等功能。

什么是 Kafka?

事件流平台 Kafka 允许用户使用其应用程序发布和订阅事件。Kafka 与提供类似功能的工具的区别在于其内置的可扩展性、容错性和其他易用性功能,这些功能抽象了复杂性,使开发人员更容易使用。

Kafka 最初由 LinkedIn 开发,用于实时跟踪整个 LinkedIn 的用户活动事件。开源后,Kafka 开始被用于广泛的用例,如日志聚合、流处理、指标监控,以及作为分布式系统的消息代理。

公司如何一起使用 InfluxDB 和 Kafka

InfluxDB 和 Kafka 已成为一种流行的组合,因为需要一个可以与 Kafka 一起扩展的数据存储。它们可以被视为互补工具,Kafka 处理组织的大部分实时处理需求,而 InfluxDB 可用于长期分析查询,或将实时数据与历史数据结合起来,以便在需要时提供更多上下文。

因此,已经创建了许多工具来简化 InfluxDB 和 Kafka 的集成。Confluent 创建了一个连接器,允许 InfluxDB 用作数据存储,以及可以推送到 Kafka 的事件源。

Telegraf 指标收集代理也有一个专用的 Kafka 插件,可用于从指定的 Kafka 主题中提取消息并将它们存储在 InfluxDB 中。您还可以使用 Telegraf 的其他一些处理器插件在存储之前转换或过滤数据。

以下是一些公司如何一起使用 Kafka 和 InfluxDB 的示例

Hulu

Hulu 团队创建的解决方案使用 InfluxDB 作为存储层,以帮助其扩展内部监控解决方案,并在每个数据中心本地使用 Kafka,以便在本地中断时保存指标。一旦问题解决,Kafka 持久化的数据可以写入任何与其它数据中心的集群不同步的 InfluxDB 集群。

CERN

CERN 是一个研究组织,运营着世界上最大的粒子物理实验室——包括世界上最大的和最高能量的粒子对撞机,大型强子对撞机。为了存储来自其 ALICE 实验的数据——CERN 的科学家在其中寻找夸克和胶子在大爆炸类似条件下的相互作用方式——该组织使用 InfluxDB。

ALICE 实验涉及监测原子在极端能量密度下如何相互作用。ALICE 每秒产生 3.4TB 的原始数据。这些数据被压缩;然后指标被聚合并存储在 InfluxDB 中。Kafka 用作流处理管道的一部分,用于聚合这些指标并将原始数据发送到存档。

Robinhood

在线金融服务公司 Robinhood 使用 Kafka 和 InfluxDB 来驱动其异常检测平台。Kafka 用于通过 Telegraf 将数据发送到 InfluxDB,在 InfluxDB 中,数据被聚合和查询,以创建预测并将这些预测与实际观察值进行比较。这些预测的结果被发送回 Kafka,其他服务可以监听消息并根据这些预测采取行动。

总结

InfluxDB 和 Kafka 都是非常通用的工具,在任何应用程序架构中都能很好地互补。由于是开源的,这两个项目都拥有强大的工具和库生态系统,这些工具和库增强了它们的价值,超出了核心项目本身提供的价值。

要了解更多关于 Kafka 和 InfluxDB 的信息,请查看我们的资源页面。