栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Kafka数据消费重复怎么处理

Kafka数据消费重复怎么处理

自身处理:幂等性+事务+ACKS=-1  ===>精准一次性消费

kafka在0.11版新增了幂等型producer和事务型producer。前者解决了单会话幂等性等问题,后者解决了多会话幂等性

幂等性: 支持单分区单会话, 分区内数据有序,对照id, 数据有唯一id存在不发送

事务: 支持多分区, 数据有唯一id, 和所有分区中比较, 如果存在不发送, 效率低下 (生产环境较少使用, 容易数据挤压, 应更追求效率)
造成Kafka重复消费的原因:

底层最根本的原因是:已经消费了数据,但是offset并没及时提交(或者压根没提交)

导致的原因很多,常见原因:

1. 强行kill线程,导致消费后的数据,offset没有提交

2. 设置了offset为自动提交,在关闭kafka时,如果在close之前,调用consumer.unsubscribe()则可能有部分offset没提交,下次重启会重复消费

3. 消费后的数据,当ooset还没有提交时,partition就断开连接.eg:通常会遇到消费的数据,处理很好使,导致超过了kafka的会话时间-session timeout时间(0.10.x版本默认会话时间是30s),那么久会reblance重平衡,此时有一定几率offset没提交,会导致重平衡后的重复消费.

4. 当消费者重新分配partition的时候,可能出现从头开始消费的情况,最终导致重发问题

5. 当消费者消费的速度很慢的时候,可能在一个会话周期内还未完成,导致心跳机制检测报告出现问题

常见解决办法:

1.手动维护offset

2.加大会话时间参数--kafka.consumer.session.timeout,以避免被错误关闭的情况产生

3.加大消费者的消费速率(消费能力)

4.在下游对数据进行去重操作

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号