Kafka2.6.0发布——性能大幅提升

948 阅读4分钟

近日Kafka2.6版本发布,距离2.5.0发布只过去了不到四个月的时间。

Kafka 2.6.0包含许多重要的新功能。以下是一些重要更改的摘要:

  • 默认情况下,已为Java 11或更高版本启用TLSv1.3
  • 性能显着提高,尤其是当代理具有大量分区时
  • 扩展Kafka Streams的应用程序更便捷
  • Kafka Streams支持更改时发出
  • 新的metrics可提供更好的运营洞察力
  • 配置为进行连接时,Kafka Connect可以自动创建Topic
  • 改进了Kafka Connect中接收器连接器的错误报告选项
  • Kafka Connect中的新过滤器和有条件地应用SMT
  • “ client.dns.lookup”配置的默认值现在为“ use_all_dns_ips”。
  • 将Zookeeper升级到3.5.8

新功能

  • 添加KStream#repartition操作
  • 使SSL上下文/引擎配置可扩展
  • 默认情况下启用TLSv1.3,并禁用某些较旧的协议
  • 有条件地应用SMT
  • 向流指标添加任务级活动进程比率
  • 重构主循环以一次处理一个任务的多个记录

改善

  • 增强了TransformerSupplier / ProcessorSupplier
  • 清理任务管理
  • 将“ onAssignment”流与“ partitionsAssigned”任务创建合并
  • 公开磁盘读写指标
  • 允许消费者明确触发重新平衡
  • 将gradle更新为6.0+
  • 支持Java 14
  • 将默认版本切换到Scala 2.13
  • -改进“ matchingAcls”的性能
  • 控制台生产者支持client.id的设置

升级指南:

如果要从2.1.x之前的版本升级,请参阅以下注释,以了解用于存储使用者偏移量的架构的更改。将inter.broker.protocol.version更改为最新版本后,将无法降级到2.1之前的版本。

对于滚动升级:

  1. 在所有代理上更新server.properties并添加以下属性。CURRENT_KAFKA_VERSION指的是您要升级的版本。CURRENT_MESSAGE_FORMAT_VERSION是指当前使用的消息格式版本。如果以前覆盖了消息格式版本,则应保留其当前值。或者,如果要从0.11.0.x之前的版本升级,则应将CURRENT_MESSAGE_FORMAT_VERSION设置为与CURRENT_KAFKA_VERSION相匹配。

    • inter.broker.protocol.version = CURRENT_KAFKA_VERSION(例如2.52.4等)
    • log.message.format.version = CURRENT_MESSAGE_FORMAT_VERSION
  2. 如果要从0.11.0.x或更高版本升级,并且尚未覆盖消息格式,则只需要覆盖代理间协议版本。

    • inter.broker.protocol.version = CURRENT_KAFKA_VERSION(例如2.52.4等)
  3. 一次升级一个代理:关闭代理,更新代码,然后重新启动。完成此操作后,代理将运行最新版本,并且您可以验证集群的行为和性能是否符合预期。如果有任何问题,此时仍然可以降级。

  4. 验证集群的行为和性能后,请通过编辑协议版本inter.broker.protocol.version并将其设置为来更改协议版本 2.6

  5. 逐一重新启动代理,以使新协议版本生效。代理开始使用最新的协议版本后,将无法再将群集降级到较旧的版本。

  6. 如果您已按照上述说明覆盖了消息格式版本,则需要再次滚动重启以将其升级到最新版本。一旦所有(或大多数)使用者都升级到0.11.0或更高版本,则在每个代理上将log.message.format.version更改为2.6,然后逐一重新启动它们。请注意,不再维护的较旧的Scala客户端不支持0.11中引入的消息格式,为避免转换成本必须使用较新的Java客户端。

2.6.0注意点

Kafka Streams添加了一种新的处理模式(需要Broker 2.5或更高版本),该模式使用完全一次的保证提高了应用程序的可伸缩性。

缺省情况下,Java 11或更高版本已启用TLSv1.3。如果客户端和服务器均支持TLSv1.3,则将协商该协议,否则将回退至TLSv1.2。

缺省情况下,Java 11或更高版本已启用TLSv1.3。如果客户端和服务器均支持TLSv1.3,则将协商该协议,否则将回退至TLSv1.2。

NotLeaderForPartitionException已弃用,并已替换为NotLeaderOrFollowerException。如果代理不是副本,则获取请求和仅用于领导者或跟随者的其他请求将返回NOT_LEADER_OR_FOLLOWER(6)而不是REPLICA_NOT_AVAILABLE(9),以确保重新分配期间的此暂时错误由所有客户端作为可重试的异常进行处理。

更多Flink,Kafka,Spark等相关技术博文,科技资讯,欢迎关注实时流式计算 公众号后台回复 “电子书” 下载300页Flink实战电子书