什么是 Kafka?






4.90/5 (12投票s)
本文解释了什么是 Kafka 及其架构和实现,以及它与 Akka 的区别。
Kafka
Kafka 是一个分布式发布-订阅消息系统。 Kafka 快速、可扩展且持久耐用。它将消息流保存在主题中。生产者将数据写入主题,消费者从主题读取数据。
Kafka 生态系统需要 Zookeeper 的支持,因此需要下载它,更改其属性并最终设置环境。运行 Zookeeper 后,应下载 Kafka,然后开发人员可以在一些指令的帮助下创建 broker、集群和主题。
什么是消息系统?
数据工程中最具挑战性的部分之一是如何收集和传输来自不同点的大量数据到分布式系统进行处理和分析。 海量数据需要通过消息队列正确解耦,因为如果一部分数据传输失败,其他数据可以在系统恢复时传输和分析。 有两种消息队列既可靠又是异步的,可以满足上述目的。 点对点和发布者-订阅者。
点对点
在点对点或一对一中,有一个发送者和多个正在侦听发送者的消费者。 当一个消费者收到来自队列的消息时,该特定消息将从队列中消失,其他消费者无法获取它。
发布和订阅系统
而在发布者-订阅者中,发布者将消息发送给多个同时侦听发布者的消费者或订阅者,每个订阅者都可以获得相同的消息。 数据应该通过数据管道传输,该管道负责整合来自源的数据。
什么是 Kafka 架构?
Kafka 是分布式发布者-订阅者,具有高吞吐量,可以处理大量数据。 Kafka 是实时数据流,每秒可以处理 200 万次写入。
Kafka 架构如下
主题和发布者
有一个发布者发送消息。 消息根据主题进行分类,每个主题有一个或多个分区,每个分区都有自己的偏移地址。 例如,如果我们将一个主题的复制因子设置为 2,那么 Kafka 将为每个分区创建两个相同的副本并将其放置在集群中。
集群和 Broker
Kafka 集群包括 Broker——服务器或节点,每个 Broker 都可以位于不同的机器上,并允许订阅者选择消息。 因此,复制是分区的备份,这意味着 Kafka 是持久的,有助于容错。
动物园管理员
Kafka 集群不保留自身生态系统的元数据,因为它是不保存状态的。 因此,Kafka 依赖于 Zookeeper 来跟踪元数据。 Zookeeper 应该首先启动。 实际上,Zookeeper 是 Broker 和消费者之间的接口,它的存在对于容错是必要的。 Kafka Broker 负责负载平衡,假设有一个主题和该主题的多个分区,每个分区都有一个 Leader,它定期从 Zookeeper 确认其偏移量。 因此,如果一个节点或 Broker 发生故障,Kafka 可以从 Zookeeper 请求的最后一个偏移地址继续运行,因此 Zookeeper 在崩溃情况下在 Kafka 恢复中起着至关重要的作用。
Kafka 触发
- 从以下链接下载 Kafka:https://kafka.apache.org/downloads
- Kafka 配置,转到路径
- C:\kafka_2.11–0.10.2.0\config
server.properties
- log.dirs=C:\kafka_2.11–0.10.2.0\kafka-logs
- listeners=PLAINTEXT://127.0.0.1:9092
zookeeper.properties
- dataDir=C:\kafka_2.11–0.10.2.0\zookeeper
consumer.properties
- zookeeper.connect=127.0.0.1:2181
- 从以下链接下载 Zookeeper:“zookeeper-3.4.13.tar.gz” https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/
- 启动 Zookeeper:
- cmd 提示符
- cd C:\zookeeper-3.4.13\bin
- zkserver
- 启动 Kafka:
- cmd 提示符
- cd C:\kafka_2.11–0.10.2.0
- 命令:“.\bin\windows\kafka-server-start.bat .\config\server.properties”
- 在 Kafka 上创建主题
- cmd 提示符
- cd C:\kafka_2.11–0.10.2.0\bin\windows
- 命令:“kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Topic-IoT”
- 删除 Kafka 上的主题
- cmd 提示符
- cd C:\kafka_2.11–0.10.2.0\bin\windows
- 命令:“./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic <主题名称>”
- 在 Kafka 上创建生产者
- cmd 提示符
- cd C:\kafka_2.11–0.10.2.0\bin\windows
- 命令:“kafka-console-producer.bat --broker-list localhost:9092 --topic Topic-IoT”
- 在 Kafka 上创建消费者
- cmd 提示符
- cd C:\kafka_2.11–0.10.2.0\bin\windows
- 命令:“kafka-console-consumer.bat --zookeeper localhost:2181 --topic Topic-IoT”
- 现在,无论你在“生产者”上写什么都会出现在“消费者”上。
一个生产者 - 发布者和两个消费者或订阅者
Kafka 管理,创建集群和主题
您还可以使用此链接 https://github.com/yahoo/kafka-manager 以使用可视化配置。 你只需要在 windows 中配置主机
C:\Windows\System32\drivers\etc\hosts
追加此行
127.0.0.1 kafkaserver
Kafka vs Akka
历史
- 2019 年 6 月 20 日:初始版本