查看 Broker 支持的 API 版本是什么
kafka-broker-api-versions.sh 连接 Broker 并列出每个请求 API 支持的最低与最高版本,例如 Produce 支持 0 到 9、可用版本为 9。它回答的是「客户端要用的这个特性,Broker 到底支不支持」。当客户端报 UnsupportedVersionException、或新特性开关打开后行为异常时,这份清单是最快的判断依据,也是升级前后做兼容评估的基准。
基本信息
| 执行方式 | 在任意可访问 Broker 的机器上运行,不需在 Broker 本机 |
|---|---|
| 必填参数 | --bootstrap-server |
| 输出形态 | API 名称(编号): 最低版本 to 最高版本 [usable: 可用版本] |
| 含义 | usable 是 Broker 与客户端协商后可实际使用的最高版本 |
| 常见用途 | 升级前兼容评估、客户端报版本异常时定位 |
| 关联机制 | 客户端与服务端通过版本协商确定共同可用的最高版本 |
典型使用场景
- 客户端报 UnsupportedVersionException:确认 Broker 是否支持该 API 版本
- 升级前评估:新客户端或新特性要求的最低版本是否已被满足
- 滚动升级中核对:各 Broker 版本不一致时确认可用版本区间
- 排查连接握手异常:确认是否因版本协商失败导致
- 新集群验收:与预期发行版本对照,避免装了旧包
查看 API 版本
查看 API 版本
# 列出所有 Broker 支持的 API 及版本区间
kafka-broker-api-versions.sh --bootstrap-server localhost:9092 | head -40
# 示例行:
# Produce(0): 0 to 9 [usable: 9]
# Fetch(1): 0 to 13 [usable: 13]
# 只想看某个 API 时直接过滤
kafka-broker-api-versions.sh --bootstrap-server localhost:9092 | grep -i 'deleteRecords\|offsetForLeaderEpoch'输出逐字段读法
| 字段 | 含义 | 异常表现 |
|---|---|---|
| API 名称(编号) | 请求类型与协议编号 | 客户端报某 API 未知时对照此编号 |
| 最低版本 | Broker 支持的最低请求版本 | 客户端版本过低会协商失败 |
| 最高版本 | Broker 支持的最高请求版本 | 客户端要求更高版本时报不支持 |
| usable | 实际可用的最高版本 | 由 Broker 配置与客户端共同决定,不等于发行版号 |
滚动升级期间各 Broker 返回的版本区间不一致属于正常现象,等全部 Broker 升级完成后再复核一次,不要在中途据此判定升级失败。
不要按发行版号推断 usable 版本:可用版本由 Broker 配置与客户端协商共同决定,凭版本号猜出来的结论经常与实际不符,升级前后的兼容评估必须以该命令的输出为准。