Apache Kafka®社区宣布Apache Kafka 2.5.0的发布。社区创造了另一个令人兴奋的版本。
我们正在KIP-500上取得进展,并在其他改进中添加了新的度量和安全特性。这篇博客文章详细介绍了一些新增的功能,但是要获得这个版本的新功能的完整列表,请参阅发行说明。
Kafka broker, producer, and consumer
KIP-500更新
在ApacheKafka2.5中,已经为移除ApacheZookeeper做了一些准备工作™ (兹克)。
- KIP-555:有关管理工具中ZooKeeper否决过程的详细信息
- KIP-543:动态配置不需要ZooKeeper访问
精确一次语义(EOS)-基本改进
KIP-447:一次语义的生产者可伸缩性
这个KIP简化了以事务方式读取和写入Kafka的应用程序的API。以前,这个用例通常需要为每个输入分区提供单独的生产者实例,但现在没有特殊的需求。这使得构建消耗大量分区的EOS应用程序更加容易。这是在下一个版本中对Kafka Streams进行类似改进的基础。
详见KIP-447。
KIP-360:提高幂等/事务生产者的可靠性
这个KIP解决了中间商上生产者-国家保留的问题,这使得等幂保证成为可能。以前,当日志被截断以强制保留或从删除记录的调用中截断时,代理删除了producer状态,从而导致未知的producerid错误。随着这一改进,经纪人反而保留生产国直到到期。这个KIP还为生产者提供了从意外错误中恢复的强大方法。
详见KIP-360。
指标和运营改进
KIP-515:允许ZK客户端使用新的TLS支持的身份验证(ZK 3.5.7)
ApacheKafka2.5现在使用ZooKeeper 3.5.7。值得注意的一个特性是ZooKeeper 3.5中新增的ZooKeeper TLS支持。在部署安全的Kafka集群时,使用TLS对传输中的通信进行加密至关重要。ApacheKafka2.4已经发布了ZooKeeper 3.5,它在代理和ZooKeeper之间添加了TLS支持。但是,配置信息必须通过代理或CLI工具(例如zookeeper安全迁移)的Java调用上的系统属性 -D命令行选项传递,这是不安全的。KIP-515引入了必要的更改,以便能够使用安全配置值来使用带有ZooKeeper的TLS。
ZooKeeper 3.5.7通过其ssl.clientAuth=required配置值支持相互TLS身份验证,并通过ssl.clientAuth=none支持不带客户端证书身份验证的TLS加密。
详见KIP-515。
KIP-511:在代理中收集和公开Client的姓名和版本
以前,Apache Kafka的操作员只能使用消费者和生产者上设置的clientId字段来标识传入的客户机。由于此字段通常用于标识不同的应用程序,因此在有关客户端软件库和版本的操作细节方面留下了空白。KIP-511向ApiVersionsRequest RPC引入了两个新字段:ClientSoftwareName和ClientSoftwareVersion。
这些字段由代理捕获并通过一组新的度量进行报告。metric MBean模式是:
kafka.server:clientSoftwareName=(client-software-name),clientSoftwareVersion=(client-software-version),listener=(listener),networkProcessor=(processor-index),type=(type)
例如,ApacheKafka2.4Java客户机在代理上生成以下MBean:
kafka.server:clientSoftwareName=apache-kafka-java,clientSoftwareVersion=2.4.0,listener=PLAINTEXT,networkProcessor=1,type=socket-server-metrics
详见KIP-511。
KIP-559:使Kafka协议对L7代理更加友好
这个KIP识别并改进了我们的协议的几个部分,这些部分不是完全自描述的。我们的一些api具有泛型字节字段,这些字段具有隐式编码。需要附加上下文才能正确解码这些字段。这个KIP通过向API添加必要的上下文来解决这个问题,这样L7代理可以完全解码我们的协议。
详见KIP-559。
KIP-541:为代理创建fetch.max.bytes配置
Kafka使用者可以通过设置client-side configuration fetch.max.bytes来选择要提取的最大字节数。值太高可能会降低其他消费者在代理上的性能。如果该值非常高,则客户端请求可能超时。KIP-541使用代理设置集中此配置,该设置对客户端可以选择获取的最大字节数设置上限。
详见KIP-541。
Kafka Connect
KIP-558:跟踪连接器的活动主题
在运行时,当regex用于主题选择时,很难知道sink连接器从中读取记录的主题。也不可能知道源连接器写入的主题。KIP-558使开发人员、操作员和应用程序能够轻松识别源和汇连接器使用的主题。
$ curl -s 'http://localhost:8083/connector/a-source-connector/topics' {"a-source-connector":{"topics":["foo","bar","baz"]}}
主题跟踪在默认情况下已启用,但也可以使用topic.tracking.enable=false禁用。
详见KIP-558。
Kafka Streams
KIP-150:向DSL添加Cogroup
在过去,将多个流聚合为一个流可能是复杂且容易出错的。它通常要求您将所有流分组并聚合到表中,然后进行多个外部连接调用。新的co-group操作符可以清理程序的语法,减少状态存储调用的数量,并且总体上提高了性能。
KTable<K, CG> cogrouped = grouped1 .cogroup(aggregator1) .cogroup(grouped2, aggregator2) .cogroup(grouped3, aggregator3) .aggregate(initializer1, materialized1);
详见KIP-150。
KIP-523:将toTable()添加到DSL
解释事件流的一种强大方法是将其作为变更日志并在其上具体化表。KIP-523作为toTable()函数可以应用于流并具体化每个键的最新值。需要注意的是,任何空值都将被解释为对给定密钥(墓碑)的删除。
详见KIP-523。
KIP-535:允许状态存储在重新平衡期间提供过时的读取
以前,针对状态存储的交互式查询(IQ)在重新平衡过程中会失败。这降低了依赖于查询Kafka流状态表的应用程序的正常运行时间。KIP-535使应用程序能够查询状态存储的任何副本,并观察每个副本落后于主副本的程度。
详见KIP-535。
Deprecations
我们已经放弃了对ApacheKafka2.5中Scala2.11的支持。Scala 2.12和2.13现在是唯一受支持的版本。
TLS 1.2现在是默认的SSL协议。仍然支持TLS 1.0和1.1。
结论
要了解更多关于Apache Kafka2.5的新特性并查看此版本中包含的所有KIP,请务必查看下面视频中的发行说明和突出显示。
原文:https://www.confluent.io/blog/apache-kafka-2-5-latest-version-updates/
本文:http://jiagoushi.pro/node/971
讨论:请加入知识星球或者微信圈子【首席架构师圈】
- 登录 发表评论
- 45 次浏览
最新内容
- 5 days 14 hours ago
- 1 week ago
- 1 week 1 day ago
- 1 week 2 days ago
- 1 week 2 days ago
- 1 week 2 days ago
- 1 week 3 days ago
- 1 week 3 days ago
- 1 week 3 days ago
- 1 week 3 days ago