其他分享
首页 > 其他分享> > Apache Kafka 2.6.0 有哪些值得关心的变化

Apache Kafka 2.6.0 有哪些值得关心的变化

作者:互联网

Apache Kafka 2.6.0 于2020年08月03日正式发布。在这个版本中,社区做了很多显著的性能改进,特别是当 Broker 有非常多的分区时。Broker 关闭性能得到了显著提高;当生产者使用压缩时,性能也得到了显著提高。ACL 使用的各个方面都有不同程度的提升,并且需要更少的内存。

这个版本还增加了对 Java 14 的支持。在过去的几个版本中,社区默认使用 Scala 2.13,现在社区开始推荐在生产环境中使用 Scala 2.13。

最后,这版本的成就只是 Apache Kafka 3.0 运行路线图的一部分,Apache Kafka 3.0 可能是该项目历史上最重要的版本之一。用内置基于 Raft 的共识取 ZooKeeper 的工作正在进行中,目前有8个 KIPs 正在积极开发中。用于元数据仲裁(metadata quorum)的 Kafka 新 Raft 协议已经处于 review 状态。

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop 如果需要下载 Apache Kafka 2.6.0,可以到 这里下载。由于时间和篇幅的关系,下面我们只介绍 Kafka 2.6 版本部分变化,更多内容请参见 Kafka 2.6.0 Release Notes。

Kafka broker, producer, 和 consumer 的更新

KIP-546: Add Client Quota APIs to the Admin Client

在 Kafka 中管理配额(quotas)是一项具有挑战的事情,因为它们可以映射到用户和客户端的任何组合。KIP-546 这个特性添加了一个用于管理配额的内置 API,从而使过程更加直观且不易出错。新的 kafka-client-quotas.sh 命令行工具允许用户描述现有的配额,使用有关如何导出配额的上下文信息来解析实体的有效配额,并且可以通过这个命令行工具对 Quota 进行添加,更新, 删除等操作。例如:

$ /bin/kafka-client-quotas.sh --bootstrap-server localhost:9092 \ --alter --names=client-id=my-client \ --defaults=user \ --add=consumer_byte_rate=2000000 \ --delete=producer_byte_rate

KIP-551: Expose disk read and write metrics

Kafka broker 所在机器上的磁盘访问可能会影响延迟和吞吐量。KIP-551 这个特性增加了 Kafka 从磁盘读取和写入的字节数指标。

KIP-568: Explicit rebalance triggering on the Consumer

在 Kafka 2.6.0 版本之前,Rebalance 的触发都是由消费者 Coordinator 来执行的,Kafka consumer Coordinator 协调哪个主题分区分配给消费者组( consumer group)的哪个消费者。KIP-568 这个功能允许应用程序使用消费者 API (enforceRebalance)显式触发重新平衡,例如,应用程序使用某些系统条件来确定它是否准备好接收分区。

KIP-573: Enable TLSv1.3 by default

在使用 Java 11 或更高版本时,TLS 1.3 现在是默认的 TLS 协议,而 TLS 1.2 仍然是早期 Java 版本的默认协议。与 Apache Kafka 2.5.0 一样,由于已知的安全漏洞,TLS 1.0 和 1.1 在默认情况下是禁用的,但是如果需要,用户仍然可以启用它们。

KIP-574: CLI Dynamic Configuration with file input

Kafka 配置的大部分是由一个单值映射到一个配置名称。在 KIP-574 之前,很难设置由更复杂的结构(如嵌套的 list 或JSON)定义的配置。Kafka 2.6 现在支持使用 kafka-configs.sh 命令行工具来设置文件中已经定义的配置。例如:

$ bin/kafka-configs.sh --bootstrap-server localhost:9092 \ --entity-type brokers --entity-default \ --alter --add-config-file new.properties

KIP-602: 修改 client.dns.lookup 的默认值

Apache Kafka 2.1.0 和 KIP-302 为 client.dns.lookup 客户端属性引入了 use_all_dns_ips 选项。Kafka 2.6.0 开始,use_all_dns_ips 选项是默认选项了,因此它将尝试使用主机名的所有可能 IP 地址连接到 broker。新的默认值将降低连接失败率,并且在单个主机名可以解析为多个IP地址的云和容器化环境中更为重要。

Kafka Connect

KIP-158: Kafka Connect should allow source connectors to set topic-specific settings for new topics

这个特性是很多用户需要的,有了这个功能 Kafka Connect 可以在自动为写入记录的源连接器创建 Kafka 主题(如果这些主题不存在)。默认情况下这个功能是启用的,但是需要我们设置一些连接器配置(connector configurations)以便可以成功创建主题。例如,如果我们设置以下的配置将使 Connect 创建的缺失主题具有5个分区且复制因子为3:

topic.creation.default.replication.factor=3topic.creation.default.partitions=5

当然,Kafka 还支持很多其他的配置选型,具体请参见 Kafka 的官方文档。

KIP-605: Expand Connect Worker Internal Topic Settings

说到创建主题,我们现在可以对内部的主题(internal topics)进行一些配置,比如使用 Kafka Broker 的默认分区数和副本因子,这些内部主题通常用于存储 connector 的配置、偏移量以及状态等。

KIP-610: Error Reporting in Sink Connectors

如果某些记录不能被序列化或反序列化,或者当单个消息转换(SMT)失败时,Kafka Connect 已经具备了将这些记录写入死信队列(DLQ)主题的能力。现在,如果连接器认为记录无效或有问题,Connect 可以使接收连接器(sink connectors)将单个记录发送到 DLQ。接收连接器需要显式地使用此特性,这样做将允许接收连接器在消费到与其不兼容的记录时,仍然可以继续正常运行。

KIP-585: Filter and Conditional SMTs

为使用多个主题的连接器定义 SMT 可能具有挑战性,因为并非每个 SMT 都可以适用于每个主题的每条记录。有了 KIP-585 这个特性,每个 SMT 都可以定义一个谓词以及应用该 SMT 时的条件。它还定义了一个“过滤器”SMT,它与谓词一起工作,以删除匹配特定条件的记录。

Kafka Streams

•Kafka Streams 应用现在支持平滑扩展,具体参见 KIP-441。•Kafka Streams support for emit on change,参见 :KIP-557•仅且一次语义的 Producer 扩展,参见:KIP-447•Kafka Streams 对监控指标进行了增强,比如加了一些内置的指标并且删除了一些无用的,参见:KIP-444


标签:--,KIP,Kafka,连接器,Apache,2.6
来源: https://blog.51cto.com/15127525/2686313