资讯详情

Kafka 版本演进概览[ 截止2.8.x版本 ]

一. 前言

主要梳理kafka版本,后续研究的开始kafka做准备.

二. Kafka版本规则

,遵循 版本规则,其中Major大版本通常是一些重大变化,因此它们之间的功能可能不兼容;Minor小版本通常是一些新功能的增加;最后Patch修订版主要是为了修复一些关键点Bug发布版本。比如Kafka 2.1.大版本是2,小版本是1,Patch版本为1,是为修复Bug第一版发布。

三. Kafka版本演进

0.7.x版本

这是很老的Kafka版本,它只有基本的消息队列功能,甚至没有消息副本机制,不推荐使用。

0.8.x版本

两个重要特征,一个Kafka 0.8.二是增加了副本机制,二是Kafka 0.8.2.引入新版本Producer API。0.9.x版本

Kafka 0.9 是一个重大的版本迭代,增加了非常多的新特性,主要体现在三个方面:

:在0.9.0之前,Kafka安全考虑几乎为0。Kafka 0.9.0 支持安全认证、授权管理、数据加密等。Kerberos等。 :Kafka 0.9.0 重写并提供新版消费端API,也从连接中使用Zookeeper切到了连接Broker,但此时新版本Consumer API也不稳定,存在很多Bug,生产和使用可能更痛苦;0.9.0版本的Producer API相对稳定,生产使用问题不大。 :Kafka 0.9.0 引入新组件 Kafka Connect ,用于实现Kafka数据提取与其他外部系统。

0.10.x版本

Kafka 0.10 是一个重要的大版本,因为Kafka 0.10.0.0 引入了 ,使得Kafka它不再仅仅是一个消息引擎,而是一个分布式流处理平台。.10 大版本包括两个小版本:0.10.1 和 0.10.2.它们的主要功能变化是 Kafka Streams 组件上。

值得一提的是,自我 0.10.2.2 从版本开始,新版本 Consumer API 它已经相对稳定和稳定了 Producer API 性能也有所提高,所以用于使用 0.10.x 建议使用或升级大版本用户 Kafka 0.10.2.2 版本。

0.11.x版本

Kafka 0.11 这是一个里程碑式的大版本,主要有两个大的变化,一个是Kafka支持这个版本 Exactly-Once 语义是准确的一次语义,主要是实现的Producer对于终端消息的等性和事务特性,这是为了Kafka流式处理意义重大。

另一个重大变化是Kafka重构新闻格式,Kafka 0.以实现为主Producer权力等级和事务特性重构了发送信息的数据结构。这是值得注意的,因为Kafka 0.11后的消息格式发生了变化,要特别注意Kafka不同版本之间的新闻格式不兼容。

1.x版本

Kafka 1.x 更多的是Kafka Streams方面的改进,以及Kafka Connect的改进与功能完善等。但仍有两个重要特征,一是Kafka 1.0.0实现了磁盘故障转移,当Broker当磁盘损坏时,数据会自动转移到其他正常磁盘上,Broker也会正常工作,直接导致之前版本中的工作Broker宕机,因此Kafka提高了可用性和可靠性;

二是Kafka 1.1.0开始支持副本跨路径迁移,分区副本可以相同Broker移动不同磁盘目录间,对磁盘负载平衡具有重要意义。

2.x版本:

。 Kafka 2.1.0开始支持ZStandard压缩方法提高了新闻的压缩比,显著降低了磁盘空间和网络io消耗。

kafka2.8.x自我管理仲裁取代了版本ZooKeeper

2.x 版本特征概述

Kafka 2.0.0

  1. 简化 Kafka Streams 升级过程
  2. 修补多次 Kafka 分区主本迁移时日志分歧
  3. 降低信息格式向下转换时的内存消耗
  4. 加入消费者客户端的领先指标
  5. 加入更多 Kafka 控制器的健康指标
  6. 更全面的数据安全支持
  7. 访问控制细粒度前缀
  8. xxx

Kafka 2.1.0

[新功能]

  1. 重载StreamsBuilder接受施工方法java.util.Properties
  新功能 [KAFKA-7027] - 重载StreamsBuilder接受施工方法`java.util.Properties`   改进  [KAFKA-4514] - 为ZStandard加入压缩编解码器 [KAFKA-4932] - 增加UUID Serde [KAFKA-5886] - 介绍delivery.timeout.ms生成器配置(KIP-91) [KAFKA-5928] - 在重新分配主题分区时,避免重新分配主题分区zookeeper冗余请求 [KAFKA-6195] - DNS名称支持安全连接 [KAFKA-6432] - 查找索引可能会导致不必要的页面错误
