如今,随着物联网和智能设备的兴起,我们以前所未有的速度生成数据。使用分布式计算,数据生成到某处并在其他地方处理。设备上的传感器或 UI 将某些数据(手动或自动)捕获为事件,并将其发送到其他某个单元进行处理。这种情况会持续发生。

这些事件可能会以固定速率或突发处理,从而导致事件流。此过程称为事件流。在大多数情况下,这些事件以非常高的速度(秒甚至毫秒)生成。因此,我们需要以相同或更高的处理速率处理这些事件流。

今天,Apache Kafka 提供了一个分布式流处理引擎 Kafka-Streams。在本系列文章中,我们将首先尝试介绍:

  1. 卡夫卡及其使用案例。

  2. 卡夫卡 API 和卡夫卡流 API。

  3. 设置单个节点 Kafka 群集。

  4. 处理 GPS 事件,实时分析在线和离线车辆。

前三个部分向您介绍与 Kafka 和实时流处理相关的概念和术语。第四部分的代码在此Github 存储库中可用。

阿帕奇·卡夫卡

Apache Kafka 是一个开源分布式流处理平台,最初由LinkedIn开发,后来在 2011 年捐赠给 Apache。

我们可以将 Kafka 描述为文件的集合,充满了分布在多台计算机上的消息。大多数 Kafka 类比都围绕着将这些不同的单个日志捆绑在一起,可靠地将消息从生产者路由到使用者,复制以容错,以及优雅地处理故障。其体系结构从 HDFS、HBase 或 Cassandra 等存储系统继承的比从实现 JMS 或 AMQP 的传统邮件系统继承更多。底层抽象是一个分区日志,本质上是一组分布在多台计算机上的仅追加文件。这鼓励顺序访问模式。Kafka 群集是一个分布式系统,用于将数据传播到多台计算机上,以便容错和线性横向扩展。

Kafka 已迅速从邮件系统演变为具有以下属性的成熟流式处理平台:

  • 可 伸缩。

  • 容错。

  • 发布-订阅消息系统。

  • 与大多数邮件系统相比,吞吐量更高。

卡夫卡作为流媒体平台的能力

1. 发布和订阅记录流

我们已经有许多邮件系统。为什么我们还需要一个?Kafka 的核心是卑微的、不可变的提交日志,您可以从那里订阅它,并将数据发布到任意数量的系统或实时应用程序。与消息队列不同,Kafka 是一个高度可扩展、容错的分布式系统。

与传统的邮件系统相比,Kafka 具有更强的订购保证。传统的队列按在服务器上的顺序保留记录,如果多个使用者从队列中使用,则服务器按记录的存储顺序将记录分出。但是,尽管服务器按顺序将记录发出,但记录会异步传递给使用者,因此它们可能会按顺序到达不同的使用者。
卡夫卡可以更高效地这样做。Kafka 可在一系列消费流程中提供订购保证和负载平衡

2. 以容错持久方式存储记录流

在 Kafka 中,数据以容错方式使用数据复制写入磁盘无论您服务器上有 50 KB 或 50 TB 的持久性数据,Kafka 都将执行相同的功能。因此,我们可以认为 Kafka 是一种专用分布式文件系统,专用于高性能、低延迟的提交日志存储、复制和传播。

3. 记录流发生时处理记录流

如果没有在数据到达时操作数据的能力,流式处理平台将不完整。Apache Kafka 中的 Streams API 是一个功能强大的轻量级库,允许动态处理。

在 Kafka 中,流处理器是任何从输入主题获取连续数据流、对此输入执行一些处理以及生成源数据流以输出主题的任何内容。
例如,零售应用程序可能会获取销售和发货的输入流,并输出从这些数据中计算的重新排序和价格调整流。

可以使用生产者和消费者 API 直接完成简单处理。对于更复杂的转换,Kafka 提供了完全集成的流 API。

阿帕奇·卡夫卡的概念

  • Kafka 在一个或多个可以跨多个数据中心的服务器上作为群集运行。

  • Kafka 群集将记录流存储在称为主题的类别中。

  • 每个记录由一个键、一个值和一个时间戳组成。

卡夫卡使用案例

Kafka 用于两大类应用。它可以构建实时流数据管道,在系统和应用程序之间可靠地移动数据。它还可用于构建实时流式处理应用程序,以转换或响应 od 数据流。

这些用例包括:

  • 消息。

  • 实时网站活动跟踪。

  • 指标。

  • 日志聚合。

  • 流处理。

  • 事件源。

  • 提交日志。

在本系列的这一部分,我们介绍了ApacheKafka及其基本功能。在第二部分中,我们将介绍卡夫卡的API。

请随时分享任何反馈或询问任何问题,你可能有!

Comments are closed.