丢数据可能来自:

息生产者(Producer)、消息消费者(Consumer)和服务载体(在Kafka中用Broker指代)[6]

broker可以理解为类似于队列api一样的东西

[8]提供了一个脑图

----------------------------------------------------------------------------------生产者--------------------------------------------------------------------------------------------------------------------------------------------------

参数设置 推荐设置
request.required.acks -1
producer.send(msg,callback)

优先使用producer.send(msg,callback) 带回调方法

而不是producer.send(msg) 不带回调方法

retries MAX
enable.idempotence

true

producer.type 采用默认的sync值[5]

-------------------------------------------------------------------------------服务端---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

变量 说明 推荐设置
unclean.leader.election.enable 这个参数是控制leader replica出问题了以后follower replica竞选leader replica资格的,我们把设置为false,意思就是如果follower replica如果落后leader replica太多就不能参与竞选。 false
replication.factor 这个参数设置的是partition副本的个数,如果我们要想保证数据不丢,这个副本数需要设置成大于1。 >= 3
min.insync.replicas

这个参数要跟生产者里的acks参数配合使用,当生产者acks=-1时,服务端的ISR列表里的所有副本都写入成功,才会给生产者返回成功的响应。

而min.insync.replicas这个参数就是控制ISR列表的,假设min.insync.replicas=1,这就意味着ISR列表里可以只有一个副本,这个副本就是leader replica,这个时候即使acks设置的是-1,但其实消息只发送到leader replica,以后就返回成功的响应了。

因为ISR只有一个副本,我们知道这种情况是有可能会丢数据的,所以min.insync.replicas这个值需要大于1的(如果ISR列表里面副本的个数小于min.insync.replicas,生产者发送消息是失败的),并且是min.insync.replicas <= replication.factor

1<min.insync.replicas

<=replication.factor

interval.messages=10000

当达到下面的时间(ms)时,执行一次强制的flush操作。interval.ms和interval.messages无论哪个达到,都会flush。默认3000ms
log.flush.interval.ms=1000

检查是否需要将日志flush的时间间隔
log.flush.scheduler.interval.ms = 3000

设置好消息重试机制

下面根据[11][12]

函数 作用 对应的设置[12]
cleanupExpiredSegments 负责清理过期的日志数据

log.retention.hours

log.retention.minutes

log.retention.ms

cleanupSegmentsToMaintainSize 负责清理超过指定容量的日志数据 log.retention.bytes

---------------------------------------------------------------------------------------------------------------------消费者------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

变量 推荐设置
enable.auto.commit false

Reference:

[1]kafka中的ISR、AR又代表什么?ISR伸缩又是什么?

[2]Kafka零数据丢失的配置方案

[3]Kafka丢失数据问题优化总结(需要后面再看下)

[4]一步步解决spring-kafka消息丢失(提了下spring版本和kafka驱动版本的匹配log.retention.bytes性)

[5]kafka消息会不会丢失?为什么?看了这个你就清楚了

[6]Kafka源码分析及图解原理之Broker端

[7]kafka消息丢失情况与解决方案

[8]面试官问:Kafka 会不会丢消息?怎么处理的?

[9]Kafka 消息丢失与消费精确一次性

[10]kafka如何防止数据丢失(从生产者/服务器/消费者角度)

[11]Kafka 异常丢失大量数据的解决方案

[12]Kafka清除数据日志详解

