Apache Kafka 4.3.1 介绍与选型指南
Apache Kafka 4.3.1 的 KRaft 架构、主题分区模型、官方快速上手命令,及 Pulsar、Redpanda、RocketMQ 同类选型对比。
Apache Kafka 4.3.1 介绍与选型指南
目标:讲清 Apache Kafka 是什么、解决什么问题、由哪些组件构成、如何按官方 Quick Start 跑通第一个事件流,以及在当前版本 4.3.1 下的同类消息与流处理平台选型对比。本文为 A1 认知篇:全部内容基于 Apache Kafka 官方网站(kafka.apache.org)与官方 GitHub 仓库联网查证编写,关键论断随文标注来源,查询日期统一为 2026-10-18,不含本地安装实测。
一、信息基准
1.1 版本与许可信息
| 项目 | 内容 |
|---|---|
| 查询日期 | 2026-10-18 |
| 本次介绍版本 | 4.3.1 |
| 版本依据 | 官方下载页 kafka.apache.org/downloads「Supported releases」首列 4.3.1(Released June 25, 2026),二进制包 kafka_2.13-4.3.1.tgz;同页列出的受支持版本还有 4.2.2 与 4.1.2 |
| 发布节奏 | 官方下载页明示「The project goal is to have 3 releases a year」(目标每年 3 个版本,约每 4 个月一个),缺陷修复仅面向受支持版本发布 |
| 许可证 | Apache License 2.0(GitHub 仓库 license 信息:Apache-2.0) |
| 运行环境 | 官方 Quick Start 明示本地环境需 Java 17+;官方 README:项目以 Java 17 与 25 构建测试,clients 模块编译基线为 Java 11;4.0 升级说明新增 Java 23 支持 |
1.2 官方来源清单
| 来源 | 地址 | 用途 |
|---|---|---|
| 官方主页 | https://kafka.apache.org/ | 项目门户 |
| 下载页 | https://kafka.apache.org/downloads(重定向至 community/downloads/) | 受支持版本清单、发布节奏说明 |
| Quick Start | https://kafka.apache.org/quickstart | 官方最小上手路径 |
| 文档 | https://kafka.apache.org/documentation | 核心概念与配置参考 |
| GitHub 仓库 | https://github.com/apache/kafka | 源码、README |
| 4.0 升级说明 | https://kafka.apache.org/documentation/#upgrade(对应 4.0.0 发布说明) | Java 门槛与重大变更 |
二、软件概述
Apache Kafka 4.3.1 是 Apache 软件基金会旗下的分布式事件流平台(distributed event streaming platform),官方 Quick Start 将其定义为"可以让用户在多台机器之间读、写、存储与处理事件(events,文档中亦称 records 或 messages)"的平台(来源:官方 Quick Start,2026-10-18 查询)。事件按主题(topic)组织与存储,生产者客户端通过网络把事件写入 broker,broker 以持久、容错的方式按需保存事件,消费者客户端按订阅关系读取事件。
Kafka 于 4.x 时代完成了架构上的关键收敛:官方 Quick Start 的启动流程仅包含「生成集群 UUID → kafka-storage.sh format --standalone 格式化存储 → kafka-server-start.sh 启动」三步,全程不涉及 ZooKeeper,集群元数据由内置的 KRaft 共识协议管理;同时 4.0 发布说明把最低 Java 门槛提升至 Java 17 并新增 Java 23 支持。4.3.1 是当前官方受支持版本清单中的最新版本(2026-06-25 发布),官网同时保留 4.2.2、4.1.2 两条维护线。
三、核心架构与核心概念
3.1 事件、主题与分区
官方 Quick Start 的描述与示例输出给出了平台的基本模型:
- 事件(event):一次支付交易、一个地理位置更新、一张发货单等,皆可建模为事件;事件按键值组织,长期存储于主题中。
- 主题(topic):事件的逻辑归类,类比文件系统中的文件夹;官方示例以
kafka-topics.sh --create创建主题quickstart-events。 - 分区与副本:
kafka-topics.sh --describe的官方输出展示PartitionCount、ReplicationFactor、Leader、Replicas、Isr等字段,说明主题在物理上按分区切分、每个分区带副本并维护同步副本集合(ISR),这是水平扩展与容错的基础。
3.2 Broker 与 KRaft 模式
- broker:服务端进程,接收生产者写入并持久化事件,向消费者提供读取。
- KRaft:Kafka 内置的 Raft 共识协议,负责集群元数据管理。官方 Quick Start 中
kafka-storage.sh random-uuid生成集群 UUID、kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties完成存储格式化,整条启动路径不含 ZooKeeper 组件,体现 4.x 的单进程自管理模式(来源:官方 Quick Start,2026-10-18 查询)。
3.3 生产者与消费者
- 生产者(producer):官方示例
kafka-console-producer.sh,默认一行输入即一条事件写入主题。 - 消费者(consumer):官方示例
kafka-console-consumer.sh,从主题读取事件;消费位点由消费组模型管理,支持多消费组独立消费同一主题。
3.4 客户端生态
Kafka 官方提供多语言客户端与两大数据处理框架:Kafka Streams(流处理)与 Kafka Connect(数据管道连接器),以及 kafka-cli 系列命令行工具。README 还说明客户端模块的编译基线为 Java 11,便于嵌入较广的应用环境(来源:官方 README,2026-10-18 查询)。
四、功能特性
4.1 高吞吐持久化事件流
事件写入即持久化,broker 以顺序写与分区并行支撑高吞吐;事件可按需长期保留(官方 Quick Start 表述"as long as you need—even forever")。
4.2 KRaft 单进程运行
4.x 官方快速开始仅依赖 config/server.properties 即可拉起含元数据管理的完整服务,--standalone 模式面向单节点场景,降低部署与运维心智负担(来源:官方 Quick Start)。
4.3 可扩展的流处理与连接生态
Kafka Streams 提供在客户端库内完成流式计算的能力;Kafka Connect 提供与外部系统的标准化连接器框架;二者均随主发行版一起发布。
4.4 丰富的命令行运维工具
kafka-topics.sh、kafka-console-producer.sh、kafka-console-consumer.sh、kafka-storage.sh 等脚本覆盖主题管理、数据进出与存储格式化;官方 Quick Start 指出所有命令行工具不带参数运行即可显示用法。
4.5 版本与支持策略
官网明确目标为每年 3 个版本、仅对受支持版本做缺陷修复;截至查询日受支持版本为 4.3.1、4.2.2、4.1.2,历史版本归档在同一页面(来源:官方下载页,2026-10-18 查询)。
五、快速上手
以下命令逐条引自官方 Quick Start(来源:https://kafka.apache.org/quickstart ,2026-10-18 查询,版本以 4.3.1 为例;官方同页还提供基于 GraalVM 的 Native 发行与拉取 apache/kafka 官方发行物的方式,此处按本站规范仅收录发行包路径)。
5.1 获取并解压
$ tar -xzf kafka_2.13-4.3.1.tgz
$ cd kafka_2.13-4.3.1
官方提示:本地环境必须安装 Java 17+。
5.2 启动 Kafka 环境(KRaft)
# 生成集群 UUID
$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
# 格式化存储目录
$ bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties
# 启动 Kafka 服务
$ bin/kafka-server-start.sh config/server.properties
5.3 创建主题并读写事件
# 创建主题
$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
# 查看主题详情
$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
# 写入事件(默认每行一条)
$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
>This is my first event
>This is my second event
# 读取事件(--from-beginning 表示从头消费)
$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
六、适用场景与限制
6.1 适用场景
- 事件驱动架构与系统解耦:多生产者向主题写入、多消费组独立订阅,天然适配微服务间异步消息。
- 数据管道:配合 Kafka Connect 把数据库变更、日志等接入分析/存储系统。
- 实时流处理:Kafka Streams 在客户端侧完成窗口聚合、连接等计算,无需独立计算集群。
- 事件溯源与回放:事件按保留策略持久化,消费位点可重置,支持历史回放。
6.2 限制与注意
- 运行基线较高:官方 Quick Start 要求 Java 17+,4.0 起不支持更老 JDK,老旧环境需先升级运行时。
- 精确一次语义依赖配置:幂等生产者、事务与
read_committed消费需显式开启,跨分区事务的吞吐成本需评估。 - 弹性能力按分区扩展:主题分区数确定后,键到分区的映射随之固定,分区规划需要在容量设计阶段完成。
- 多租户与队列语义较弱:Kafka 以日志模型为主,若需要每条消息独立确认/删除的队列语义,需评估 4.x 引入的队列相关能力或改用其他消息系统。
七、同类选型对比
对比对象选取当前主流的三类消息/流平台:Apache Pulsar、Redpanda 与 Apache RocketMQ。下表数据均为 2026-10-18 联网实查:stars 与许可见各项目官方 GitHub 仓库页面,版本取自各仓库 releases/latest 重定向。
| 维度 | Apache Kafka 4.3.1 | Apache Pulsar | Redpanda | Apache RocketMQ |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | Apache-2.0 | BSL 1.1(Business Source License,2023 年起,非 OSI 认证开源) | Apache-2.0 |
| GitHub stars | 约 34,036 | 约 15,348 | 约 12,620 | 约 22,642 |
| 最新版本 | 4.3.1(2026-06-25,官方下载页) | v5.0.0(GitHub releases/latest) | v26.2.2(GitHub releases/latest) | rocketmq-all-5.5.1(GitHub releases/latest) |
| 版本节奏 | 官方目标每年 3 个版本,仅维护受支持版本 | 官方未公布固定节奏 | 官方未公布固定节奏 | 官方未公布固定节奏 |
| 兼容矩阵 | 官方 Quick Start 要求 Java 17+;clients 编译基线 Java 11 | 官方未在本次查询中公布统一门槛 | 自带发行物,兼容 Kafka API 的定位由官方声明 | 官方未在本次查询中公布统一门槛 |
| 架构差异要点 | KRaft 元数据自管理,存储与计算同进程 | 存算分离,BookKeeper 层负责存储 | 单二进制、Kafka API 兼容为卖点 | NameServer + Broker 主从架构,事务/定时消息见长 |
选型建议:以成熟生态、社区规模与官方支持节奏为先,Kafka 仍是事件流平台的默认答案;需要存算分离与跨机房地理复制优先考虑 Pulsar,追求 Kafka API 兼容与更低运维成本且接受 BSL 许可可选 Redpanda,强事务消息与电商类场景可评估 RocketMQ。
八、参考链接
| 编号 | 链接 | 说明 |
|---|---|---|
| 1 | https://kafka.apache.org/ | Apache Kafka 官方主页 |
| 2 | https://kafka.apache.org/quickstart | 官方 Quick Start |
| 3 | https://kafka.apache.org/downloads | 官方下载页(受支持版本清单) |
| 4 | https://kafka.apache.org/documentation | 官方文档(核心概念与升级说明) |
| 5 | https://github.com/apache/kafka | 官方 GitHub 仓库(README 含构建与 Java 说明) |
| 6 | https://kafka.apache.org/documentation/#upgrade | 版本升级说明入口 |
| 7 | https://github.com/apache/pulsar/releases | Pulsar 版本记录(对比数据源) |
| 8 | https://github.com/redpanda-data/redpanda/releases | Redpanda 版本记录(对比数据源) |
| 9 | https://github.com/apache/rocketmq/releases | RocketMQ 版本记录(对比数据源) |