kafka虞兮叹二(生产消息不丢失不重复)
一、producer生产消息不丢失
ack应答机制:只要设置acks=all(-1),那么数据就不会丢失!
acks:
0:producer不等待broker的ack,这一操作提供了一个最低的延迟,broker一接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据;
1:producer等待broker的ack,partition的leader落盘成功后返回ack,如果在follower同步成功之前leader故障,那么将会丢失数据;
-1(all):producer等待broker的ack,partition的leader和follower全部落盘成功后才返回ack。但是如果在follower同步完成后,broker发送ack之前,leader发生故障,那么会造成数据重复。
二、producer生产消息不重复(发送幂等性)
0.11 版本的 Kafka,引入了一项重大特性:幂等性。所谓的幂等性就是指 Producer 不论向 Server 发送多少次重复数据,Server 端都只会持久化一条。
要启用幂等性,只需要将 Producer 的参数中 enable.idompotence 设置为 true 即可。
Kafka的幂等性实现其实就是将原来下游需要做的去重放在了数据上游。开启幂等性的 Producer 在初始化的时候会被分配一个 PID,发往同一 Partition 的消息会附带 Sequence Number。而Broker 端会对<PID, Partition, SeqNumber>做缓存,当具有相同主键的消息提交时,Broker 只会持久化一条。
- enable.idompotence=enable
- pid - partition - seqnumber 相等的两条数据被视为同一条数据(pid是producer_id)
Sequence Numbler:(对于每个PID,该Producer发送数据的每个<Topic, Partition> 都对应一个从0开始单调递增的Sequence Number。
Broker端在缓存中保存了这seq number,对于接收的每条消息,如果其序号大于Broker 缓存中序号则接受它,否则将其丢弃。这样就可以避免消息重复提交了。
kafka虞兮叹二(生产消息不丢失不重复)相关推荐
- kafka虞兮叹三(消息有序消费)
两种方案: 方案一,kafka topic 只设置一个partition分区 方案二,producer将消息发送到指定partition分区 解析: 方案一:kafka默认保证同一个partiti ...
- Kafka高吞吐原理及如何保证不丢失不重复消费
原文:Kafka如何保证不丢失不重复消费 - 知乎 一.如何保证百万级写入速度: 目录 1.页缓存技术 + 磁盘顺序写 2.零拷贝技术 3.最后的总结 "这篇文章来聊一下Kafka的一些架构 ...
- Kafka消息投递语义-消息不丢失,不重复,不丢不重
转载:https://3gods.com/bigdata/Kafka-Message-Delivery-Semantics.html 介绍 kafka支持3种消息投递语义: At most once- ...
- rabbitmq如何保证消息不丢失_RabbitMQ的去重与防止消息的丢失
Rabbitmq作为高并发的消息中间件,本文不在阐述基础概念.旨在分析与提供解决消息的丢失与重复的解决思路. RabbitMQ架构流程图 根据以上架构图,要明白消息走向的整个流程,生产者发送消息--& ...
- 解开Kafka神秘的面纱(二):Kafka的高效读写与消息安全
文章目录 一.前言 二.Kafka消息队列 2.1 生产者生产kafka中的消息数据 2.1.1 生产者生产kafka中的消息数据 2.1.2 kafka生产者高效写盘 2.2 消费者消费kafka中 ...
- Kafka创建查看topic,生产消费指定topic消息
启动zookeeper和Kafka之后,进入kafka目录(安装/启动kafka参考前面一章:https://www.cnblogs.com/cici20166/p/9425613.html) 1.创 ...
- kafka实现异步发送_Kafka 异步消息也会阻塞?记一次 Dubbo 频繁超时排查过程
线上某服务 A 调用服务 B 接口完成一次交易,一次晚上的生产变更之后,系统监控发现服务 B 接口频繁超时,后续甚至返回线程池耗尽错误 Thread pool is EXHAUSTED.因为服务 B ...
- Kafka设计解析(二):Kafka High Availability (上)
为什么80%的码农都做不了架构师?>>> Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Par ...
- Kafka设计解析(二):Kafka High Availability (上)-转
原文地址:http://www.infoq.com/cn/articles/kafka-analysis-part-2?utm_source=infoq&utm_campaign=user_p ...
最新文章
- 初学Oracle的笔记(2)——基础内容(实时更新中..)
- 单板计算机倍受欢迎 廉价的ARM计算机能干嘛
- c语言二元运算符大全,C语言运算符大全
- GetCursorPos/WindowFromPoint/SendMessage
- Feature Tools:可自动构造机器学习特征的Python库
- python 环境管理工具_再见 virtualenv!K神教你轻松管理多个Python环境
- CAD(计算机辅助设计)
- 问题三十:《Ray Tracing In One Weekend》封面图形生成
- Windows下Java环境配置
- ucgui 字体生成与字体个性化编辑
- AcrelEMS-IDC综合能效管理系统 XXX数据中心案例分享
- 计算机基础知识问卷,计算机基础知识情况问卷调查
- 【ACWing】671. DDD
- UI设计行业领域知识体系
- linux CPU降频脚本
- VS2010向工具箱中添加控件解决 Microsoft Communications Control,未能实例化 设计时授权
- MACD多周期共振系统TB源码
- 市面上免费的PDF编辑器都是假的,试试这一款真免费
- Qt之如何读取Excel表格数据
- 自动上传本地图片和word图片(word图片需使用从word粘贴功能)
热门文章
- All in One主机
- 解决intellij idea控制台中文乱码
- iphone没网4g不显示无服务器,突然发现iPhone没有4G网了,到底怎么回事? _手机资讯...
- 企业级时间轴插件Vue-timelinepick
- 1. 云停车 (开篇)
- 在Visual Basic 中使用C++ 类 (转)
- 深度学习笔记9:卷积层的实现(forward, backward 的实现)
- 从零开始学USB(十八、USB的class)
- innovus: 合并macro lef与antenna lef
- Spring初识(四)——AOP1