昨天,Apache Kafka 3.0 版本正式公布,这是一个波及多方面的大版本。在这个版本中,Apache Kafka 3.0 引入了各种新性能、突破性的 API 更改以及对 KRaft 的改良:Apache Kafka 的内置共识机制将取代 Apache ZooKeeper™。
尽管 KRaft 尚未被举荐用于生产(已知差距列表),但咱们对 KRaft 元数据和 API 进行了许多改良。Exactly-once 和分区重新分配反对值得强调,咱们激励开发者查看 KRaft 的新性能并在开发环境中试用它。
并且,从 Apache Kafka 3.0 开始,生产者默认启用最强的交付保障 ( acks=all, enable.idempotence=true),这意味着用户当初默认取得排序和持久性。此外,不要错过 Kafka Connect 工作重启加强、KStreams 基于工夫戳同步的改良以及 MirrorMaker2 更灵便的配置选项。
惯例变动
- KIP-750:弃用 Kafka 中对 Java 8 的反对
在 3.0 中,Apache Kafka 我的项目的所有组件都已弃用对 Java 8 的反对。这将使用户有工夫在下一个次要版本 (4.0) 之前进行调整,届时 Java 8 反对将被勾销。
- KIP-751:弃用 Kafka 中对 Scala 2.12 的反对
对 Scala 2.12 的反对在 Apache Kafka 3.0 中也已弃用。与 Java 8 一样,咱们给用户工夫来适应,因为打算在下一个次要版本 (4.0) 中删除对 Scala 2.12 的反对。
Kafka 代理、生产者、消费者和治理客户端
- KIP-630:Kafka Raft 快照
咱们在 3.0 中引入的一个次要性能是 KRaft 控制器和 KRaft 代理可能为名为 __cluster_metadata 的元数据主题分区生成、复制和加载快照。Kafka 集群应用此主题来存储和复制无关集群的元数据信息,如代理配置、主题分区调配、领导等。随着此状态的增长,Kafka Raft Snapshot 提供了一种无效的形式来存储、加载和复制此信息.
- KIP-746:批改 KRaft 元数据记录
自第一版 Kafka Raft 控制器以来的教训和继续开发表明,须要批改一些元数据记录类型,当 Kafka 被配置为在没有 ZooKeeper (ZK) 的状况下运行时应用这些记录类型。
- KIP-730:KRaft 模式下的生产者 ID 生成
在 3.0 和KIP-730 中,Kafka 控制器当初齐全接管了生成 Kafka 生产者 ID 的责任。控制器在 ZK 和 KRaft 模式下都这样做。这让咱们更靠近桥接版本,这将容许用户从应用 ZK 的 Kafka 部署过渡到应用 KRaft 的新部署。
- KIP-679:Producer 将默认启用最强的交付保障
从 3.0 开始,Kafka 生产者默认开启幂等性和所有正本的交付确认。这使得默认状况下记录交付保障更强。
- KIP-735:减少默认消费者会话超时
Kafka Consumer 的配置属性的默认值session.timeout.ms从 10 秒减少到 45 秒。这将容许消费者在默认状况下更好地适应临时的网络故障,并在消费者仿佛只是临时来到组时防止间断从新均衡。
- KIP-709:扩大 OffsetFetch 申请以承受多个组 ID
申请 Kafka 消费者组的以后偏移量曾经有一段时间了。然而获取多个消费者组的偏移量须要对每个组进行独自的申请。在 3.0 和KIP-709 中,fetch 和 AdminClient API 被扩大为反对在单个申请/响应中同时读取多个消费者组的偏移量。
- KIP-699:更新 FindCoordinator 以一次解析多个 Coordinator
反对能够以无效形式同时利用于多个消费者组的操作在很大水平上取决于客户端无效发现这些组的协调者的能力。这通过KIP-699成为可能,它减少了对通过一个申请发现多个组的协调器的反对。Kafka 客户端已更新为在与反对此申请的新 Kafka 代理交谈时应用此优化。
- KIP-724:删除对音讯格局 v0 和 v1 的反对
自 2017 年 6 月随Kafka 0.11.0推出四年以来,音讯格局 v2 始终是默认音讯格局。因而,在桥下流过足够多的水(或溪流)后,3.0 的次要版本为咱们提供了弃用旧音讯格局(即 v0 和 v1)的好机会。这些格局明天很少应用。在 3.0 中,如果用户将代理配置为应用音讯格局 v0 或 v1,他们将收到正告。此选项将在 Kafka 4.0 中删除(无关详细信息和弃用 v0 和 v1 音讯格局的影响,请参阅KIP-724)。
- KIP-707: KafkaFuture 的将来
当KafkaFuture引入该类型以促成 Kafka AdminClient 的实现时,Java 8 之前的版本仍在宽泛应用,并且 Kafka 正式反对 Java 7。快进几年后,当初 Kafka 运行在反对CompletionStage和CompletableFuture类类型的Java 版本上。应用KIP-707,KafkaFuture增加了一种返回CompletionStage对象的办法,并以KafkaFuture向后兼容的形式加强了可用性。 - KIP-466:增加对 List 序列化和反序列化的反对
KIP-466为泛型列表的序列化和反序列化增加了新的类和办法——这一个性对 Kafka 客户端和 Kafka Streams 都十分有用。
- KIP-734:改良 AdminClient.listOffsets 以返回工夫戳和具备最大工夫戳的记录的偏移量
用户列出 Kafka 主题/分区偏移量的性能已失去扩大。应用KIP-734,用户当初能够要求 AdminClient 返回主题/分区中具备最高工夫戳的记录的偏移量和工夫戳。(这是不是与什么的AdminClient收益曾经为最新的偏移,这是下一个记录的偏移,在主题/分区写入混同。)这个扩大现有ListOffsets API容许用户探测生动活泼的通过询问哪个是最近写入的记录的偏移量以及它的工夫戳是什么来分区。
kafka Connect
- KIP-745:连贯 API 以重新启动连接器和工作
在 Kafka Connect 中,连接器在运行时示意为一组Connector类实例和一个或多个Task类实例,并且通过 Connect REST API 可用的连接器上的大多数操作都能够利用于整个组。从一开始,一个值得注意的例外restart是Connector和Task实例的端点。要重新启动整个连接器,用户必须独自调用以重新启动连接器实例和工作实例。在 3.0 中,KIP-745使用户可能通过一次调用重新启动所有或仅失败的连接器Connector和Task实例。此性能是附加性能,restartREST API的先前行为放弃不变。
- KIP-738:删除 Connect 的外部转换器属性
在之前的主版本 ( Apache Kafka 2.0 ) 中弃用它们之后,internal.key.converter并internal.value.converter在 Connect 工作器的配置中作为配置属性和前缀被删除。展望未来,外部 Connect 主题将专门应用JsonConverter来存储没有嵌入模式的记录。任何应用不同转换器的现有 Connect 集群都必须将其外部主题移植到新格局(无关降级门路的详细信息,请参阅KIP-738)。
- KIP-722:默认启用连接器客户端笼罩
从Apache Kafka 2.3.0 开始,能够配置连接器工作器以容许连接器配置笼罩连接器应用的 Kafka 客户端属性。这是一个宽泛应用的性能,当初有机会公布一个次要版本,默认启用笼罩连接器客户端属性的性能(默认connector.client.config.override.policy设置为All)。
- KIP-721:在连贯Log4j配置中启用连接器日志上下文
另一个在 2.3.0 中引入但到目前为止尚未默认启用的性能是连接器日志上下文。这在 3.0 中产生了变动,连接器上下文默认增加log4j到 Connect 工作器的日志模式中。从以前的版本升级到 3.0 将log4j通过在适当的状况下增加连接器上下文来更改导出的日志行的格局。
Kafka Streams
- KIP-695:进一步改良 Kafka Streams 工夫戳同步
KIP-695加强了 Streams 工作如何抉择获取记录的语义,并扩大了配置属性的含意和可用值max.task.idle.ms。此更改须要 Kafka 消费者 API 中的一种新办法,currentLag如果本地已知且无需分割 Kafka Broker,则可能返回特定分区的消费者滞后。
- KIP-715:在流中公开提交的偏移量
3.0开始,三个新的办法增加到TaskMetadata接口:committedOffsets,endOffsets,和timeCurrentIdlingStarted。这些办法能够容许 Streams 应用程序跟踪其工作的进度和运行状况。
- KIP-740:清理公共 API TaskId
KIP-740代表了TaskId该类的重大变革。有几种办法和所有外部字段已被弃用,新的subtopology()和partition()干将替换旧topicGroupId和partition字段(参见KIP-744的相干变动和修改KIP-740)。
- KIP-744:迁徙TaskMetadata,并ThreadMetadata与外部实现的接口
KIP-744将KIP-740提出的更改更进一步,并将实现与许多类的公共 API 离开。为了实现这一点,引入了新的接口TaskMetadata、ThreadMetadata和StreamsMetadata,而弃用了具备雷同名称的现有类。
- KIP-666:增加Instant基于办法到ReadOnlySessionStore
交互式查问 API 扩大了ReadOnlySessionStore和SessionStore接口中的一组新办法,这些办法承受Instant数据类型的参数。此更改将影响须要实现新办法的任何自定义只读交互式查问会话存储实现。
- KIP-622:增加currentSystemTimeMs和currentStreamTimeMs到ProcessorContext
该ProcessorContext减少在3.0两个新的办法,currentSystemTimeMs和currentStreamTimeMs。新办法使用户可能别离查问缓存的零碎工夫和流工夫,并且能够在生产和测试代码中以对立的形式应用它们。
- KIP-743:删除0.10.0-2.4Streams 内置指标版本配置的配置值
3.0 中勾销了对 Streams 中内置指标的旧指标构造的反对。KIP-743正在0.10.0-2.4从配置属性中删除该值built.in.metrics.version。这latest是目前此属性的惟一有效值(自 2.5 以来始终是默认值)。
- KIP-741:将默认 SerDe 更改为 null
删除了默认 SerDe 属性的先前默认值。流过去默认为ByteArraySerde. 用3.0开始,没有缺省,和用户须要任一组其的SerDes依据须要在API中或通过设置默认DEFAULT_KEY_SERDE_CLASS_CONFIG和DEFAULT_VALUE_SERDE_CLASS_CONFIG在它们的流配置。先前的默认值简直总是不适用于理论应用程序,并且造成的凌乱多于不便。
- KIP-733:更改 Kafka Streams 默认复制因子配置
有了次要版本的机会,Streams 配置属性的默认值replication.factor会从 1 更改为 -1。这将容许新的 Streams 应用程序应用在 Kafka 代理中定义的默认复制因子,因而在它们转移到生产时不须要设置此配置值。请留神,新的默认值须要 Kafka Brokers 2.5 或更高版本。
- KIP-732:弃用 eos-alpha 并用 eos-v2 替换 eos-beta
在 3.0 中不举荐应用的另一个 Streams 配置值是exactly_once作为属性的值processing.guarantee。该值exactly_once对应于 Exactly Once Semantics (EOS) 的原始实现,可用于连贯到 Kafka 集群版本 0.11.0 或更高版本的任何 Streams 应用程序。此EOS的第一实现曾经通过流第二施行EOS的,这是由值示意取代exactly_once_beta在processing.guarantee性质。展望未来,该名称exactly_once_beta也已弃用并替换为新名称exactly_once_v2。在下一个次要版本 (4.0) 中,exactly_once和exactly_once_beta都将被删除,exactly_once_v2作为 EOS 交付保障的惟一选项。
- KIP-725:优化 WindowedSerializer 和 WindowedDeserializer 的配置
配置属性default.windowed.key.serde.inner和default.windowed.value.serde.inner已弃用,取而代之的是windowed.inner.class.serde供消费者客户端应用的单个新属性。倡议 Kafka Streams 用户通过将其传递到 SerDe 构造函数来配置他们的窗口化 SerDe,而后在拓扑中应用它的任何中央提供 SerDe。
- KIP-633:弃用 Streams 中宽限期的 24 小时默认值
在 Kafka Streams 中,容许窗口操作依据称为宽限期的配置属性解决窗口外的记录。以前,这个配置是可选的,很容易错过,导致默认为24小时。这是Suppression运营商用户常常感到困惑的起因,因为它会缓冲记录直到宽限期完结,因而会减少 24 小时的提早。在 3.0 中,Windows类通过工厂办法失去加强,这些工厂办法要求它们应用自定义宽限期或基本没有宽限期来结构。已弃用默认宽限期为 24 小时的旧工厂办法,以及与grace()已设置此配置的新工厂办法不兼容的相应API。
- KIP-623:internal-topics为流应用程序重置工具增加“ ”选项
通过kafka-streams-application-reset增加新的命令行参数,应用程序重置工具的 Streams 应用变得更加灵便:–internal-topics. 新参数承受逗号分隔的主题名称列表,这些名称对应于能够应用此应用程序工具安顿删除的外部主题。将此新参数与现有参数相结合,–dry-run容许用户在理论执行删除操作之前确认将删除哪些主题并在必要时指定它们的子集。
MirrorMaker
- KIP-720:弃用 MirrorMaker v1
在 3.0 中,不举荐应用 MirrorMaker 的第一个版本。展望未来,新性能的开发和重大改良将集中在 MirrorMaker 2 (MM2) 上。
- KIP-716:容许应用 MirrorMaker2 配置偏移同步主题的地位
在 3.0 中,用户当初能够配置 MirrorMaker2 创立和存储用于转换消费者组偏移量的外部主题的地位。这将容许 MirrorMaker2 的用户将源 Kafka 集群保护为严格只读的集群,并应用不同的 Kafka 集群来存储偏移记录(即指标 Kafka 集群,甚至是源和指标集群之外的第三个集群)。
原文链接:https://blogs.apache.org/kafka/entry/what-s-new-in-apache6