Apache Kafka - 简介

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

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

什么消息系统是什么?

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

点对点消息传递系统

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

点对点消息系统

发布 - 订阅消息系统

在发布 - 订阅系统中,消息将保留在主题中.与点对点系统不同,消费者可以订阅一个或多个主题并使用该主题中的所有消息.在Publish-Subscribe系统中,消息生成器称为发布者,消息使用者称为订阅者.一个真实的例子是Dish TV,它发布不同的频道,如体育,电影,音乐等,任何人都可以订阅他们自己的频道,并在订阅频道可用时获得.

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将所有数据保存到磁盘,这实际上意味着所有写入都转到OS(RAM)的页面缓存.这使得将数据从页面缓存传输到网络套接字非常有效.