数据不丢失

1)从生产端:acks = -1,(ack应答机制)从生产端到节点端,当所有isr集合里的节点备份完毕后返回成功;

2)从节点端:每个partition至少需要一个isr节点(同步)存活保证数据安全

3)从消费端:关闭自动提交,使用手动提交。

数据不重复消费

1)生产端

生产者幂等性实现:PID和Sequence Number

为了实现Producer的幂等性,Kafka引入了Producer ID(即PID)和Sequence Number。 PID:每个新的Producer在初始化的时候会被分配一个唯一的PID,这个PID对用户是 不可见的。

Sequence Numbler:对于每个PID,该Producer发送数据的每个<Topic, Partition> 都对应一个从0开始单调递增的Sequence Number。

Broker端在缓存中保存了这seq number,对于接收的每条消息,如果其序号大于Broker 缓存中序号则接受它,否则将其丢弃。这样就可以避免消息重复提交了。

但是,只能保证单个Producer对于同一个<Topic, Partition>的Exactly Once语义。不能保证同一个Producer一个topic不同的partion幂等。

2)消费端

消费者幂等处理

1.将消息的offset存在消费者应用中或者第三方存储的地方,可以将这个数据存放在redis或者是内存中,消费消息时,如果有这条数据的话,就不会去做后续操作

2.数据落库的时候,根据主键去过滤

在落库时,如果不存在这条数据,则去新增,如果存在则去修改,如果不能幂等处理,则将consumer的提交方式设置为同步提交,是最大程度地保证一致性的方法,缺点是性能会降低很多。

传递一次。将 offset 作为唯一 id 与消息同时处理,并且保证处理的原子性。消息只会处理一次,不丢失也不会重复。但这种方式很难做到。

kafka 默认的模式是 at least once ,但这种模式可能会产生重复消费的问题,所以在业务逻辑必须做幂等设计。

使用 exactly Once + 幂等操作,可以保证数据不重复,不丢失。

Kafka(十一) 如何保证数据的不重复和不丢失相关推荐

  1. Kafka 是如何保证数据可靠性和一致性

    学过大数据的同学应该都知道 Kafka,它是分布式消息订阅系统,有非常好的横向扩展性,可实时存储海量数据,是流数据处理中间件的事实标准.本文将介绍 Kafka 是如何保证数据可靠性和一致性的. 数据可 ...

  2. rocketmq怎么保证数据不会重复_rocketmq如何保证消息不丢失

    一.大体可以从三方面来说: 分别从Producer发送机制.Broker的持久化机制,以及消费者的offSet机制来最大程度保证消息不易丢失 从Producer的视角来看:如果消息未能正确的存储在MQ ...

  3. rocketmq怎么保证数据不会重复_RocketMQ保证信息有序性和防止重复

    分布式开放消息系统(RocketMQ)的原理与实践 分布式消息系统做为实现分布式系统可扩展.可伸缩性的关键组件,须要具备高吞吐量.高可用等特色.而谈到消息系统的设计,就回避不了两个问题:java 消息 ...

  4. kafka 中如何保证数据消息不丢失

    背景 前几天,去两家公司面试,面试的过程中, 两家公司的面试官都给我提了如标题这样的一个问题.因为之前对kafka有一些了解,但是没有对这个的问题做过总结,现场就凭着记忆的进行了回答,面试官也表示这个 ...

  5. rocketmq怎么保证数据不会重复_阿里架构师亲授:Kafka和RocketMQ的消息复制实现的差异点在哪?...

    众所周知,消息队列在收发两端,主要是依靠业务代码,配合请求确认的机制,来保证消息不会丢失的.而在服务端,一般采用持久化和复制的方式来保证不丢消息. 把消息复制到多个节点上,不仅可以解决丢消息的问题,还 ...

  6. 【消息队列】kafka是如何保证消息不被重复消费的

    一.kafka自带的消费机制 kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offs ...

  7. mysql 索引不重复的值,【锁】在数据库无法使用唯一索引时如何保证数据的不重复?...

    前言 之前数据库的用户表的用户名.手机号码.邮箱都是设置了唯一索引,因此不需要考虑重复的问题.然而,由于手机号码和邮箱都可以为 null,而太多的 null 会影响索引的稳定性,因此去掉唯一索引并将默 ...

  8. 2021年大数据Kafka(八):Kafka如何保证数据不丢失

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka如何保证数据不丢失 一.如何保证生产者数据不丢失 ...

  9. Spark Streaming使用Kafka保证数据零丢失

    为什么80%的码农都做不了架构师?>>>    源文件放在github,随着理解的深入,不断更新,如有谬误之处,欢迎指正.原文链接https://github.com/jacksu/ ...

最新文章

  1. 郑宇、沈抖领衔共话 AI 业界应用挑战 | IJCAI 2019
  2. 开源工具高效分析Java应用
  3. OpenCASCADE:使用 XDE 文档
  4. 前端全栈大佬是如何使用javaScript实现一个焦点图
  5. 专业修复数据库修复软件不能修复的数据库
  6. 树莓派百度语音识别+图灵机器人对话聊天机器人
  7. python程序写完怎么保存_python程序如何进行保存
  8. Ubuntu下载Linux源码 编译Linux源码
  9. MSF利用pcshare控住目标主机
  10. NMOS与PMOS的区分及使用
  11. 【Android Studio】在Mac中更换JDK Location
  12. springboot中怎么进行统一日志处理?
  13. 【阿里云原生架构】二、云原生架构的原则和模式
  14. 前端学习周报(第三周)
  15. word文档内容联动
  16. 小说视频图片站群采集工具程序源码
  17. 麦当劳大学: 标准化执行的66个细节
  18. java double 后缀_Java double数据类型
  19. php彩蛋是什么,php彩蛋
  20. apicloud记录代码

热门文章

  1. nginx-反向代理服务器
  2. SD卡的控制方法与时序
  3. java名言英文_十句与咖啡有关的人生格言,中英文双版本
  4. 织梦dedecms调用上一篇下一篇以及样式修改
  5. [有明信息]横向集成、纵向贯通 ——地产财务管理新思路
  6. Selenium web自动化测试
  7. vue实现屏保小球弹弹弹
  8. sass/scss语法@mixin
  9. 开发中的“通盘可以无妙手”
  10. 数据中台-数仓分层思想