Apache Kafka - 简介

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

Kafka 专为分布式高吞吐量系统而设计。 Kafka 可以很好地替代更传统的消息代理。 与其他消息系统相比,Kafka 具有更好的吞吐量、内置的分区、复制和固有的容错性,这使其非常适合大规模消息处理应用程序。


什么是消息系统?

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

点对点消息系统

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

点对点消息系统

发布-订阅消息系统

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

发布-订阅消息系统

什么是卡夫卡(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 将所有数据持久化到磁盘,这实质上意味着所有写入都进入了 OS(RAM)的页面缓存。 这使得将数据从页面缓存传输到网络套接字非常有效。