以下是Kafka 1.0.0
版本中解决的JIRA问题的摘要。有关该版本的完整文档,入门指南以及有关该项目的信息,请参阅Kafka网站,或kafka中文教程。
有关升级的注意事项:在升级群集之前,请仔细阅读此版本的升级文档。升级有关不兼容性和破坏性的变更,性能变化以及可能影响Kafka生产部署的任何其他更改的任何关键信息。
新功能
[KAFKA-4602] - KIP-72允许对传入请求消耗的内存进行绑定
[KAFKA-4819] - 将活动任务的状态公开给公共API
[KAFKA-5341] - 添加UnderMinIsrPartitionCount和每个分区UnderMinIsr指标
[KAFKA-5651] - KIP-182:减少数据流DSL过载并允许更容易地使用自定义的存储引擎
[KAFKA-5694] - 添加ChangeReplicaDirRequest和DescribeReplicaDirRequest (KIP-113)
[KAFKA-5738] - 为所有Kafka费率指标添加累计计数属性
[KAFKA-5746] - 添加新的指标以支持运行状况检查
[KAFKA-5854] - 将SASL身份验证失败作为客户端中的不可回溯异常处理
改进
[KAFKA-1595] - 移除已弃用和较慢的scala JSON解析器
[KAFKA-2376] - 增加 Kafka Connect 度量
[KAFKA-3741] - 允许通过StreamsConfig设置默认topic配置
[KAFKA-4108] - 优化DumpLogSegments偏移量-解码器输出格式
[KAFKA-4260] - 优化配置文档listeners=PLAINTEXT://0.0.0.0:9092
[KAFKA-4322] - StateRestoreCallback开始和结束指示
[KAFKA-4380] - 更新清理关机文件的使用说明。
[KAFKA-4416] - 向控制台使用者添加'--group'选项
[KAFKA-4501] - 支持 Java 9
[KAFKA-4504] - topic级别的retention.bytes属性详情不清楚它们是如何影响分区大小
[KAFKA-4763] - 处理JBOD(KIP-112)的磁盘故障
[KAFKA-4764] - 改进SASL认证失败的诊断
[KAFKA-5076] - 删除在JDK9中默认隐藏的java.xml.bind。*类的用法
[KAFKA-5077] - 使服务器启动脚本适用于Java 9
[KAFKA-5096] - 只记录无效的用户配置并用正确的配置覆盖
[KAFKA-5233] - 标点语义变化(KIP-138)
[KAFKA-5330] - Connect中使用每个任务的转换器
[KAFKA-5358] - 消费者perf工具应该分别计算重新平衡时间
[KAFKA-5363] - 添加批量恢复和接收恢复统计信息的功能。
[KAFKA-5384] - KIP-162: 默认启动topic删除
[KAFKA-5410] - 修复Connector中的taskClass()方法名和SinkTask中的flush()签名
[KAFKA-5439] - 在集成测试中添加检查以验证线程是否已关闭
[KAFKA-5454] - 添加一个新的Kafka Streams示例物联网导向
[KAFKA-5461] - KIP-168: 为每个群集添加GlobalTopicCount度量
[KAFKA-5468] - 将源偏移量提交消息更改为信息以匹配接收器行为
[KAFKA-5470] - 用-XX:+ExplicitGCInvokesConcurrent替换在kafka-run-class中的-XX:+DisableExplicitGC
[KAFKA-5485] - 数据流不应该暂停任务两次
[KAFKA-5495] - 替换文档中已弃用的’ConsumerOffsetChecker‘
[KAFKA-5515] - 考虑从Segments类中删除日期格式
[KAFKA-5516] - 以类似的方式格式化可验证的生产者/消费者产出
[KAFKA-5525] - 数据流重置工具应该具有相同的控制台输出,无论有没有干运行
[KAFKA-5542] - 为LeaderEpochFileCache.endOffsetFor()改进Java文档
[KAFKA-5547] - 如果没有主题描述访问,返回主题授权失败
[KAFKA-5549] - 解释`client.id`只是用作Streams中的前缀
[KAFKA-5557] - StreamPartitionAssignor中使用logPrefix
[KAFKA-5602] - 添加--custom-ducktape flag到ducker-ak
[KAFKA-5629] - 控制台消费者在命令行上提供时会覆盖auto.offset.reset属性,而不会对其进行警告。
[KAFKA-5657] - 在描述连接器时,连接REST API应该包括连接器类型
[KAFKA-5695] - 在AuthorizerIntegrationTest中测试DeleteRecordsRequest
[KAFKA-5726] - KafkaConsumer.subscribe()重载只需要模式,没有ConsumerRebalanceListener
[KAFKA-5743] - 所有ducktape服务应将其文件存储在 /mnt 的子目录中
[KAFKA-5744] - ShellTest: 添加测试以尝试运行不存在的程序,错误返回
[KAFKA-5750] - 在SimpleAclAuthorizer类中将拒绝日志消息提升为INFO
[KAFKA-5754] - 重构Streams以使用LogContext
[KAFKA-5755] - 重构Producer以使用LogContext
[KAFKA-5762] - 重构AdminClient以LogContext
[KAFKA-5763] - 重构NetworkClient以使用LogContext
[KAFKA-5768] - 升级ducktape版本到0.7.1,并使用新的kill_java_processes
[KAFKA-5783] - 实现KafkaPrincipalBuilder接口为SASL (KIP-189)支持
[KAFKA-5820] - 在StreamThread中删除不需要的同步关键字
[KAFKA-5822] - 主题分区的一致记录
[KAFKA-5856] - 增加AdminClient.createPartitions()
[KAFKA-5915] - 支持在Java 9中映射/直接缓冲区的映射
[KAFKA-5920] - 将SSL身份验证失败作为客户端中的不可回溯异常处理
[KAFKA-5932] - 避免在FlushListeners中调用fetchPrevious
[KAFKA-5947] - 处理来自交易生产者和KafkaAdminClient的认证失败
[KAFKA-5958] - 用户StoreListener不适用于全球商店
[KAFKA-5985] - 提到需要关闭商店迭代器
[KAFKA-6004] - 启用自定义认证插件以返回错误消息给客户端
[KAFKA-6025] - Kafka Streams文档中有错误
Bug
[KAFKA-2105] - MetadataRequest中的客户端上的NullPointerException
[KAFKA-2360] - kafka-consumer-perf-test.sh脚本帮助信息打印无用的参数。
[KAFKA-3356] - 删除在0.9,0.11中弃用的ConsumerOffsetChecker
[KAFKA-3623] - 使KStreamTestDriver从ExternalResource扩展
[KAFKA-3856] - 清理Kafka Streams构建API
[KAFKA-3986] - completedReceives可以包含关闭的渠道
[KAFKA-4585] - KIP-163: offset拉取和提交请求使用相同的权限
[KAFKA-4669] - 当NetworkClient.handleCompletedReceives抛出异常时,KafkaProducer.flush挂起
[KAFKA-4785] - 内部重新分区主题的记录应始终使用RecordMetadataTimestampExtractor
[KAFKA-4830] - 增加KStream.print()以允许用户在打印的字符串中传递额外的参数
[KAFKA-4856] - 从多个线程调用KafkaProducer.close()可能会导致虚假错误
[KAFKA-4860] - Kafka批处理文件不支持包含空格的路径
[KAFKA-4913] - 用一个段创建一个窗口存储区会引起除零错误
[KAFKA-5127] - 在没有使用的情况下用foreach替换模式匹配
[KAFKA-5140] - 片状ResetIntegrationTest
[KAFKA-5152] - Kafka Streams在启动过程中启动关机后保持恢复状态
[KAFKA-5167] - 由于LockException而导致重新平衡后,流任务被卡住
[KAFKA-5225] - StreamsResetter不允许自定义Consumer属性
[KAFKA-5239] - 生产者缓冲池在锁内分配内存。
[KAFKA-5379] - ProcessorContext.appConfigs() 应该返回parsed/validated值
[KAFKA-5402] - 当客户端配额未启用时,不应创建针对kafka.server的JmxReporter拉取指标
[KAFKA-5412] - 使用connect-console-sink/source.properties会引发找不到“file”属性有关的异常
[KAFKA-5417] - SASL/SSL连接同时标记为CONNECTED和DISCONNECTED时,客户端将获得不一致的连接状态
[KAFKA-5431] - LogCleaner由于org.apache.kafka.common.errors.CorruptRecordException而停止
[KAFKA-5464] - StreamsKafkaClient不应该使用StreamsConfig.POLL_MS_CONFIG
[KAFKA-5469] - 创建的状态更改日志主题未正确记录
[KAFKA-5481] - 在启用跟踪级别的情况下,ListOffsetResponse未以正确的方式记录
[KAFKA-5484] - 支持Refactor kafkatest docker
[KAFKA-5487] - stream的滚动升级测试
[KAFKA-5506] - bin/kafka-consumer-groups.sh无法查询offsets
[KAFKA-5507] - kafka-run-class.sh不检查空的$CLASSPATH
[KAFKA-5508] - 更改主题的文档
[KAFKA-5512] - KafkaConsumer: 空闲时内存分配率高
[KAFKA-5534] - 即使没有找到偏移量,KafkaConsumer offsetsetsForTimes也应该在结果中包含分区
[KAFKA-5535] - Transformations - tranformations for value broken on tombstone events
[KAFKA-5544] - 删除分区时,应删除LastStableOffsetLag指标
[KAFKA-5548] - SchemaBuilder不验证输入。
[KAFKA-5556] - KafkaConsumer.commitSync throws IllegalStateException: 尝试从未失败的future恢复异常。
[KAFKA-5566] - 不稳定的测试QueryableStateIntegrationTest.shouldAllowToQueryAfterThreadDied
[KAFKA-5567] - 通过改变topic分区提交的offset的转换应该引用原始的topic分区
[KAFKA-5576] - 通过更新rocksdb版本来支持Power平台
[KAFKA-5579] - SchemaBuilder.type(Schema.Type)不应该允许null。
[KAFKA-5587] - Processor得到一个未捕获的异常: NullPointerException
[KAFKA-5595] - SocketServer中的非法状态; 尝试使用另一个发送进行发送
[KAFKA-5599] - ConsoleConsumer:不推荐使用--new-consumer
[KAFKA-5600] - 组加载回归导致陈旧的元数据/偏移量缓存
[KAFKA-5603] - 在关闭僵尸任务时,stream不应该放弃事务
[KAFKA-5607] - 改进SocketServer中的错误处理以减少非法状态
[KAFKA-5608] - 由于超时启动Jmx工具导致系统测试失败
[KAFKA-5610] - KafkaApis.handleWriteTxnMarkerRequest可在分区移出时返回UNSUPPORTED_FOR_MESSAGE_FORMAT错误
[KAFKA-5619] - 在所有工具包中弃用--new-consumer操作
[KAFKA-5620] - doSend()中的SerializationException掩码类转换异常
[KAFKA-5623] - ducktape kafka服务:不要假设服务包含num_nodes
[KAFKA-5630] - 消费者轮询在CorruptRecordException之后循环播放同一条记录
[KAFKA-5643] - 使用_DUCKTAPE_OPTIONS对执行测试没有影响
[KAFKA-5644] - 瞬态测试失败:ResetConsumerGroupOffsetTest.testResetOffsetsToZonedDateTime
[KAFKA-5656] - 支持KafkaMbean中不存在某些属性的批量属性请求
[KAFKA-5663] - LogDirFailureTest系统测试失败
[KAFKA-5668] - 可查询状态窗口存储范围扫描仅返回一个存储的结果
[KAFKA-5679] - 添加日志记录以区分内部和外部启动的Kafka关闭
[KAFKA-5698] - 根据TopologyDescription.toString()中的名称后缀对处理器节点进行排序
[KAFKA-5701] - 单元测试shouldTogglePrepareForBulkLoadDuringRestoreCalls故障
[KAFKA-5704] - 自动创建主题会导致旧集群失败
[KAFKA-5711] - 批量恢复应该处理删除
[KAFKA-5717] - 状态商店中的[stream]'null'值
[KAFKA-5720] - 在Jenkins中,kafka.api.SaslSslAdminClientIntegrationTest失败,出现org.apache.kafka.common.errors.TimeoutException
[KAFKA-5730] - 消费者应确保同步和异步offset提交之间的一致性顺序
[KAFKA-5733] - 系统测试得到异常RocksDBException:db比options.num_levels更高级别
[KAFKA-5735] - 客户端和代理不一致地处理客户端ID
[KAFKA-5737] - KafkaAdminClient线程应该是守护进程
[KAFKA-5745] - 在成为领导者之前,Partition.make Leader()应该将HOW转换为Offset Metadata
[KAFKA-5752] - 删除主题并立即重新创建主题将删除新主题的时间索引。
[KAFKA-5753] - ShellTest.testRunProgramWithErrorReturn在macOS上失败
[KAFKA-5756] - 刷新同步问题
[KAFKA-5758] - 重新分配主题的分区可能会对其他主题产生不利影响
[KAFKA-5765] - 将merge()从StreamsBuilder移动到KStream()
[KAFKA-5767] - 如果IBP<1.0.0并且存在日志目录失败,则Kafka服务器应该停止
[KAFKA-5771] - org.apache.kafka.streams.state.internals.Segments#segments方法返回不正确的结果时段添加乱序
[KAFKA-5774] - WorkerSinkTask失败异常应包含原因
[KAFKA-5787] - StoreChangeLogReader需要恢复在初始化后添加的分区
[KAFKA-5790] - 如果抛出异常,SocketServer.processNewResponses不应该跳过响应
[KAFKA-5797] - StoreChangelogReader应该适用于不可用的代理端元数据
[KAFKA-5804] - 写入日志时,ChangeLoggingWindowBytesStore需要保留副本
[KAFKA-5818] - KafkaStreams状态转换不正确
[KAFKA-5829] - 通过减少不必要的快照文件删除,在不正确的停机后加速broker启动
[KAFKA-5833] - 发生InterruptedException时重置线程中断状态
[KAFKA-5837] - 如果使用默认的throttle/超时,则重新分配分区命令将失败
[KAFKA-5843] - 只有在kafka_mx4jenable设置为true时才应执行Mx4jLoader.maybeLoad
[KAFKA-5862] - 从Streams重置工具移除ZK依赖
[KAFKA-5864] - ReplicaFetcherThread不应该因脱机日志目录中的副本而死亡
[KAFKA-5865] - 过期启用幂等的批次可能会导致数据丢失。
[KAFKA-5867] - Kafka Connect应用程序在启动时应记录信息消息
[KAFKA-5872] - 在SslSelectorTest.testMuteOnOOM中的瞬时故障
[KAFKA-5879] - 处理IsrChangeNotification事件时,控制器应读取最新的IsrChangeNotification znodes
[KAFKA-5908] - 当读取不同的开始和结束时间时,CompositeReadOnlyWindowStore范围提取不会返回所有值
[KAFKA-5918] - 修复Kafka Streams教程中的小错别字和错误
[KAFKA-5953] - JDBC驱动程序可能会断开连接类加载器隔离
[KAFKA-5954] - Connect系统测试故障: ConnectRestApiTest
[KAFKA-5956] - StreamBuilder#table和StreamsBuilder#globalTable应使用Materialized中的serdes
[KAFKA-5957] - 生产者IllegalStateException由于第二次中止批处理而释放
[KAFKA-5959] - 在NetworkClient中的NPE
[KAFKA-5960] - 生产者使用不支持ProduceRequest的版本针对旧版的broker
[KAFKA-5967] - CompositeReadOnlyKeyValueStore#approximateNumEntries()中负值的无效检查
[KAFKA-5968] - 在关机期间删除所有broker指标
[KAFKA-5970] - 由于DelayedProduce和组的锁定而导致死锁
[KAFKA-5976] - RequestChannel.sendReponse使用TRACE记录记录NetworkSend的大小不正确
[KAFKA-5979] - kip-120改变了内部流的主题命名
[KAFKA-5980] - FailOnInvalidTimestamp不记录错误
[KAFKA-5986] - 当禁用日志记录时,流状态恢复从未完成
[KAFKA-5989] - disableLogging()会导致分区不被消费
[KAFKA-5995] - 重命名AlterReplicaDir为AlterReplicaDirs
[KAFKA-6003] - 没有数据的分区的复制拉取程序线程无法启动
[KAFKA-6005] - 拒绝来自空协议类型/协议列表的第一个成员的JoinGroup请求
[KAFKA-6008] - Kafka Connect: Unsanitized workerID在启动时引起异常
[KAFKA-6010] - 瞬时故障: MemoryRecordsBuilderTest.convertToV1WithMixedV0AndV2Data
[KAFKA-6012] - TransactionsBounceTest中的markErrorMeter中的NoSuchElementException
[KAFKA-6015] - 在RecordAccumulator的NPE
[KAFKA-6016] - 在reassign_partitions_test中使用幂等生产者
[KAFKA-6026] - 如果遇到较窄的竞争条件,KafkaFuture超时将失败
[KAFKA-6027] - 系统测试故障: LogDirFailureTest
[KAFKA-6030] - 日志清理器可清除比率计算中的整数溢出
[KAFKA-6042] - Kafka请求处理程序死锁并关闭群集。
[KAFKA-6053] - 在升级系统测试中创建ProducerRecord时发生NoSuchMethodError
[KAFKA-6055] - Windows上的运行工具由于JVM配置中的输入错误而失败
[KAFKA-6070] - ducker-ak:将ipaddress和enum34依赖关系添加到docker image
[KAFKA-6087] - 扫描plugin.path需要支持相关的符号链接
[KAFKA-6093] - 删除主题后,副本目录不会被删除
[KAFKA-6100] - Streams快速入门在Windows上使Java崩溃
[KAFKA-6101] - 重新连接到broker指数不会回退
[KAFKA-6116] - leader选举期间由于过度日志造成的主要性能问题
[KAFKA-6119] - Kafka011交易生产者的无感知数据丢失
[KAFKA-6131] - 如果txns同时完成,事务标记有时会被丢弃
[KAFKA-6134] - 分区重新分配期间,控制器上的内存使用率很高
任务
[KAFKA-5708] - 更新Jackson依赖 (从2.8.5到2.9.x)
[KAFKA-5884] - 当运行在Java 9时启用PowerMock测试。
[KAFKA-5977] - 将RocksDB依赖升级到合法可接受的版本
测试
[KAFKA-5742] - 支持在系统测试中传递ZK chroot
[KAFKA-6104] - 为ClusterConnectionStates增加单元测试
子任务
[KAFKA-2507] - 用等价的org.apache.kafka.common.requests替换ControlledShutdown{Request,Response}。
[KAFKA-2959] - 移除在RequestChannel中临时映射的反序列化功能。
[KAFKA-4593] - 重新平衡回调过程中的任务迁移可能会导致已过时的任务的IllegalStateException异常
[KAFKA-4643] - 改进StreamsKafkaClient的测试覆盖率
[KAFKA-4653] - 提高RocksDBStore的测试覆盖率
[KAFKA-4655] - 改进CompositeReadOnlySessionStore的测试覆盖率
[KAFKA-4656] - 改进CompositeReadOnlyKeyValueStore的测试覆盖率
[KAFKA-4658] - 改进测试覆盖率InMemoryKeyValueLoggedStore
[KAFKA-4659] - 改进CachingKeyValueStore的测试覆盖率
[KAFKA-4661] - 提高UsePreviousTimeOnInvalidTimestamp的测试覆盖率
[KAFKA-4868] - 优化RocksDb配置以实现快速恢复/批量加载
[KAFKA-5006] - KeyValueStore.put可能会抛出与当前投入尝试无关的异常
[KAFKA-5134] - 用zkUtils.getChildren替换zkClient.getChildren方法
[KAFKA-5157] - 在反序列化期间处理损坏数据的选项
[KAFKA-5314] - 改state存储的异常处理
[KAFKA-5342] - 区分交易生产者的可中断的失败
[KAFKA-5372] - 意外的state转换Dead的PendingShutdown
[KAFKA-5388] - 用等效的zkUtils方法替换zkClient.subscribe*Change方法
[KAFKA-5389] - 用zkUtils.pathExists替换zkClient.exists方法
[KAFKA-5391] - 将zkClient.delete*方法替换为等效的zkUtils方法
[KAFKA-5494] - 幂等生产者不应该要求max.in.flight.requests.per.connection = 1
[KAFKA-5501] - 引入异步ZookeeperClient
[KAFKA-5531] - 检查所有流测试中的异常处理
[KAFKA-5597] - 自动生成生产者发件人指标
[KAFKA-5650] - 为定制存储引擎提供一种简单的方法来使用流封装存储(KIP-182)
[KAFKA-5653] - 向KTable添加新的API方法
[KAFKA-5654] - 向KGroupedStream添加新的API方法
[KAFKA-5655] - 向KGroupedTable添加新的API方法
[KAFKA-5670] - 添加Topology并弃用Topology构建器
[KAFKA-5671] - 添加StreamsBuilder并弃用KStreamBuilder
[KAFKA-5673] - 重构KeyValueStore层次结构,以便MeteredKeyValueStore是最外层的存储
[KAFKA-5689] - 重构WindowStore层次结构,以便Metered Store是最外层存储
[KAFKA-5727] - 添加原型项目以及“写入应用程序”web文档。
[KAFKA-5749] - 重构SessionStore层次结构
[KAFKA-5776] - 添加Trogdor故障注入守护进程
[KAFKA-5777] - 为Trogdor Fault注入守护进程添加ducktape集成
[KAFKA-5793] - 加强可能返回OutOfOrderSequence的情况
[KAFKA-5806] - 修复trogdor协调器关闭时的瞬态单元测试失败
[KAFKA-5815] - 添加打印类和KStream#print(打印)
[KAFKA-5816] - 将生产的类和新的重载添加到KStream
[KAFKA-5817] - 添加序列化类和KStream groupBy和groupByKey重载
[KAFKA-5819] - 添加Joined类和相关的KStream联接重载
[KAFKA-5823] - 更新文档
[KAFKA-5832] - 将消费类和重载添加到StreamBuilder
[KAFKA-5839] - 升级指南doc变更为KIP-130
[KAFKA-5844] - 将groupBy(KeyValueMapper,Serialized)添加到KTable
[KAFKA-5852] - 将filter,filterNot,mapValues和Materialized添加到KTable
[KAFKA-5853] - 添加Windowed Stream接口和实现
[KAFKA-5873] - 将Materialized重载添加到StreamBuilder
[KAFKA-5888] - 交易系统测试应检查消息顺序
[KAFKA-5899] - 为连接器创建连接指标
[KAFKA-5900] - 创建源和sink任务通用的连接指标
[KAFKA-5901] - 为源任务创建连接度量标准
[KAFKA-5902] - 为接收器任务创建连接指标
[KAFKA-5903] - 为worker创建连接指标
[KAFKA-5904] - 为worker重新平衡创建连接度量标准
[KAFKA-5913] - 将`hasOffset`和`hasTimestamp`方法添加到RecordMetadata以指示元数据是否可用
[KAFKA-5921] - 将Materialized过载添加到WindowedKStream
[KAFKA-5922] - 增加SessionWindowedKStream
[KAFKA-5931] - 不赞成使用KTable#to和KTable#through
[KAFKA-5937] - 改进ProcessorStateManager异常处理
[KAFKA-5949] - 用户callback异常需要妥善处理
[KAFKA-5990] - 为连接指标添加生成的文档