Kafka丢数据、重复数据分析
前言填别人的坑again。数据不正常,追到kafka这里了,分析了很久的程序,做一个总结,关于丢数据和重复数据。
丢数据先说丢数据。目前遇到一种丢数据的情况。
如果auto.commit.enable=true,当consumer fetch了一些数据但还没有完全处理掉的时候,刚好到commit interval出发了提交offset操作,接着consumer crash掉了。这时已经fetch的数据还没有处理完成但已经被commit掉,因此没有机会再次被处理,数据丢失。
那么换一种方法,我们手动提交offset,这时会出现另外一种重复数据的情况,后面会提到。
重复数据1假设一个场景,我们使用High Level Consumer API来消费kafka中的数据,每当消费N条数据并成功插入Mysql后,我们手动执行一下consumer.commitSync()操作,提交一次offset。这种情况是先消费成功后再提交,因此不再丢数据了,但是会出现重复数据的情况。
但是! 如果当程序消费了一定数量的数据之后,还没来得及提交offset,程序crash了,那么下次再启动程序之后,就...阅读全文
丢数据先说丢数据。目前遇到一种丢数据的情况。
如果auto.commit.enable=true,当consumer fetch了一些数据但还没有完全处理掉的时候,刚好到commit interval出发了提交offset操作,接着consumer crash掉了。这时已经fetch的数据还没有处理完成但已经被commit掉,因此没有机会再次被处理,数据丢失。
那么换一种方法,我们手动提交offset,这时会出现另外一种重复数据的情况,后面会提到。
重复数据1假设一个场景,我们使用High Level Consumer API来消费kafka中的数据,每当消费N条数据并成功插入Mysql后,我们手动执行一下consumer.commitSync()操作,提交一次offset。这种情况是先消费成功后再提交,因此不再丢数据了,但是会出现重复数据的情况。
但是! 如果当程序消费了一定数量的数据之后,还没来得及提交offset,程序crash了,那么下次再启动程序之后,就...阅读全文