[KAFKA-6437] - Streams不会警告缺少输入主题,而是挂起
[KAFKA-6591] - 在ACL评估之前,在SimpleAclProvider中移动对超级用户的检查
[KAFKA-6684] - 支持使用字节模式转换为字符串
[KAFKA-6751] - 使max.connections.per.ip.overrides成为动态配置
[KAFKA-6753] - 加速控制器上的事件处理
[KAFKA-6761] - 减少Kafka Streams足迹
[KAFKA-6863] - 如果第一个IP地址失败,Kafka客户端应尝试使用多个DNS解析的IP地址
[KAFKA-6880] - Zombie副本必须fenced
[KAFKA-6884] - ConsumerGroupCommand使用新的AdminClient
[KAFKA-6914] - Kafka Connect - Plugins类应该有一个可以接受父ClassLoader的构造函数
[KAFKA-6923] - 合并ExtendedSerializer/Serializer和ExtendedDeserializer/Deserializer
[KAFKA-6926] - 减少Connect中的NPath异常
[KAFKA-6950] - 添加机制以延迟响应失败的客户端身份验证
[KAFKA-6978] - 使Streams窗口保留时间严格
[KAFKA-6986] - 通过Stream Threads导出Admin Client指标
[KAFKA-6998] - 如果cache-size配置为零字节,则删除缓存包装器存储
[KAFKA-6999] - 记录启用缓存的仓库的读写使用情况
[KAFKA-7009] - 在系统测试中警告级别的reflections.org无日志
[KAFKA-7019] - 减少元数据更新和元数据读取操作之间的争用
[KAFKA-7101] - 会话窗口存储应该设置主题策略`compact,cleanup`
[KAFKA-7117] - 允许AclCommand使用AdminClient API
[KAFKA-7126] - 创建主题后,减少大型消费者组的重新平衡次数
[KAFKA-7131] - 更新发布脚本以生成公告电子邮件文本
[KAFKA-7147] - 允许kafka-reassign-partitions.sh和kafka-log-dirs.sh获取admin客户端属性文件
[KAFKA-7152] - 如果LEO等于leader的LEO,则副本应该是同步的
[KAFKA-7161] - KTable Reduce应检查无效条件
[KAFKA-7169] - 在OAuth身份验证中添加对自定义SASL扩展的支持
[KAFKA-7198] - 增强KafkaStreams启动方法javadoc
[KAFKA-7207] - 使费率和总指标文档保持一致
[KAFKA-7210] - 添加系统测试以进行日志压缩
[KAFKA-7211] - MM应该在commitSync中处理超时
[KAFKA-7215] - 在出错时改进LogCleaner行为
[KAFKA-7222] - KIP-328:添加窗口宽限期(并弃用窗口保留)
[KAFKA-7264] - 初始化的Kafka对Java 11的支持
[KAFKA-7266] - 修复MetricsTest测试片状
[KAFKA-7269] - KStream.merge没有文档
[KAFKA-7277] - 将Streams API迁移到Duration而不是longMs
[KAFKA-7278] - replaceSegments()不应从已经删除的段列表中调用asyncDeleteSegment()
[KAFKA-7285] - 在EOS下的任务暂停期间,流应该对防护更敏感
[KAFKA-7313] - 仅当将来的副本存在时,StopReplicaRequest才会尝试删除该分区的未来副本
[KAFKA-7326] - 让KStream.print()在每条打印行上刷新
[KAFKA-7332] - 尝试生成没有密钥的压缩主题的消息时改进错误消息
[KAFKA-7394] - 允许OffsetsForLeaderEpoch使用主题描述ACL(KIP-320)请求
[KAFKA-7395] - 将fencing添加到复制协议 (KIP-320)
[KAFKA-7396] - KIP-365: Materialized, Serialized, Joined, Consumed and Produced使用隐式Serde
[KAFKA-7399] - Streams-Scala中的FunctionConversions应该是私有的
[KAFKA-7406] - Naming Join 和 Grouping Repartition Topics
[KAFKA-7414] - 在副本获取中,超出范围不应导致broker失败。
[KAFKA-7429] - 使用相同的文件名/密码启用动态密钥/信任库更新
[KAFKA-7430] - 改进Transformer接口JavaDoc
[KAFKA-7437] - 在偏移提交元数据中存储leader epoch
[KAFKA-7441] - 允许同时使用LogCleanerManager.resumeCleaning()
[KAFKA-7454] - 对SslTransportLayer缓冲区使用延迟分配
[KAFKA-7456] - Streams DSL中的Serde继承
[KAFKA-7475] - 打印实际的集群引导程序
[KAFKA-7477] - 改进Streams关闭超时语义
[KAFKA-7559] - ConnectStandaloneFileTest系统测试未通过



