Kafka学习之怎么保证不丢,不重复消费数据
2017-07-31 14:14
417 查看
Kafka学习之怎么保证不丢,不重复消费数据
Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题。丢包问题:消息推动服务,每天早上,手机上各终端都会给用户推送消息,这时候流量剧增,可能会出现kafka发送数据过快,导致服务器网卡爆满,或者磁盘处于繁忙状态,可能会出现丢包现象。
解决方案:首先对kafka进行限速,其次启用重试机制,重试间隔时间设置长一些,最后Kafka设置acks=all。
检测方法:使用重放机制,查看问题所在。
kafka配置如下:
props.put("compression.type", "gzip"); props.put("linger.ms", "50"); props.put("acks", "all"); props.put("retries ", 30); props.put("reconnect.backoff.ms ", 20000); props.put("retry.backoff.ms", 20000);
重发问题:当消费者重新分配partition的时候,可能出现从头开始消费的情况,导致重发问题。当消费者消费的速度很慢的时候,可能在一个session周期内还未完成,导致心跳机制检测报告出问题。
底层根本原因:已经消费了数据,但是offset没提交。
配置问题:设置了offset自动提交
问题场景:1.设置offset为自动提交,正在消费数据,kill消费者线程;2.设置offset为自动提交,关闭kafka时,如果在close之前,调用 consumer.unsubscribe() 则有可能部分offset没提交,下次重启会重复消费
重复消费最常见的原因:re-balance问题,通常会遇到消费的数据,处理很耗时,导致超过了Kafka的session timeout时间(0.10.x版本默认是30秒),那么就会re-balance重平衡,此时有一定几率offset没提交,会导致重平衡后重复消费。
去重问题:消息可以使用唯一id标识
相关文章推荐
- Kafka学习之怎么保证不丢,不重复消费数据
- Kafka重复消费和丢失数据问题
- Kafka重复消费和丢失数据研究
- Kafka消息保证不丢失和重复消费问题
- Kafka重复消费和丢失数据研究
- kafka重置consumer的offset 数据重复消费
- sparkstreaming + kafka如何保证数据不丢失、不重复
- SQL学习_查询重复数据和连接多个表数据的方法
- Spark Streaming使用Kafka保证数据零丢失
- Spark Streaming和Kafka整合保证数据零丢失
- Flume读取日志数据并写入到Kafka,ConsoleConsumer进行实时消费
- 去除字符串重复数据 分类: python基础学习 2013-08-08 17:44 335人阅读 评论(0) 收藏
- python消费kafka数据批量插入到es
- kafka重复消费解决方案
- 注册或者点击按钮时,怎么防止用户重复提交数据(实例讲解)
- Set 怎么保证不重复
- 关于kafka重新消费数据问题
- 用flume-ng-sql-source 从mysql 抽取数据到kafka被storm消费
- Jmeter中使用循环如何保证数据不重复
- 对接 kafka的 spark程序 程序可以正常运行 就是接受kafka的数据时很慢 ,怎么调优?