Kafka3.8.0版本信息


发布于 2024-07-06 / 24 阅读 / 0 评论 /
Kafka3.8.0版本发布内容和发布时间

Kafka3.8.0的发布计划可参考https://cwiki.apache.org/confluence/display/KAFKA/Release+Plan+3.8.0

1.发布时间

KIP Freeze时间:2024年5月15日

Feature Freeze时间:2024年5月29日

Code Freeze: 2024年6月12日

至少两周的稳定性测试后,期待在2024年6月26日之后发布。

2.版本需求

主要包含以下重要的特性。

2.1.KIP-1028: 构建kafka的官方docker镜像

这个提议主要是基于JVM镜像构建kafka的官方docker镜像。

我们已经提供了OSS赞助镜像,在Apache的Docker Hub镜像仓库中。

现在我们要为Docker官方构建kafka镜像,并将交由Docker社区维护。

2.2.KIP-1036: Extend RecordDeserializationException exception

2.3.KIP-1019: 暴露确定Metric是否可测量的方法

kafka当前缺乏直接而高效的机制来确定一个Metric是否可测量,现存的方法依赖以下两种机制:

(1)Exception-Based Measurability Check:通过measurable() 方法可获取Metric的值,当不是Measurable的实例时,就会抛异常。这就意味着,当Metric是不可测量时,检查可测量性就会触发异常处理和堆栈信息采集。

(2)Accessing Value Provider Field:KafkaMetricsCollector利用java反射机制可以在KafkaMetric类外部获取Metric值,这个方法是脆弱的,与kafka未来的特性相冲突。

这个小提议给KafkaMetric类新增了isMeasurable()方法,消除对私有变量的访问以及不可测量Metric的异常处理。

2.4.KIP-1004: Enforce tasks.max property in Kafka Connect

2.5.KIP-989: Improved StateStore Iterator metrics for detecting leaks

2.6.KIP-993: Allow restricting files accessed by File and Directory ConfigProviders

2.7.KIP-989: Improved StateStore Iterator metrics for detecting leaks

2.8.KIP-974: Docker Image for GraalVM based Native Kafka Broker

2.9.KIP-924: customizable task assignment for Streams

2.10.KIP-813: Shareable State Stores

2.11.KIP-719: 移除log4j appender依赖

虽然kafka2.8.0中已经将log4j升级到了log4j2,但还有一些模块被忽略了,比如trogdor、shell、tools。trogdor和shell并没有从tools模块移除,tools还依赖log4j-appender,因为VerifiableLog4jAppender使用到了。因此log4j和log4j2的包都会存在包以及进程classpath中。

随着测试的跟进,保留log4j包的方案会产生一些问题。有些kafka用户报告了使用log4j配置文件的一些问题,有些日志消息并没有正确地输出到日志文件中。这个问题可以通过从classpath移除log4j包进行解决。

这个提议就是要将log4j升级到log4j2,所有的模块都不依赖log4j-appender,这样就能解决以上的问题。

2.12.KIP-390: 支持压缩级别

压缩中,CPU代表运行时间,IO代表压缩比率,CPU和IO是相互制衡的。因为依赖最优用例场景,许多compression库提供了可控制压缩级别的方法,并提供了默认的压缩级别,大部分情况下能带来优秀的性能表现。但是,Kafka并不提供配置压缩级别的方法。

这个提议建议给broker、topic、producer添加可配置的压缩级别。通过测试发现,这个配置可提升producer的消息发送速率提升到156%。

2.13.KIP-1018: Introduce max remote fetch timeout config for DelayedRemoteFetch requests

2.14.KIP-1037: Allow WriteTxnMarkers API with Alter Cluster Permission

2.15.KIP-1041: Drop offsets.commit.required.acks config in 4.0 (deprecate in 3.8)

2.16.KIP-1047 Introduce new org.apache.kafka.tools.api.Decoder to replace kafka.serializer.Decoder

2.17.KIP-899: Allow producer and consumer clients to rebootstrap

2.18.KIP-1004: Enforce tasks.max property in Kafka Connect