✋ 简介:大家好 ~ 欢迎来到青蛙的池塘,这里是技术分享的池塘 ~ 📕 系列专栏:Java 源码系列、优化方案系列、生产问题系列等 💡 博主正在努力完成 2025 – 2026 年计划:基石计划 ✍️ 雄关漫道真如铁,而今迈步从头越! 🔥 如果觉得有收获的话,别忘了点赞 👍 收藏 ⭐️ 哦 ~
文章目录
- 消息队列
-
- 三大核心功能
-
- 削峰填谷
- 异步处理
- 解耦
- Kafka 版本演进
-
- 0.8 版本:Kafka 初成立
- 0.11 版本:引入幂等性和事务功能
- 2.0 版本:安全与性能
- 2.8+3.0 版本:新架构去中心化
- 4.0 版本:全新全能
- 版本重大更新图示
- Kafka的特点
- Kafka的架构是怎么样的?
消息队列
说白了,消息队列就是个 “中转站 + 缓冲带”,专门帮不同系统传话。举个例子:你在网上买了个杯子,商家(生产者)得把发货信息告诉快递员(消费者),它会经历这三步:
三大核心功能
还是以快递为例子来介绍消息队列的三大核心功能~ 
削峰填谷
想象你家楼下的快递站(消息队列)平时每天收 100 件快递,3 个快递员(消费者 / 后端系统)刚好能送完,岁月静好~ 但双十一当天,电商商家(生产者)疯狂发货,一下子涌来 5000 件快递!要是没有快递站就会出现以下问题:
有了快递站的削峰填谷,针对上述的问题:
异步处理
以前没有菜鸟之类的快递站时,商家发货得这么干:
有了快递站我们就可以这样操作:
快递员后续什么时候来取件、什么时候送货(消费者异步处理),商家完全不用管 —— 既提升了商家的发货效率,也不用让用户等半天才能看到 “已发货” 状态,这样就解决了上述的问题~
解耦
解耦这种思维在程序设计中很重要!! 还是以前的老模式:
有了快递站之后:
就算快递员辞职、商家换地址,只要还和快递站对接,对方完全不受影响,这就是解耦,让每个环节都能独立运作
Kafka 版本演进
0.8 版本:Kafka 初成立
- 核心突破:首次引入消息副本机制,提供数据持久化和高可用性保障 ~
- 重要改进:
- 实现了分布式架构的核心 ——Leader-Follower 模式,支持自动故障转移;
- 引入新 Producer API,从直接连接 ZooKeeper 转向连接 Broker,简化架构;
- 支持消息批量发送,大幅提升性能;
0.11 版本:引入幂等性和事务功能
- 生产者幂等性:通过 “PID + 序列号” 机制,确保消息即使因网络问题重传也不会重复消费,实现 “Exactly-Once” 精确一次语义~
- 事务支持:允许跨分区的原子性操作,确保 “要么全成功,要么全失败”,特别适合金融等强一致性场景
- 消息格式重构(V2 版本),为后续功能扩展奠定基础
2.0 版本:安全与性能
- 安全:
- 支持 OAuth2 认证和前缀 ACL 权限控制,实现 “精细到消息级别的权限管理”;
- 默认开启 SSL 连接主机名验证,防止中间人攻击;
- 增强了数据加密和传输保护机制;
- 性能:
- 优化内存使用和垃圾回收,减少服务器宕机风险;
- 支持 ZStandard 压缩,大幅减少磁盘空间占用和网络 I/O 消耗(压缩率比 Gzip 提升 30%+);
- 增强消费者组协议,减少 Rebalance 开销(对,就是你想的哪个极其影响性能的 Re);
2.8+3.0 版本:新架构去中心化
- KRaft 模式:
- 引入KRaft 元数据管理机制,彻底告别对 ZooKeeper 的依赖(使用过的同学都知道这玩意有多重)
- 将元数据管理直接集成到 Kafka 内部,减少外部依赖,提升系统稳定性
- 使集群管理和部署变得更加简单,故障恢复速度提升 50% 以上
- 性能飞跃:
- 支持百万级分区(之前仅支持几万),大幅扩展应用场景(不仅限于消息队列了!)
- 控制器故障恢复从 “秒级” 降至 “毫秒级”,几乎让故障 “无感”
- Producer 默认启用最强交付保证(acks=all + 幂等性),确保消息万无一失
4.0 版本:全新全能
- 队列功能:
- 引入 “共享组 (Share Group)” 机制,让 Kafka 原生支持传统队列语义
- 允许多消费者并行处理同一分区消息,实现 “点对点” 消息传递模式
- 支持消息级 ACK/NACK 确认,提供更精细的消息控制(类似 RabbitMQ 的手动确认)
- 彻底独立:
- 完全移除对 ZooKeeper 的支持,默认仅运行 KRaft 模式,架构更加简洁
- 全新的消费者组重平衡协议(KIP-848),几乎消除 “Stop-the-World” 现象,让服务更加稳定
- 增强的客户端自恢复能力,在遇到网络问题时能主动重新连接
版本重大更新图示

Kafka的特点
Kafka的架构是怎么样的?
Kafka 的整体架构比较简单,是显式分布式架构,主要由 Producer(生产者)、broker(Kafka集群)和 consumer(消费者) 组成。

如上图中,包含了 Broker1、Broker2和 Broker3组成了一个集群。用来提升高可用性。 在集群中,每个分区(partition)都可以有多个副本。这些副本中包含了一个 Leader (也可以叫做Leader Partition 或者 Leader Replication) 和多个 Follower (也可以叫做Follower Partition 或者 Follower Replication),只有 Leader 才能处理生产者和消费者的请求,而 Follower 只是 Leader 的备份,用于提供数据的冗余备份和容错能力。如果 Leader 发生故障,Kafka 集群会自动将 Follower 提升为新的 Leader ,从而实现高可用性和容错能力。

