大家好,这是我新开的 Kafka 系列博文第一篇。后面会按顺序写:核心概念、安装部署、Java 客户端使用、生产者/消费者原理、分区与副本、高可用、事务、性能调优等,日常工作遇到问题与解决思路。适合想系统学 Kafka 的后端同学。
一、Kafka 是什么?
简单一句话:
Kafka 是一个分布式、高吞吐、可持久化的消息队列/事件流平台。
主要能干三件事:
-
发消息、收消息(消息队列 MQ)
-
把数据按顺序存下来(事件日志)
-
做流式处理(实时计算、ETL)
它不是单纯的 MQ,更像一个分布式事件总线,大数据、微服务、日志收集都离不开它。
二、为什么要用 Kafka?核心解决什么问题?
日常开发里,你大概率会遇到这些痛点:
-
系统耦合严重:A 调 B,B 挂了 A 也崩
-
流量突刺:秒杀/日志暴增,直接打挂下游
-
数据要多端消费:日志既要存 ES,又要进 Hive,还要实时监控
-
数据不能丢,还要顺序不乱
Kafka 就是为这些场景设计的,核心优势:
-
超高吞吐:单机几十万 TPS 很常见
-
可持久化:消息落磁盘,不怕丢
-
分布式可扩展:加机器就能扛更大流量
-
多副本高可用:一台挂了不影响服务
-
支持重复消费:适合大数据回放、重跑任务
三、Kafka 核心概念(必须记住)
刚入门先把这几个词搞懂,后面学起来不费劲:
- Broker
Kafka 服务器节点,一个 Kafka 集群由多个 Broker 组成。
- Topic(主题)
消息的分类,比如: user-login-log 、 order-create 。
生产者往 Topic 发,消费者从 Topic 读。
- Partition(分区)
Topic 下面的分片,是 Kafka 高吞吐和扩展的关键。
-
一个 Topic 可以有多个分区
-
分区内消息严格有序
-
不同分区之间不保证全局有序
- Producer(生产者)
发消息的一方。
- Consumer(消费者)
读消息的一方。
- Consumer Group(消费者组)
一组消费者共同消费一个 Topic,同一个组内,一条消息只会被一个消费者消费。
用来实现:负载均衡 + 消息不重复处理。
- Offset(偏移量)
分区内每条消息的序号,消费者靠它记录读到哪了。
四、Kafka 典型使用场景
- 异步解耦
下单成功→发消息→积分、通知、统计慢慢处理,不阻塞主流程。
- 削峰填谷
秒杀/大促流量先进 Kafka,下游按能力慢慢消费,防止被打垮。
- 日志收集
Nginx/应用日志→Kafka→ES/ClickHouse/Hive,统一日志链路。
- 数据同步与 CDC
MySQL binlog→Kafka→数仓/缓存更新,实现准实时数据同步。
- 实时流计算
Kafka + Flink/Faust 做实时推荐、实时大屏、风控计算。
五、本篇小结
这一篇我们先搭个框架:
-
Kafka 是分布式高吞吐事件流平台
-
解决:解耦、削峰、多端消费、高可用、不丢数据
-
核心概念:Broker、Topic、Partition、Producer、Consumer、Consumer Group、Offset
下一篇我们就进入实操:
-
Kafka 单机/集群安装与配置
-
命令行生产消费
-
快速验证是否可用