其他略...
详情参考:  https://www.orchome.com/1377

Kafka 2.2.0



[KAFKA-4217] - KStream.transform相当于flatMap
[KAFKA-4453] - 添加请求优先级
[KAFKA-4850] - RocksDb无法使用Bloom Filters
[KAFKA-5692] - 重构PreferredReplicaLeaderElectionCommand以使用AdminClient
[KAFKA-5994] - 提高broker用户ACL错误配置的透明度
[KAFKA-6431] - 在Purgatory中锁定争用
[KAFKA-6567] - KStreamWindowReduce可以被KStreamWindowAggregate取代
[KAFKA-6774] - 改进使用者中的默认groupId行为
[KAFKA-6928] - StreamsPartitionAssignor在InternalTopicManager中进行双重重试
[KAFKA-7024] - 应在打开DB之前创建Rocksdb状态目录
[KAFKA-7054] - Kafka描述命令应抛出的主题不存在异常
[KAFKA-7096] - 消费者应该删除未分配的主题分区的数据
[KAFKA-7131] - 更新发布脚本以生成公告电子邮件文本
[KAFKA-7235] - 使用brokerZkNodeVersion可防止broker处理过时的控制器请求
[KAFKA-7266] - 修复MetricsTest测试片状
[KAFKA-7352] - KIP-368: 允许SASL连接定期重新进行身份验证
[KAFKA-7367] - 除非需要,否则Streams不应创建状态存储目录
[KAFKA-7389] - 升级spotBugs以支持Java 11
[KAFKA-7391] - 向Producer和AdminClient引入close(Duration),而不是close(long,TimeUnit)
[KAFKA-7402] - Kafka Streams应该在适当的时候实现AutoCloseable
[KAFKA-7413] - 用网站中的fllower替换slave术语
[KAFKA-7418] - 为所有可用的Kafka CLI命令添加'--help'选项(KIP-374)
[KAFKA-7420] - 对于常规任务,全球商店应该被保密为只读
[KAFKA-7433] - 在TopicCommand中引入broker选项以使用AdminClient
[KAFKA-7446] - 更好的错误消息来解释TimeWindow的上限
[KAFKA-7461] - 连接值转换器应具有逻辑类型的覆盖范围
[KAFKA-7478] - 减少OAuthBearerLoginModule详细程度
[KAFKA-7510] - KStreams RecordCollectorImpl在出错时将数据泄漏到日志中
[KAFKA-7524] - 推荐使用Scala 2.12并将其用于开发
[KAFKA-7528] - 标准化Min/Avg/Max Kafka指标的默认值
[KAFKA-7537] - 如果分区状态没有变化,则仅在发送给现有broker的UpdateMetadataRequest中包含实时broker
[KAFKA-7567] - 清除内部元数据用法以确保一致性和可扩展性
[KAFKA-7568] - 在ListOffsets响应中返回leader epoch
[KAFKA-7584] - 如果将max.in.flight.request.per.connect指定为String,StreamsConfig将抛出ClassCastException
[KAFKA-7610] - 检测初始JoinGroup中的消费者故障
[KAFKA-7641] - 添加`consumer.group.max.size`以限制broker上的消费者元数据大小
[KAFKA-7671] - KStream/GlobalKTable连接不应重置重新分区标志
[KAFKA-7673] - 升级RocksDB以包含对WinEnvIO::GetSectorSize的修复
[KAFKA-7687] - Print batch level information in DumpLogSegments when deep iterating
[KAFKA-7719] - 提高SocketServer处理器的公平性
[KAFKA-7734] - 度量标签应使用LinkedHashMap来保证顺序
[KAFKA-7738] - 跟踪客户端元数据中的分区领导者epochs
[KAFKA-7758] - When Naming a Repartition Topic with Aggregations Reuse Repartition Graph Node for Multiple Operations
[KAFKA-7762] - KafkaConsumer在javadocs中使用旧API
[KAFKA-7798] - 从KafkaStreams threadMetadata暴露嵌入式客户端上下文
[KAFKA-7804] - 更新KIP-377的文档
[KAFKA-7829] - Javadoc应该显示Kafka 1.1.0或更高版本中支持AdminClient.alterReplicaLogDirs()
[KAFKA-7834] - 在系统测试服务中扩展收集的日志以包括heap dumps
[KAFKA-7837] - maybeShrinkIsr可能不会立即反映OfflinePartitions
[KAFKA-7838] - 改进Partition.maybeShrinkIsr()中的日志记录
[KAFKA-7880] - Kafka Connect应标准化工作线程名称
[KAFKA-7916] - Streams存储清理:统一包装
[KAFKA-8040] - Streams需要在initTransactions中处理超时

