🌟 Kafka是什么?
Apache Kafka 是一个分布式流处理平台,主要用于高吞吐、低延迟的实时数据管道和流处理场景。它像是一个分布式消息队列,但更强大,支持持久化存储、水平扩展、容错机制,广泛应用于日志收集、实时监控、事件溯源等场景。
📚 Kafka核心概念
-
Producer(生产者)
-
向Kafka发送消息的客户端。
-
支持同步/异步发送,可指定消息发送到哪个Topic的Partition。
-
-
Consumer(消费者)
-
从Kafka拉取消息的客户端。
-
消费者通过**消费者组(Consumer Group)**实现负载均衡。
-
-
Topic(主题)
-
消息的逻辑分类,类似数据库中的表。
-
一个Topic可被分为多个Partition(分区),实现并行处理。
-
-
Partition(分区)
-
数据分片的单元,每个Partition是一个有序、不可变的消息序列。
-
分区支持水平扩展,每个分区的数据存储在多个**副本(Replica)**中。
-
-
Broker(代理)
-
Kafka集群中的单个节点,负责存储和处理消息。
-
多个Broker组成一个Kafka Cluster。
-
-
Offset(偏移量)
-
每条消息在Partition中的唯一标识,由Consumer自行维护消费进度。
-
🚀 Kafka为什么快?
-
顺序读写磁盘
Kafka将消息追加到文件末尾,利用磁盘顺序读写的高性能特性(甚至比随机内存访问更快)。 -
零拷贝(Zero-Copy)
使用sendfile
系统调用,减少数据在内核态和用户态之间的拷贝次数。 -
批量发送与压缩
Producer批量发送数据,Consumer批量拉取,减少网络开销。 -
分区并行处理
多个Partition可并行生产和消费,提升吞吐量。
🛠 Kafka应用场景
场景 | 说明 |
---|---|
日志收集 | 统一收集各服务的日志,供ELK等系统分析。 |
消息队列 | 解耦生产者和消费者,如订单系统与库存系统的异步通信。 |
实时流处理 | 结合Flink/Spark Streaming做实时计算。 |
事件溯源 | 记录用户行为或系统状态变化,便于回溯。 |