Kafka入门
🐘 什么是 Kafka?
Apache Kafka 是一个分布式流处理平台,用于构建实时数据管道和流处理应用。它最初由 LinkedIn 开发,后来贡献给 Apache 基金会,并成为最受欢迎的消息队列之一。
🧱 核心特性
特性 | 说明 |
---|---|
高吞吐量 | 每秒处理上百万条消息,轻轻松松 |
可扩展性 | 水平扩展,不怕用户猛增 |
持久化 | 消息写入磁盘、可配置保留时间 |
容错性 | 多副本机制,保证数据不丢 |
发布-订阅模式 | 类似“订报纸”,生产者发消息,消费者订阅消费 |
🧩 Kafka 的核心组件
组件名 | 描述 |
---|---|
Producer(生产者) | 发送消息到 Kafka 的客户端 |
Consumer(消费者) | 从 Kafka 中读取消息 |
Broker(代理) | Kafka 的服务节点,负责存储和转发消息 |
Topic(主题) | 消息的分类通道,相当于“邮箱的文件夹” |
Partition(分区) | 每个主题可以有多个分区,实现并发处理 |
Zookeeper(协调者) | Kafka 使用它来进行分布式协调(新版本可以不依赖) |
📦 Kafka 工作流程简图
Producer ---> [Kafka Topic 分区1]---> [Kafka Topic 分区2]---> ...↓Broker 存储消息↓Consumer Group 读取消息
📚 Kafka 常见使用场景
日志收集系统:比如将应用日志汇总分析
订单系统:订单创建、库存扣减、发送通知等解耦处理
实时数据分析:搭配 Spark、Flink 实现实时流处理
消息队列替代品:比传统 MQ 更强大更高吞吐
用户行为跟踪:比如网站点击、页面停留等行为实时记录
✅ Kafka 的优缺点
优点:
极高性能和可扩展性
消息持久化,支持消息重放
支持多消费者订阅和消费组机制
缺点:
使用和维护门槛略高(分布式系统,配置多)
对延迟不敏感场景更适合(不是实时极低延迟)
老版本依赖 Zookeeper,部署稍复杂(新版本已支持 KRaft 模式)
🚀 快速感知:Kafka 和其他 MQ 的对比
特性/中间件 | Kafka | RabbitMQ | RocketMQ |
---|---|---|---|
吞吐量 | 极高 | 中等 | 高 |
消息顺序 | 保证分区内顺序 | 保证通道内顺序 | 支持顺序 |
持久性 | 默认持久化 | 可配置持久化 | 默认持久化 |
适用场景 | 实时大数据流、日志 | 企业系统异步通信 | 阿里系项目,性能要求高 |
✨ 总结一句话
Kafka 是企业级高吞吐的消息中间件,擅长处理海量数据的实时流。