首页/数据/数据工程与 ETL 速查/查看 Broker 支持的 API 版本
Kafka64 条

查看 Broker 支持的 API 版本

列出每个 Broker 支持的请求 API 及版本区间,用于排查客户端与服务端版本不兼容(UnsupportedVersionException)及升级前的兼容评估。

查看 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 配置与客户端协商共同决定,凭版本号猜出来的结论经常与实际不符,升级前后的兼容评估必须以该命令的输出为准。

易错点

  • 按发行版号推断 API 版本,与命令输出不符时仍按猜测结论决策
  • 在滚动升级中途对比各 Broker 输出,把正常的版本差异当成故障
  • 只查单台 Broker 就代表整个集群,其他节点版本可能不同
  • 客户端版本过新要求更高 API 版本,未提前用该工具评估就上线
  • 把 usable 版本当作集群整体能力上限,忽略客户端协商也会降低实际版本

数据来源与参考

  • Apache Kafka 官方文档:kafka-broker-api-versions.sh
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