企业如何在生产中使用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,在该平台中,数据被聚合和查询以创建预测,并将这些预测与实际观察到的值进行比较。这些预测的结果被发送回Kafka,其他服务可以监听这些消息并根据这些预测采取行动。

总结

InfluxDB和Kafka都是功能非常强大的工具,在任意的应用架构中都能很好地互补。由于开源,这两个项目都拥有强大的工具和库生态系统,它们的价值远远超过了核心项目所提供的内容。

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