kafka丢数据问题方案(转载+整理+汇总)相关推荐

  1. Kafka丢数据、重复消费、顺序消费的问题

    面试官:今天我想问下,你觉得Kafka会丢数据吗? 候选者:嗯,使用Kafka时,有可能会有以下场景会丢消息 候选者:比如说,我们用Producer发消息至Broker的时候,就有可能会丢消息 候选者 ...

  2. 刨根问底: Kafka 到底会不会丢数据?

    阅读本文大约需要 30 分钟. 上一篇作为专题系列的第二篇,从演进的角度带你深度剖析了关于 Kafka 请求处理全流程以及超高并发的网络架构设计的实现细节,今天开启第三篇,我们来聊聊 Kafka 生产 ...

  3. 刨根问底:Kafka 到底会不会丢数据?

    那么 Kafka 到底会不会丢数据呢?如果丢数据,究竟该怎么解决呢? 只有掌握了这些, 我们才能处理好 Kafka 生产级的一些故障,从而更稳定地服务业务. 认真读完这篇文章,我相信你会对Kafka ...

  4. mysql数据库断电_MySQL 数据库忽然断电会丢数据吗转载

    在上一章,我讲解了 MySQL 锁的相关内容.主要谈到了全局锁.表锁.行锁以及死锁等.通过这些学习,相信我们可以理解锁的原理,并在工作中降低锁冲突的概率.这也是优化数据库必须掌握的知识点. 从本节开始 ...

  5. 大数据面试题及答案 汇总版

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/albg_boy/article/det ...

  6. udp怎么保证不丢包_在 Flink 算子中使用多线程如何保证不丢数据?

    分析痛点 笔者线上有一个 Flink 任务消费 Kafka 数据,将数据转换后,在 Flink 的 Sink 算子内部调用第三方 api 将数据上报到第三方的数据分析平台.这里使用批量同步 api,即 ...

  7. 树莓派 cuda加速_机器人梦系列-树莓派资源整理汇总

    链接地址:https://segmentfault.com/a/1190000021776077 (相关下载资源) 本文收集了树莓派使用过程中经常需要用到的资源,主要包括树莓派系统镜像.树莓派硬件介绍 ...

  8. 利用rfcomm实现树莓派与手机通信_树莓派资源整理汇总(2020年2月18日更新)

    本文收集了树莓派使用过程中经常需要用到的资源,主要包括树莓派系统镜像.树莓派硬件介绍.树莓派GPIO引脚编号.树莓派电路原理图下载.树莓派应用.树莓派工具等等,非常值得收藏. 一.快速上手 树莓派快速 ...

  9. 数据中心布线方法问答汇总

    [导读]本文为大家分享数据中心布线方法问答汇总,希望对大家有所帮助. 数据中心布线方法问答汇总1 1.问:关于跨长距离的网线施工问题,在单位遇到这种情况,办公大楼太宽,而internet接入点又在大楼 ...

最新文章

  1. java gstripe_通过Stripe Connect进行交易
  2. 全球及中国智能电网产业十四五规划方向及投资决策建议报告2021年版
  3. 2018年7月份,python上传自己的包库到pypi官网的方法
  4. 富士康工业互联:生产口罩优先用于内部防疫 预计对经营业绩影响较小
  5. 电脑太慢了最简单的办法怎么弄_电脑感染病毒的10种症状及简单处理办法 电脑中病毒的症状介绍...
  6. python turtle画简单树_大家用Python-turtle库作图画出过哪些漂亮的树哇 ?
  7. 8. jQuery 效果 - 动画
  8. R语言报错:Error in scan
  9. Python数据分析——matplotlib折线图和散点图
  10. C语言——设置flag的优点
  11. win7系统启动到一半停止_win7系统装到一半电脑死机怎么办
  12. 加州大学洛杉机分校计算机科学,加州大学洛杉矶分校计算机科学排名第14(2020年TFE美国排名)...
  13. Android帧动画分析
  14. Liunx 安装redis
  15. PDF - 使用 Adobe Acrobat 压缩 PDF 大小
  16. 51单片机——人体红外感应报警
  17. Python读取tsv文件
  18. 5G NR 系统消息
  19. 学生DW静态网页设计——html+css+javascript+jquery+bootstarp马尔代夫旅游响应式网站
  20. 【Arduino+ESP32专题】一起来读INA3221数据手册 1

热门文章

  1. 浅谈 Celery 分布式队列
  2. jQuery必知要点(一)
  3. Builder Pattern 在 Objective-C 中的使用
  4. 一款旅游型的在路上应用源码项目
  5. iOS使用NSMutableAttributedString实现富文本
  6. Android搜索框效果
  7. editor多功能文本框在有些计算机上不能正常加载,解决方法,本人用的是把js调用方法放到body/body后面)...
  8. Android中获取网络图片的三种方法
  9. 最新web 2.0 配色 (一)
  10. ECMAScript 新提案:JSON模块