17.3. 升级客户端的策略
升级 Kafka 客户端可确保它们从新版本的 Kafka 中引入的功能、修复和改进中受益。升级的客户端维护与其他升级的 Kafka 组件的兼容性。客户端的性能和稳定性也可能得到改进。
考虑升级 Kafka 客户端和服务器的最佳方法,以确保平稳过渡。所选升级策略取决于您是否先升级代理或客户端。从 Kafka 3.0 开始,您可以独立和顺序升级代理和客户端。决定升级客户端或代理首先取决于几个因素,如需要升级的应用程序数量以及可容忍的停机时间。
如果您在代理前升级客户端,一些新功能可能无法工作,因为代理尚不支持它们。但是,代理可以处理使用不同版本运行的制作者和消费者,并支持不同的日志消息版本。
当使用 Kafka 3.0 旧的 Kafka 版本时升级客户端
在 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]+)
提供一段时间内转换的消息数量的指标。