详情: https://www.orchome.com/1584

Kafka 2.3.0

Kafka Connect REST API的一些改进。 Kafka Connect现在支持增量协作重新平衡。 Kafka Streams现在支持内存session存储和window存储。 AdminClient现在允许用户确定他们有权对topic执行哪些操作。 新的broker启动时间指标。 JMXTool现在可以连接到安全的RMI端口。 增加了新的AlterConfigs API。旧的AlterConfigs API已被弃用。 追踪最小ISR计数下的分区。 消费者现在可以选择不自动topic创建,即使在broker上启用它也是一样。 Kafka组件现在可以使用外部配置存储(KIP-421)。 我们在遇到错误时实现了改进的副本拉取程序行为。

  • 主要特性讲解 为了保证 Kafka 的数据安全,Kafka 在不同的 Broker 上创建了几个副本。除非分区具有最小数量的同步副本,否则 Kafka 将不允许继续写入,这被称为“最小ISR”。

Kafka 已经有指标可以显示分区数量少于同步副本的最小数量。在此版本中,KIP-427 添加了其他指标,显示具有最小同步副本数的分区。通过监视这些指标,用户可以看到哪些分区的副本将不足,从而影响写。

此外,KIP-351 将 –under-min-isr 标签添加到 kafka-topics 命令里面。这使用户可以轻松查看哪些主题的副本数量少于最小 ISR 数量。

对于一阶近似(first-order approximation),压缩主题中的键的先前值在写入最新密钥之后的某个时间被压缩,只有最新值可用,而以前的值不可用。但是,始终可以设置密钥在压缩之前保持的最短时间,因此我们不会太快丢失旧值。现在,使用 KIP-354,可以设置旧值将保持的最大时间量。新参数 max.log.compation.time.ms 指定旧值可能存在于压缩主题中的时间长度,这可用于遵守GDPR等数据保留规定。

以前,Kafka 会优先考虑在处理现有连接时打开新的 TCP 连接。如果客户端尝试在短时间内创建许多新连接,则可能会出现问题。KIP-402 将现有连接优先用于新连接,从而提高了 broker 对连接风暴的恢复能力。这个KIP 还为每个 broker 添加了 max.connections 参数。

为了使副本保持最新,每个 broker 都维护一个 Replica Fetcher 线程池。池中的每个线程负责为一些跟随者分区获取副本。以前,如果其中一个分区失败,整个线程将失败,从而导致可能数百个分区的副本不足。使用此KIP,如果给定副本提取程序线程管理的单个分区失败,则该线程将继续处理其余分区。

当 broker 在不正常关闭后启动时,它会检查日志以确保它们没有被破坏。此 JIRA 优化该过程,以便 Kafka 仅检查尚未显式刷新到磁盘的日志段。现在,日志恢复所需的时间不再与日志数成比例。相反,它与未刷新的日志段的数量成比例。Zhanxiang Huang 在 JIRA 上讨论的一些基准测试显示,broker 的启动时间缩短了50%。

原文: https://www.orchome.com/1710

Kafka 2.4.0

2019年12月16号,发布Kafka 2.4.0。

允许consumer从最近的副本中拉取。 支持对消费者重新平衡协议进行渐进式合作重新平衡。 MirrorMaker 2.0 (MM2), 新的多集群,跨数据中心复制引擎。 新的Java认证接口。 支持KTable中的非key连接。 副本重新分配的Administrative API

  • 新功能

