问题描述
今天现场实施同事说Kafka Manager上显示有3500w条记录,但使用我们的平台落地后,一统计发现只有2200w条记录,这是不是说明我们的平台存在丢数据的可能。
经了解,对接方是通过如下界面来判断topic中的记录条数的。
上图是Kafka Manager的其中一个界面,该界面显示了Kafka Topic的分区数,Broker的分布情况,以及每个Topic中Recent Offset之和。(在各个分区中,Offset值都是从0开始往后递增的)
在很久以前,我们团队其实已经考虑到了数据丢失的可能,于是,利用StreamingListener接口去监听StreamingListenerBatchCompleted事件,只有监听到该事件,才会去提交offset。理论上来说,我们的平台是可以保证“至少一次”的语义。竟然敢怀疑我维护了四年的大数据平台!不能