- Apache Kafka Tutorial
- Apache Kafka - Home
- Apache Kafka - Introduction
- Apache Kafka - Fundamentals
- Apache Kafka - Cluster Architecture
- Apache Kafka - Work Flow
- Apache Kafka - Installation Steps
- Apache Kafka - Basic Operations
- Simple Producer Example
- Consumer Group Example
- Integration With Storm
- Integration With Spark
- Real Time Application(Twitter)
- Apache Kafka - Tools
- Apache Kafka - Applications
- Apache Kafka Useful Resources
- Apache Kafka - Quick Guide
- Apache Kafka - Useful Resources
- Apache Kafka - Discussion
Apache Kafka - 简介
在大数据中,使用了大量的数据。关于数据,我们主要面临两个挑战。第一个挑战是如何收集大量数据,第二个挑战是分析收集到的数据。为了克服这些挑战,您必须需要一个消息传递系统。
Kafka 专为分布式高吞吐量系统而设计。Kafka 往往能够很好地替代传统的消息代理。与其他消息系统相比,Kafka 具有更好的吞吐量、内置分区、复制和固有的容错能力,这使其非常适合大规模消息处理应用。
什么是消息系统?
消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,而不用担心如何共享数据。分布式消息传递基于可靠消息队列的概念。消息在客户端应用程序和消息传递系统之间异步排队。有两种类型的消息传递模式可用 - 一种是点对点,另一种是发布-订阅 (pub-sub) 消息传递系统。大多数消息传递模式都遵循pub-sub。
点对点消息系统
在点对点系统中,消息保存在队列中。一个或多个消费者可以消费队列中的消息,但一条特定消息最多只能由一个消费者消费。一旦消费者读取队列中的消息,该消息就会从该队列中消失。该系统的典型示例是订单处理系统,其中每个订单将由一个订单处理器处理,但多个订单处理器也可以同时工作。下图描述了该结构。
发布订阅消息系统
在发布-订阅系统中,消息保存在主题中。与点对点系统不同,消费者可以订阅一个或多个主题并消费该主题中的所有消息。在发布-订阅系统中,消息生产者称为发布者,消息消费者称为订阅者。现实生活中的一个例子是 Dish TV,它发布了不同的频道,如体育、电影、音乐等,任何人都可以订阅自己的一组频道,并在订阅的频道可用时获取它们。
卡夫卡是什么?
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 速度非常快,每秒执行 200 万次写入。Kafka 将所有数据持久保存到磁盘,这本质上意味着所有写入都进入操作系统(RAM)的页面缓存。这使得将数据从页面缓存传输到网络套接字变得非常高效。