[KAFKA-3333] - 支持“ Always Round-Robin”分区的备用分区程序
[KAFKA-3705] - 在KTable中支持非key连接
[KAFKA-7471] - 多消费组组管理(描述,重置,删除)
[KAFKA-7500] - MirrorMaker 2.0 (KIP-382)
[KAFKA-7800] - 扩展Admin API以支持动态日志级别
[KAFKA-8286] - KIP-460 Admin Leader 选举 RPC
[KAFKA-8447] - 测量连接器上任务数量的新指标
[KAFKA-8874] - KIP-517: 添加消费者指标以观察用户poll行为
[KAFKA-8885] - Kafka协议应支持可选的标记字段
[KAFKA-8907] - 在CreateTopics响应中返回topic配置
[KAFKA-8952] - 发现jackson-databind-2.9.9的漏洞

原文: https://www.orchome.com/6737

Kafka 2.5.0

2020年4月15号,Kafka 2.5.0发布。

支持 TLS 1.3(目前默认 1.2 版本) Kafka Streams引入Co-groups Kafka Consumer增量平衡机制(Incremental rebalance) 新指标可提供更好的运营监控 升级Zookeeper为3.5.7 不再支持Scala 2.11

  • 新功能

[KAFKA-6049] - Kafka Streams: 在DSL中增加Cogroup
[KAFKA-6144] - 允许从同步备用服务器提供交互式查询
[KAFKA-7251] - 支持 TLS 1.3
[KAFKA-8843] - Zookeeper迁移工具对TLS的支持
[KAFKA-9352] - topic分区对任务的不均衡分配
[KAFKA-9445] - 允许从单个分区中获取密钥,而不是遍历实例上的所有存储
[KAFKA-9487] - 跟进:KAFKA-9445(允许从单个分区获取密钥); 解决代码审查意见

原文: https://www.orchome.com/8169

Kafka 2.6.0

2020年8月3日,Kafka 2.6.0发布

默认情况下,已为Java11或更高版本启用TLS v1.3 性能显着提高,尤其是当broker具有大量分区时 顺利扩展Kafka Streams应用程序 Kafka Streams支持更改时发出 新指标可提供更好的运营洞察力 配置为进行连接时,Kafka Connect可以自动为源连接器创建topic 改进了Kafka Connect中接收器连接器的错误报告选项 -Kafka Connect中的新过滤器和条件SMT client.dns.lookup配置的默认值现在是use_all_dns_ips Zookeeper升级到3.5.8

  • 新功能
[KAFKA-6145] - 在迁移任务之前预热新的KS实例-可能会进行两阶段重新平衡
[KAFKA-8611] - 添加KStream#repartition操作
[KAFKA-8890] - KIP- 519:使SSL上下文/引擎配置可扩展
[KAFKA-9320] - 默认情况下启用TLSv1.3,并禁用某些较旧的协议
[KAFKA-9673] - 有条件地应用SMT
[KAFKA-9753] - 向流指标添加任务级活动进程比率
[KAFKA-9756] - 重构主循环以一次处理一个任务的多个记录

原文: https://www.orchome.com/9847

Kafka 2.7.0

TCP连接超时可配置和改善初始元数据的获取。 增强broker范围和每个listener的连接创建比率(KIP-612,第1部分) 限流创建topic、创建分区和删除topic操作。 将TRACE级别的端到端延迟指标添加到Streams。 添加broker端SCRAM配置API 支持PEM格式的SSL证书和私钥。 将RocksDB内存消耗添加到RocksDB指标中。 添加对聚合的滑动窗口支持

  • 新功能
[KAFKA-9893] -可配置的TCP连接超时和改进初始元数据的获取。
[KAFKA-9915] - 节流创建主题、创建分区和删除主题的操作。
[KAFKA-10054] - 在Streams中增加TRACE级别的端到端延迟指标。
[KAFKA-10259] - KIP-554:添加broker端SCRAM配置API。
[KAFKA-10338] - 支持SSL证书和私钥的PEM格式。

原文: https://www.orchome.com/9993

Kafka 2.8.0

抢先体验,kafka通过自我管理的仲裁来替代ZooKeeper(很快,Apache Kafka将不再需要ZooKeeper。) 增加集群描述API 在SASL_SSL监听器上支持彼此TLS认证 JSON请求/响应的debug日志 限制broker连接创建率 Topic识别 在Connect REST API中公开任务配置 更新 Streams FSM 以澄清ERROR状态的含义 扩展 StreamJoined 以允许更多的存储配置 更方便的TopologyTestDriver构造 引入 Kafka-Streams 专用的未捕获异常处理程序 启动和关闭Streams线程的API 改进 TimeWindowedDeserializer 和 TimeWindowedSerde 处理窗口大小 改善Kafka流中的超时和重试情况

原文: https://cloud.tencent.com/developer/article/1821560

标签: 6431连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台