一、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虞兮叹二(生产消息不丢失不重复)相关推荐

  1. kafka虞兮叹三(消息有序消费)

    两种方案: 方案一,kafka topic 只设置一个partition分区   方案二,producer将消息发送到指定partition分区 解析: 方案一:kafka默认保证同一个partiti ...

  2. Kafka高吞吐原理及如何保证不丢失不重复消费

    原文:Kafka如何保证不丢失不重复消费 - 知乎 一.如何保证百万级写入速度: 目录 1.页缓存技术 + 磁盘顺序写 2.零拷贝技术 3.最后的总结 "这篇文章来聊一下Kafka的一些架构 ...

  3. Kafka消息投递语义-消息不丢失,不重复,不丢不重

    转载:https://3gods.com/bigdata/Kafka-Message-Delivery-Semantics.html 介绍 kafka支持3种消息投递语义: At most once- ...

  4. rabbitmq如何保证消息不丢失_RabbitMQ的去重与防止消息的丢失

    Rabbitmq作为高并发的消息中间件,本文不在阐述基础概念.旨在分析与提供解决消息的丢失与重复的解决思路. RabbitMQ架构流程图 根据以上架构图,要明白消息走向的整个流程,生产者发送消息--& ...

  5. 解开Kafka神秘的面纱(二):Kafka的高效读写与消息安全

    文章目录 一.前言 二.Kafka消息队列 2.1 生产者生产kafka中的消息数据 2.1.1 生产者生产kafka中的消息数据 2.1.2 kafka生产者高效写盘 2.2 消费者消费kafka中 ...

  6. Kafka创建查看topic,生产消费指定topic消息

    启动zookeeper和Kafka之后,进入kafka目录(安装/启动kafka参考前面一章:https://www.cnblogs.com/cici20166/p/9425613.html) 1.创 ...

  7. kafka实现异步发送_Kafka 异步消息也会阻塞?记一次 Dubbo 频繁超时排查过程

    线上某服务 A 调用服务 B 接口完成一次交易,一次晚上的生产变更之后,系统监控发现服务 B 接口频繁超时,后续甚至返回线程池耗尽错误 Thread pool is EXHAUSTED.因为服务 B ...

  8. Kafka设计解析(二):Kafka High Availability (上)

    为什么80%的码农都做不了架构师?>>>    Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Par ...

  9. Kafka设计解析(二):Kafka High Availability (上)-转

    原文地址:http://www.infoq.com/cn/articles/kafka-analysis-part-2?utm_source=infoq&utm_campaign=user_p ...

最新文章

  1. 初学Oracle的笔记(2)——基础内容(实时更新中..)
  2. 单板计算机倍受欢迎 廉价的ARM计算机能干嘛
  3. c语言二元运算符大全,C语言运算符大全
  4. GetCursorPos/WindowFromPoint/SendMessage
  5. Feature Tools:可自动构造机器学习特征的Python库
  6. python 环境管理工具_再见 virtualenv!K神教你轻松管理多个Python环境
  7. CAD(计算机辅助设计)
  8. 问题三十:《Ray Tracing In One Weekend》封面图形生成
  9. Windows下Java环境配置
  10. ucgui 字体生成与字体个性化编辑
  11. AcrelEMS-IDC综合能效管理系统 XXX数据中心案例分享
  12. 计算机基础知识问卷,计算机基础知识情况问卷调查
  13. 【ACWing】671. DDD
  14. UI设计行业领域知识体系
  15. linux CPU降频脚本
  16. VS2010向工具箱中添加控件解决 Microsoft Communications Control,未能实例化 设计时授权
  17. MACD多周期共振系统TB源码
  18. 市面上免费的PDF编辑器都是假的,试试这一款真免费
  19. Qt之如何读取Excel表格数据
  20. 自动上传本地图片和word图片(word图片需使用从word粘贴功能)

热门文章

  1. All in One主机
  2. 解决intellij idea控制台中文乱码
  3. iphone没网4g不显示无服务器,突然发现iPhone没有4G网了,到底怎么回事? _手机资讯...
  4. 企业级时间轴插件Vue-timelinepick
  5. 1. 云停车 (开篇)
  6. 在Visual Basic 中使用C++ 类 (转)
  7. 深度学习笔记9:卷积层的实现(forward, backward 的实现)
  8. 从零开始学USB(十八、USB的class)
  9. innovus: 合并macro lef与antenna lef
  10. Spring初识(四)——AOP1