摘要: 经常有人问的一个问题就是:Kafka broker到底是不是无状态的?网上有这样的说法: 正常情况下consumer会在消费完一条消息后线性增加这个offset。当然,consumer也可将offset设成一个较小的值,重新消费一些消息。因为offet由consumer控制,所以Kafka brok阅读全文
posted @ 2018-02-11 10:02 huxihx 阅读(9) 评论(0) 编辑
摘要: 一、含义 CommitFailedException异常:位移提交失败时候抛出的异常。通常该异常被抛出时还会携带这样的一段话: Commit cannot be completed since the group has already rebalanced and assigned the par阅读全文
posted @ 2018-02-02 16:35 huxihx 阅读(44) 评论(0) 编辑
摘要: 众所周知,__consumer__offsets是一个内部topic,对用户而言是透明的,除了它的数据文件以及偶尔在日志中出现这两点之外,用户一般是感觉不到这个topic的。不过我们的确知道它保存的是Kafka新版本consumer的位移信息。本文我们简单梳理一下这个内部topic(以1.0.0代码阅读全文
posted @ 2018-01-19 16:05 huxihx 阅读(88) 评论(0) 编辑
摘要: 关于Kafka日志留存(log retention)策略的介绍,网上已有很多文章。不过目前其策略已然发生了一些变化,故本文针对较新版本的Kafka做一次统一的讨论。如果没有显式说明,本文一律以Kafka 1.0.0作为分析对象。 所谓日志留存策略,就是Kafka保存topic数据的规则,我将按照以下阅读全文
posted @ 2017-12-15 13:48 huxihx 阅读(199) 评论(0) 编辑
摘要: 很多用户都有这样的需求:实时监控某个topic各分区在broker上所占的磁盘空间大小总和。Kafka并没有提供直接的脚本工具用于统计这些数据。 如果依然要实现这个需求,一种方法是通过监控JMX指标得到分区当前总的日志大小,然后手动相加所有分区的值得出;另一种方法就是使用1.0.0引入的Descri阅读全文
posted @ 2017-11-30 16:35 huxihx 阅读(194) 评论(0) 编辑
摘要: 在网上碰到的问题,想了下使用现有的API还是可以实现的。 首先,需要引入Kafka服务器端代码,比如加入Kafka 1.0.0依赖: Maven <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.12</arti阅读全文
posted @ 2017-11-14 11:48 huxihx 阅读(250) 评论(2) 编辑
摘要: 千呼万唤始出来,经过7年的发展与完善,Apache Kafka 1.0.0正式发布!在笔者看来,比起1.0.0引入的新功能,此版本最大的意义在于标识Kafka各种组件功能的稳定性。不过我们还是来看下1.0.0引入的一些新功能: Kafka Streams API的优化:增加了一些全新的操作算子(op阅读全文
posted @ 2017-11-02 09:47 huxihx 阅读(483) 评论(0) 编辑
摘要: 关于Kafka幂等producer设计与实现的一些讨论阅读全文
posted @ 2017-10-23 22:20 huxihx 阅读(478) 评论(2) 编辑
摘要: ~~~这是一篇有点长的文章,希望不会令你昏昏欲睡~~~ 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的。简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epoch来标识备份进度。后面我们会详细讨论两种机制的差异。不阅读全文
posted @ 2017-09-21 15:40 huxihx 阅读(645) 评论(11) 编辑
摘要: Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据。Flink的Kafka consumer集成了checkpoint机制以提供精确一次的处理语义。在具体的实现过程中,Flink不依赖于Kafka内置的消费组位移管理,而是在内部自行记录和维护con阅读全文
posted @ 2017-09-08 14:49 huxihx 阅读(423) 评论(0) 编辑