Kafka(十一) 如何保证数据的不重复和不丢失
数据不丢失
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(十一) 如何保证数据的不重复和不丢失相关推荐
- Kafka 是如何保证数据可靠性和一致性
学过大数据的同学应该都知道 Kafka,它是分布式消息订阅系统,有非常好的横向扩展性,可实时存储海量数据,是流数据处理中间件的事实标准.本文将介绍 Kafka 是如何保证数据可靠性和一致性的. 数据可 ...
- rocketmq怎么保证数据不会重复_rocketmq如何保证消息不丢失
一.大体可以从三方面来说: 分别从Producer发送机制.Broker的持久化机制,以及消费者的offSet机制来最大程度保证消息不易丢失 从Producer的视角来看:如果消息未能正确的存储在MQ ...
- rocketmq怎么保证数据不会重复_RocketMQ保证信息有序性和防止重复
分布式开放消息系统(RocketMQ)的原理与实践 分布式消息系统做为实现分布式系统可扩展.可伸缩性的关键组件,须要具备高吞吐量.高可用等特色.而谈到消息系统的设计,就回避不了两个问题:java 消息 ...
- kafka 中如何保证数据消息不丢失
背景 前几天,去两家公司面试,面试的过程中, 两家公司的面试官都给我提了如标题这样的一个问题.因为之前对kafka有一些了解,但是没有对这个的问题做过总结,现场就凭着记忆的进行了回答,面试官也表示这个 ...
- rocketmq怎么保证数据不会重复_阿里架构师亲授:Kafka和RocketMQ的消息复制实现的差异点在哪?...
众所周知,消息队列在收发两端,主要是依靠业务代码,配合请求确认的机制,来保证消息不会丢失的.而在服务端,一般采用持久化和复制的方式来保证不丢消息. 把消息复制到多个节点上,不仅可以解决丢消息的问题,还 ...
- 【消息队列】kafka是如何保证消息不被重复消费的
一.kafka自带的消费机制 kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offs ...
- mysql 索引不重复的值,【锁】在数据库无法使用唯一索引时如何保证数据的不重复?...
前言 之前数据库的用户表的用户名.手机号码.邮箱都是设置了唯一索引,因此不需要考虑重复的问题.然而,由于手机号码和邮箱都可以为 null,而太多的 null 会影响索引的稳定性,因此去掉唯一索引并将默 ...
- 2021年大数据Kafka(八):Kafka如何保证数据不丢失
全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka如何保证数据不丢失 一.如何保证生产者数据不丢失 ...
- Spark Streaming使用Kafka保证数据零丢失
为什么80%的码农都做不了架构师?>>> 源文件放在github,随着理解的深入,不断更新,如有谬误之处,欢迎指正.原文链接https://github.com/jacksu/ ...
最新文章
- 郑宇、沈抖领衔共话 AI 业界应用挑战 | IJCAI 2019
- 开源工具高效分析Java应用
- OpenCASCADE:使用 XDE 文档
- 前端全栈大佬是如何使用javaScript实现一个焦点图
- 专业修复数据库修复软件不能修复的数据库
- 树莓派百度语音识别+图灵机器人对话聊天机器人
- python程序写完怎么保存_python程序如何进行保存
- Ubuntu下载Linux源码 编译Linux源码
- MSF利用pcshare控住目标主机
- NMOS与PMOS的区分及使用
- 【Android Studio】在Mac中更换JDK Location
- springboot中怎么进行统一日志处理?
- 【阿里云原生架构】二、云原生架构的原则和模式
- 前端学习周报(第三周)
- word文档内容联动
- 小说视频图片站群采集工具程序源码
- 麦当劳大学: 标准化执行的66个细节
- java double 后缀_Java double数据类型
- php彩蛋是什么,php彩蛋
- apicloud记录代码