InfluxDB 和 Kafka:企业如何集成这两者

导航至

随着 Kafka 和时间序列数据库越来越受欢迎,了解它们如何配对在一起以提供强大的实时数据管道解决方案变得越来越有价值。正如俗话所说,整个管道大于 Kafka 和 InfluxData 各部分的总和。

本博客系列的第一部分包括

  • Kafka 简介
  • 一些基本的 Kafka 概念
  • 企业如何将 Kafka 与 InfluxDB 集成以创建容错、可扩展、快速和简化的数据流

什么是 Kafka?

根据维基百科,“Apache Kafka 是一个开源流处理软件平台,用 Scala 和 Java 编写。该项目旨在为处理实时数据馈送提供一个统一、高吞吐量、低延迟的平台。” 换句话说,它允许您构建复杂的数据管道。Kafka 就像三项技术合而为一

  1. 消息队列 – 它读取和写入数据流。
  2. 消息代理 – 它处理消息并对它们应用不同的逻辑,以实时响应事件。
  3. 数据存储 – 发布和消费消息的解耦意味着 Kafka 存储这些正在传输中的消息。

现在让我们谈谈其中一些流行语。根据 Kafka,以下是它的独特之处

水平可扩展

共享消息队列和传统发布-订阅模型先于 Kafka。使用共享消息队列,所有消息都属于同一个逻辑域。这意味着它们都执行相同的功能 – 处理是不可扩展的。

使用传统发布-订阅模型,消息被分配到不同的主题,这些主题执行不同的功能。但是,每条消息都发布到每个主题,并且每个订阅者必须订阅每个主题。随着您的网络增长,您的流的复杂性呈指数增长。由此产生的不稳定性限制了传统发布-订阅模型可以扩展的程度。

换句话说,Kafka 可以扩展处理并且是多订阅者,使其真正可扩展。要了解有关共享消息队列和传统发布-订阅模型之间差异的更多信息,我强烈建议阅读 这篇文章。查看 文档 以了解更多关于 Kafka 与其前身的不同之处。

容错

这很容易理解。由于 Kafka 是水平可扩展的,并且设计为作为集群运行,因此如果一个节点出现故障,您不会丢失消息或处理协议。

极速

一个简短的答案可能会将 Kafka 的速度 归因于它用 Scala 和 Java 编写、开源以及由一个非常聪明的社区贡献。更好的答案将触及 3 个要点

Kafka 的基础知识

  1. 主题 – 消息的类别。它们是多订阅者的,可以有多个消费者。每个主题都有一个分区日志。主题看起来像这样:Kafka - anatomy of a topic
  2. 生产者 – 将数据发布到适当的主题。
  3. 消费者 – 订阅主题的应用程序。消费者实例可以在单独的进程或机器中,以确保高可用性。
  4. 消费者组 – 包含 2 个或更多消费者实例。消息在消费者组中的消费者实例之间进行负载均衡
  5. Broker – 负责从生产者获取数据并将其发送给消费者。
  6. 分区 – 一个有序、不可变、追加到日志。记录都被分配一个偏移值,该值标识它们在分区中的位置。分区在 Kafka 集群上分布和复制。虽然每个主题分区必须适合一台服务器,但它们使主题能够扩展到超出单台服务器的范围。具有最高偏移的分区的 Broker 是领导者。其余的 Broker 是追随者。领导者处理分区的读取和写入请求。追随者 Broker 复制领导者。如果领导者变得不可用,则选择一个追随者来接替失败的领导者的位置。Kafka consumer groups
  7. 并行性 – 并行性是同时执行多个进程。每个分区都由消费者组中的一个消费者完全消费。但是,消费者可以并行消费记录。 如果消费者停止,Kafka 可以将分区分散到消费者组中的其他消费者。通过这种方式,分区是并行性的单位。
  8. 排序 – 由于每个分区都由消费者组中的一个消费者读取和消费,因此 Kafka 能够保证排序。这与传统队列相反,在传统队列中,多个消费者从同一个队列读取和消费,并且记录的顺序可能会丢失。我建议阅读这篇博客以了解更多关于 Kafka 中的并行性和排序
  9. 处理 – Stream API 支持实时处理数据流。使用它可以执行聚合或将流连接在一起。

Hulu 和 Wayfair 如何一起使用 InfluxDB 和 Kafka

Hulu 通过 Kafka 和 InfluxDB 将他们混乱的凯尔特结流简化为稳定、快速和持久的流,并解决了传统发布-订阅模型带来的问题。Hulu 使用 Kafka 和 InfluxDB 扩展到每秒超过 100 万个指标。通过这种新设计,他们已准备好处理任何有问题的 InfluxDB 集群。如果一个集群离线,Kafka 会将写入重定向到另一个 InfluxDB 集群,直到该集群恢复运行,从而确保一致性。他们还能够禁用其基础设施的很大一部分,并将工作负载轻松路由到另一个数据中心,而不会影响用户。

Hulu Kafka InfluxDB

来自 Hulu 博客的架构图:Hulu 如何使用 InfluxDB 和 Kafka 扩展到每秒超过 100 万个指标

Wayfair 使用 Kafka 作为消息队列 用于应用程序指标。在他们的架构中,Kafka 夹在 Telegraf 代理之间。一个 Output Kafka Telegraf 代理将来自其应用程序的指标管道传输到 Kafka,然后 Kafka-Consumer Telegraf 代理从 Kafka 收集 这些指标并将它们发送到 InfluxDB。此模型使 Wayfair 能够连接到多个数据中心、临时注入处理钩子,并获得对严重中断的多日容忍度。

Wayfair - Kafka and Telegraf architecture

来自 Wayfair 博客的架构图:那时和现在:Wayfair 时间序列数据的重新思考

了解更多关于 Kafka 和 InfluxDB 的信息

Kafka 使企业能够构建实时、可扩展且容错的数据管道。Hulu 使用 InfluxDB 和 Kafka 来应对其高吞吐量指标摄取要求。如果您是 Kafka 的新手,并且这篇博客启发您尝试一下,请查看 使用 Docker 部署 Confluent Platform (Kafka) OSS 和这个 Kafka-Docker 仓库。如果您有任何问题,请将它们发布到我们的 社区站点或 Slack 频道。