Apache Kafka - 简介



在大数据中,使用了海量的数据。关于数据,我们有两个主要挑战。第一个挑战是如何收集大量数据,第二个挑战是如何分析收集到的数据。为了克服这些挑战,您必须需要一个消息系统。

Kafka 旨在用于分布式高吞吐量系统。Kafka 倾向于作为更传统的消息代理的替代品发挥出色作用。与其他消息系统相比,Kafka 具有更高的吞吐量、内置分区、复制和固有的容错能力,这使其成为大型消息处理应用程序的理想选择。

什么是消息系统?

消息系统负责将数据从一个应用程序传输到另一个应用程序,以便应用程序可以专注于数据,而无需担心如何共享它。分布式消息传递基于可靠消息队列的概念。消息在客户端应用程序和消息系统之间异步排队。两种类型的消息模式可用 - 一种是点对点,另一种是发布-订阅(pub-sub)消息系统。大多数消息模式遵循pub-sub

点对点消息系统

在点对点系统中,消息会持久存储在队列中。一个或多个消费者可以消费队列中的消息,但特定消息最多只能被一个消费者消费。一旦消费者读取队列中的消息,它就会从该队列中消失。此系统的典型示例是订单处理系统,其中每个订单将由一个订单处理器处理,但多个订单处理器也可以同时工作。下图描绘了结构。

point-to-point Messaging system

发布-订阅消息系统

在发布-订阅系统中,消息会持久存储在主题中。与点对点系统不同,消费者可以订阅一个或多个主题并消费该主题中的所有消息。在发布-订阅系统中,消息生产者称为发布者,消息消费者称为订阅者。现实生活中的例子是卫星电视,它发布不同的频道,如体育、电影、音乐等,任何人都可以订阅他们自己的一组频道并在其订阅的频道可用时获取它们。

Publish-Subscribe Messaging system

什么是 Kafka?

Apache Kafka 是一个分布式发布-订阅消息系统和一个强大的队列,可以处理大量数据,并使您能够将消息从一个端点传递到另一个端点。Kafka 适用于离线和在线消息消费。Kafka 消息持久存储在磁盘上并在集群内复制以防止数据丢失。Kafka 建立在 ZooKeeper 同步服务之上。它与 Apache Storm 和 Spark 集成得非常好,用于实时流数据分析。

优势

以下是 Kafka 的一些优势 -

  • 可靠性 - Kafka 是分布式、分区、复制和容错的。

  • 可扩展性 - Kafka 消息系统可以轻松扩展而不会出现停机时间。

  • 持久性 - Kafka 使用分布式提交日志,这意味着消息尽快持久存储在磁盘上,因此它具有持久性。

  • 性能 - Kafka 对于发布和订阅消息都具有高吞吐量。即使存储了大量 TB 的消息,它也能保持稳定的性能。

Kafka 非常快,并保证零停机时间和零数据丢失。

用例

Kafka 可用于许多用例。其中一些列在下面 -

  • 指标 - Kafka 通常用于操作监控数据。这涉及聚合来自分布式应用程序的统计信息以生成集中化的操作数据馈送。

  • 日志聚合解决方案 - Kafka 可用于整个组织,以从多个服务收集日志并以标准格式将其提供给多个消费者。

  • 流处理 - Storm 和 Spark Streaming 等流行框架从主题读取数据,处理它,并将处理后的数据写入新主题,用户和应用程序可以在其中获取它。Kafka 的强大持久性在流处理的上下文中也非常有用。

对 Kafka 的需求

Kafka 是一个统一的平台,用于处理所有实时数据馈送。Kafka 支持低延迟消息传递,并保证在机器故障时容错。它能够处理大量不同的消费者。Kafka 非常快,每秒执行 200 万次写入。Kafka 将所有数据持久存储到磁盘,这基本上意味着所有写入都进入操作系统的页面缓存(RAM)。这使得从页面缓存到网络套接字传输数据非常高效。

广告