Kafka 生态全景
定义与作用
Kafka 不是一个孤立的产品,而是现代数据架构的"中枢神经系统"。理解 Kafka 在生态中的位置,才能理解它为什么被称为"分布式系统的基础设施"。
Kafka 在大数据生态中的位置
核心生态组件
| 组件 | 作用 | 与 Kafka 的关系 |
|---|---|---|
| Kafka Connect | 数据导入/导出框架 | Kafka 自带,连接外部系统 |
| Kafka Streams | 轻量级流处理库 | Kafka 自带,Java 库 |
| Schema Registry | Schema 管理(Avro/Protobuf) | Confluent 提供,配合序列化 |
| MirrorMaker 2 | 跨集群数据复制 | Kafka 自带,容灾与多活 |
| KSQL / ksqlDB | SQL 流处理 | Confluent 提供,流式 ETL |
| Cruise Control | 自动均衡与运维 | LinkedIn 开源 |
典型数据链路
链路 1:日志采集与分析
应用日志 → Filebeat → Kafka → Logstash → Elasticsearch → Kibana
链路 2:CDC 数据同步
MySQL Binlog → Debezium → Kafka → Kafka Streams → 数据仓库
链路 3:实时推荐
用户行为 → Kafka → Flink → Redis/特征存储 → 推荐服务
链路 4:事件溯源(Event Sourcing)
领域事件 → Kafka(Compact Topic) → Kafka Streams → 物化视图
面试高频考点
Q:Kafka 和传统消息队列(RabbitMQ、ActiveMQ)的本质区别是什么?
A:不是速度比较,而是设计哲学的根本差异:
| 传统消息队列 | Kafka | |
|---|---|---|
| 核心目标 | 消息投递 | 流式数据平台 |
| 数据模型 | 队列(消费后删除) | 日志(持久化、可重放) |
| 消费模式 | Push | Pull |
| 顺序性 | 单队列有序 | 分区内有序 |
| 扩展性 | 纵向扩展 | 横向扩展(分区) |
| 适用场景 | RPC 调用、任务分发 | 事件流、数据分析、日志聚合 |
Kafka 不只是一个"消息队列",它是一个分布式提交日志(Distributed Commit Log)。这个定位决定了它的持久化、可重放、多订阅等能力远超传统 MQ。