在 CentOS 上选择 Kafka 的版本与组合建议
一、选择原则
- 优先匹配 Java 运行时:Kafka 3.x 系列普遍支持 Java 8/11;若计划使用 Kafka 4.0+,需要 Java 17+。这是版本选择的“硬约束”。
- 明确部署模式:Kafka 自 2.8+ 引入 KRaft 模式(去 ZooKeeper),但 3.x 仍默认携带并可使用内置 ZooKeeper;若追求运维简化与演进,可优先 KRaft。
- 关注发行线状态:如 3.3.x 已进入 Archived,生产不建议新上;新项目建议选仍在维护的 3.8.x/3.9.x 稳定版。
- 选择与生态兼容的 Scala 版本:常见为 2.12/2.13,功能差异不大,更多考虑依赖库与团队习惯。
二、版本与 CentOS 组合推荐
| 场景 |
CentOS 版本 |
推荐 Kafka 版本 |
运行模式 |
说明 |
| 新项目、长期维护 |
CentOS 7/8/Stream |
3.8.x 或 3.9.x(如:kafka_2.13-3.9.0) |
KRaft 或 内置 ZooKeeper |
3.x 稳定、生态成熟;KRaft 减少外部依赖,内置 ZK 便于入门与测试 |
| 必须使用 Java 8 |
CentOS 7/8 |
3.8.x(如:kafka_2.13-3.8.0) |
KRaft 或 内置 ZooKeeper |
3.8 仍支持 Java 8;4.0+ 需要 Java 17+ |
| 存量系统、历史依赖 |
CentOS 7 |
3.3.2(kafka_2.13-3.3.2) |
ZooKeeper |
3.3 已归档,仅建议维护存量;不建议新部署 |
| 老环境快速验证 |
CentOS 7 |
2.7.0(kafka_2.12-2.7.0) |
ZooKeeper |
仅用于验证或过渡,不建议生产使用 |
三、快速决策步骤
- 确认 Java 版本:执行
java -version。若为 Java 8,选 3.8.x;若为 Java 11/17+,选 3.9.x 或更高。
- 选择 部署模式:希望去 ZK 选 KRaft;图省事或做功能验证可用 内置 ZooKeeper。
- 选择 Scala 发行:优先 2.13(社区更推荐),与 2.12 在功能上差异不大。
- 下载与校验:从 Apache 官网获取二进制包,并使用同名的 .sha512 校验完整性。
- 防火墙放行:开放 9092(Kafka)与 2181(ZooKeeper,如使用)。
四、常见注意事项
- KRaft 与 ZooKeeper 取舍:KRaft 是方向,但 3.x 仍默认带 ZK;若团队对 KRaft 运维尚不熟悉,可先用内置 ZK 平滑过渡。
- 高可用前提:多副本≠高可用;要实现真正 HA,至少需要 3 台物理/虚拟机,且副本分布在不同节点。
- 版本状态:如 3.3.x 已归档,新项目不建议采用;优先 3.8.x/3.9.x。
- 网络连通性:正确配置
listeners 与 advertised.listeners,并确保 9092/2181 端口开放,避免客户端连接失败。