19.3. 升级客户端的策略
升级 Kafka 客户端可确保它们从新版本的 Kafka 中引入的功能、修复和改进中受益。升级的客户端保持与其他升级的 Kafka 组件的兼容性。客户端的性能和稳定性也可能有所改进。
考虑升级 Kafka 客户端和代理的最佳方法,以确保平稳过渡。所选升级策略取决于您是否首先升级代理或客户端。从 Kafka 3.0 开始,您可以以任何顺序独立和升级代理和客户端。升级客户端或代理的决定首先取决于几个因素,如需要升级的应用程序数量以及可以容忍的停机时间。
如果您在代理前升级客户端,一些新功能可能无法正常工作,因为它们还没有被代理支持。但是,代理可以处理使用不同版本运行的生产者和消费者,并支持不同的日志消息版本。
使用 Kafka 3.0 之前的版本时升级客户端
在 Kafka 3.0 之前,您可以使用 log.message.format.version
属性(或主题级别上的 message.format.version
属性)为代理配置特定的消息格式。这允许代理支持使用过时的消息格式的旧 Kafka 客户端。否则,代理需要转换来自较旧的客户端的消息,而这会产生显著的性能成本。
自 0.11 版以来,Apache Kafka Java 客户端支持最新的消息格式版本。如果您的所有客户端都使用最新的消息版本,您可以在升级代理时删除 log.message.format.version
或 message.format.version
覆盖。
但是,如果您仍然有使用较旧的消息格式版本的客户端,我们建议首先升级您的客户端。从消费者开始,然后在升级代理时删除 log.message.format.version
或 message.format.version
覆盖前升级制作者。这将确保您的所有客户端都支持最新的消息格式版本,且升级过程平稳。
您可以使用此指标跟踪 Kafka 客户端名称和版本:
-
kafka.server:type=socket-server-metrics,clientSoftwareName=<name>,clientSoftwareVersion=<version>,listener=<listener>,networkProcessor=<processor>
以下 Kafka 代理指标帮助监控消息 down-conversion 的性能:
-
kafka.network:type=RequestMetrics,name=MessageConversionsTimeMs,request={Produce|Fetch}
提供了执行消息转换的时间的指标。 -
kafka.server:type=BrokerTopicMetrics,name={Produce|Fetch}MessageConversionsPerSec,topic=([-.\w]+)
在一段时间内转换的信息数量上提供指标。