背景
为什么使用消息队列
在kafka生产中,基本都有一个leader和多个follwer。follwer会去同步leader的信息。 因此,为了避免生产者丢数据,做如下两点配置:
针对消息队列丢数据的情况,无外乎就是,数据还没同步,leader就挂了,这时zookpeer会将其他的follwer切换为leader,那数据就丢失了。
针对这种情况,应该做两个配置。
这两个配置加上上面生产者的配置联合起来用,基本可确保kafka不丢数据。
这种情况一般是自动提交了offset,然后你处理程序过程中挂了。kafka以为你处理好了。
offset:指的是kafka的topic中的每个消费组消费的下标。
简单的来说就是一条消息对应一个offset下标,每次消费数据的时候如果提交offset,那么下次消费就会从提交的offset加一那里开始消费。
比如一个topic中有100条数据,我消费了50条并且提交了,那么此时的kafka服务端记录提交的offset就是49(offset从0开始),那么下次消费的时候offset就从50开始消费。
解决方案也很简单,改成手动提交offset即可。
本文作者:曹子昂
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!