1-Kafka介绍及常见应用场景
Kafka 介绍
Apache Kafka 是一个开源的 分布式流处理平台,最初由 LinkedIn 开发,后捐赠给 Apache 软件基金会。它被设计用于高吞吐量、低延迟、可水平扩展地处理实时数据流。官网地址是:https://kafka.apache.org/
以下是 Kafka 的核心介绍:
核心概念
消息系统 (Messaging System)
Kafka 充当生产者和消费者之间的消息中间件,解耦系统,确保可靠的数据传递。
流处理平台 (Stream Processing)
支持实时处理数据流(如过滤、转换、聚合)。
存储系统 (Storage System)
数据可持久化存储(默认保留7天,可配置),支持故障恢复。
核心组件
组件 | 作用 |
---|---|
Producer 生产者 | 向 Kafka 推送数据(如日志、事件) |
Consumer 消费者 | 从 Kafka 拉取数据并进行处理 |
Broker Kafka 服务器节点 | 组成集群,负责存储和传递消息 |
Topic 逻辑消息分类(如 user_activity) | 生产者按 Topic 发送消息 |
Partition Topic 的分区(物理分片) | 实现并行处理和水平扩展。每个分区内消息有序 |
Replica 分区的副本(Leader 处理读写,Follower 同步数据) | 保障高可用 |
ZooKeeper | 管理集群元数据、Broker 状态和选举(Kafka 3.0+ 逐步移除依赖) |
核心特性
- 吞吐量:单机每秒可处理 数十万条消息(轻松达百万级/秒),集群可扩展至 PB/天 级别。
- 延迟:消息从生产到消费可控制在 毫秒级(通常 2~10ms)。
- 技术支撑:
✅ 顺序磁盘 I/O(避免随机寻址)
✅ 零拷贝(Zero-Copy)技术减少内核态数据复制
✅ 批量压缩(Snappy、LZ4)
- 持久化:所有消息直接写入磁盘(非内存缓存),支持 TB 级数据保留(可配置保留策略)。
- 高可靠:
✅ 副本机制(Replication):每个分区多副本存储(默认 3 副本)
✅ ISR(In-Sync Replicas) 机制保障数据一致性
✅ 生产者可配置 acks=all 确保数据写入所有副本后才确认
- 无缝扩容:
✅ 通过增加 Broker 节点扩展集群容量
✅ 通过增加 Topic 分区数提升并行度 - 负载均衡:分区自动均衡到集群所有节点,无需人工干预。
- 去中心化:无单点瓶颈,Broker 节点对等。
- 故障自愈:
✅ Leader 分区故障时,Follower 自动选举为新 Leader
✅ 消费者组自动重平衡(Rebalance)
✅ 数据副本保障节点宕机时 零数据丢失
- 多租户支持:通过认证(SASL/SSL)和配额(Quotas)实现资源隔离。
- 丰富生态:
✅ Kafka Connect:快速集成数据库、ES、S3 等外部系统
✅ Kafka Streams:轻量级流处理库(无需额外集群)
✅ Schema Registry:统一管理 Avro/Protobuf 消息格式
- 发布/订阅 & 队列模式:
✅ 广播模式:多个消费者组独立消费全量数据
✅ 队列模式:同组内消费者分区负载均衡(每条消息仅被组内一个消费者处理) - 位移管理:消费者可手动/自动提交消费进度(Offset),支持重播历史数据。
- 跨系统一致性:通过 Kafka Streams API 或 事务型生产者(idempotence=true + 事务)实现:
✅ 生产端:避免消息重复写入
✅ 消费端:确保“处理 + 提交 Offset”原子性
典型应用场景
-
实时数据管道
将数据从源系统(数据库、日志)同步到数据仓库(如 Hadoop、Snowflake)。 -
事件驱动架构
微服务间通过事件通信(如订单支付触发库存更新)。 -
日志聚合
集中收集分布式系统的日志(替代 ELK 中的 Logstash)。 -
实时流处理
结合 Kafka Streams 或 Flink 实时分析用户行为、监控指标。 -
消息队列
替代传统 MQ(如 RabbitMQ),尤其适用于大数据量场景。
版本与生态
主流版本:Kafka 3.x(已移除 ZooKeeper 依赖,使用 KRaft 共识协议)。
与其他消息队列的对比优势
特性 | Kafka | RabbitMQ / RocketMQ |
---|---|---|
吞吐量 | ⭐⭐⭐⭐⭐ (百万级/秒) | ⭐⭐ (万级/秒) |
数据持久化 | ⭐⭐⭐⭐⭐ (磁盘存储 + 多副本) | ⭐⭐ (内存为主,持久化性能低) |
水平扩展 | ⭐⭐⭐⭐⭐ (分区 + Broker 动态扩展) | ⭐⭐ (集群扩展复杂) |
消息回溯 | ⭐⭐⭐⭐⭐ (支持任意时间点重消费) | ⭐ (需手动备份) |
流处理能力 | ⭐⭐⭐⭐ (原生 Kafka Streams 支持) | ❌ (需额外工具) |
参考:
deepseek
B站项桦瑾Kafka介绍