Kafka 数据丢失问题
Kafka如何保证数据不丢失
1.生产者数据的不丢失
kafka的ack机制:在kafka发送数据的时候,每次发送消息都会有一个确认反馈机制,确保消息正常的能够被收到,其中状态有0,1,-1。
如果是同步模式:ack机制能够保证数据的不丢失,如果ack设置为0,风险很大,一般不建议设置为0。即使设置为1,也会随着leader宕机丢失数据。
producer.type=sync
request.required.acks=1
如果是异步模式:也会考虑ack的状态,除此之外,异步模式下的有个buffer,通过buffer来进行控制数据的发送,有两个值来进行控制,时间阈值与消息的数量阈值,如果buffer满了数据还没有发送出去,有个选项是配置是否立即清空buffer。可以设置为-1,永久阻塞,也就数据不再生产。
异步模式下,即使设置为-1。也可能因为程序员的不科学操作,操作数据丢失,比如kill -9,但这是特别的例外情况。
producer.type=async
request.required.acks=1
queue.buffering.max.ms=5000
queue.buffering.max.messages=10000
queue.enqueue.timeout.ms = -1
batch.num.messages=200
结论:producer有丢数据的可能,但是可以通过配置保证消息的不丢失。
2.消费者数据的不丢失
通过offset commit 来保证数据的不丢失,kafka自己记录了每次消费的offset数值,下次继续消费的时候,会接着上次的offset进行消费。
而offset的信息在kafka0.8版本之前保存在zookeeper中,在0.8版本之后保存到topic中,即使消费者在运行过程中挂掉了,再次启动的时候会找到offset的值,找到之前消费消息的位置,接着消费,由于offset的信息写入的时候并不是每条消息消费完成后都写入的,所以这种情况有可能会造成重复消费,但是不会丢失消息。
唯一例外的情况是,我们在程序中给原本做不同功能的两个consumer组设置KafkaSpoutConfig.bulider.setGroupid的时候设置成了一样的groupid,这种情况会导致这两个组共享同一份数据,就会产生组A消费partition1,partition2中的消息,组B消费partition3的消息,这样每个组消费的消息都会丢失,都是不完整的。 为了保证每个组都独享一份消息数据,groupid一定不要重复才行。
2.kafka集群中的broker的数据不丢失
每个broker中的partition我们一般都会设置有replication(副本)的个数,生产者写入的时候首先根据分发策略(有partition按partition,有key按key,都没有轮询)写入到leader中,follower(副本)再跟leader同步数据,这样有了备份,也可以保证消息数据的不丢失。
Kafka 数据丢失问题相关推荐
- Kafka 数据丢失与优化
目录 Kafka数据丢失与解决方案 Kafka在什么情况下会丢失数据? broker发生丢失数据分为下面几类 consumer发生丢失数据分为下面几类 Kafka性能调优 producer需注意 br ...
- kafka数据丢失总结
数据丢失是一件非常严重的事情事,针对数据丢失的问题我们需要有明确的思路来确定问题所在,针对这段时间的总结,我个人面对kafka 数据丢失问题的解决思路如下: 是否真正的存在数据丢失问题,比如有很多时候 ...
- 记一次kafka数据丢失问题的排查
2019独角兽企业重金招聘Python工程师标准>>> 数据丢失为大事,针对数据丢失的问题我们排查结果如下. 第一:是否存在数据丢失的问题? 存在,且已重现. 第二:是在什么 ...
- 关于kafka数据丢失场景的一次激烈讨论.... |文末送书
大家好,我是彦祖~ 问题描述 最近彦祖发现,有不少同学 对 acks 和 min.insync.replicas 的配置存在不少误解. 刚好拿一个同学的问题,来好好说明一下 根据上面提的几个问题, 整 ...
- kafka数据丢失的场景
消费者弄丢数据 唯一可能导致消费者弄丢数据的情况,就是说,你那个消费到了这个消息,然后消费者那边自动提交了offset,让kafka以为你已经消费好了这个消息,其实你刚准备处理这个消息,你还没处理,你 ...
- kafka面试题简答
1. kafka分区数如何设置? 默认情况下 1 指定分区,按你指定的分区 2 未指定分区,但是指定了key,依据key的hashCode计算分区 3 未指定分区,且没有指定key,依据轮询算法计算分 ...
- Kafka: 异常知其所以然
1. kafka Producer内存不足 生产者客户端由两个线程协调运行:主线程和Sender线程(发送线程): 主线程由KafkaProducer创建消息,通过拦截器序列化器跟分区器之后缓存到消息 ...
- 大数据面试之kafka重点(二)
Kafka怎么保证数据不丢失,不重复? 可回答:Kafka如何保证生产者不丢失数据,消费者不丢失数据? 问过的一些公司:字节跳动 x 2,快手x2,严选阿里,祖龙娱乐x2,招银网络,ebay,安恒信息 ...
- 炫“库”行动-人大金仓有奖征文-KFS目标端支持Kafka配置详解
[本文正在参与炫"库"行动-人大金仓有奖征文] 活动链接: https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91e ...
- 手记系列之六 ----- 分享个人使用kafka经验
前言 本篇文章主要介绍的关于本人从刚工作到现在使用kafka的经验,内容非常多,包含了kafka的常用命令,在生产环境中遇到的一些场景处理,kafka的一些web工具推荐等等.由于kafka这块的记录 ...
最新文章
- java 二维码生成和解析
- 简单的成绩录入系统程序及分析以及思考
- c++调用python3
- conrtex 和 ARM 的关系
- Matlab中断语句
- 清华大学《操作系统》(八):置换算法
- appium+python 【Mac】Android夜神模拟器
- 【Matlab语音识别】声纹识别系统(带面板)【含GUI源码 1022期】
- 软件平台与中间技术复习
- The JAVA_HOME environment variable is not defined correctly(亲测有效)
- web前端开发工程师的真实能力如何判定?大厂资深前端指点迷津
- python三阶魔方_三阶魔方自动求解及动态可视化matlab代码
- 谈谈对儒家与道家的一些小小看法
- 应届生职场入门毒打指南
- 教学案例六 多重循环
- SQL39 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,使用强制索引。
- 开源ios街机模拟器
- 【软件工程——UML基础教程】
- 乐檬/乐看TV4.5多源完美修复版以及AS打包教程
- 不用向日葵 teamview 利用云服务器部署FRP穿透内网实现控制远程桌面
热门文章
- 虚拟桌面和云桌面办公系统
- CC2540F256RHAR
- 安卓音频开发(四)使用lame把wav转mp3
- 是男人就闯到99关 【安卓软件】
- 打造国云安全品牌,铸牢企业云上安全防线
- 关于weight decay
- html页面调用高德地图,html前端使用高德地图入门教程
- SAP入行须知 | SAP项目管理(PS模块)概述 |大连易拓SAP
- 软件工程——团队作业2
- octobercms mysql_OctoberCMS插件形成数据库关系(OctoberCMS plugin form database relationships)...