kafka是如何处理数据乱序问题的?

embedded/2024/11/14 11:54:25/

1.数据有序

生产者发送的数据,单分区内可以做到有序,多分区无法保证,除非把多个分区的数据拉取到消费端,进行排序,但是这样做效率很低,不如直接设置一个分区

2.数据乱序

1)kafka在1.x版本之前保证数据单分区有序,条件如下:

        max.in.flight.requests.per.connection=1(不需要考虑是否开启幂等性)

2)kafka在1.x及以后版本保证数据单分区有序,条件如下:

        1.开启幂等性

        max.in.flight.requests.per.connection需要设置小于等于5。

        2.未开启幂等性

        max.in.flight.requests.per.connection需要设置为1。

        原因:因为在kafka1.x之后,启用幂等性后,kafka服务端会缓存producer发来的最近5个request的元数据,所以无论如何都会保证最近5个request的数据是有序的。

出现乱序的原因:

出现乱序的原因:

1)生产者在发送3请求的时候,发生异常,发生异常需要重新发送,所以排在了后面,在进行落盘的时候,先落盘1,2 ,落盘3的时候发现是4,需要等,等到3出现为止,然后将 3,4 ,5排序,排序后再进行落盘。

顺序错乱了,会自动排序(开启幂等性)。


http://www.ppmy.cn/embedded/137487.html

相关文章

Unity3D实现视频和模型融合效果

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示如下👉二、VideoPlayer播放视频(一)👉2-1、Hieraechy面板右键创建videoPlayer👉2-2、Assets面板右键创建RenderTexture👉2-3、把设置好的RenderTexture拖到videoPlayer里面还有本地视频视频�…

重构代码之取消临时字段

在代码重构中,临时字段是一种常见的反模式。临时字段指的是一个类的字段在部分方法中会被赋值或使用,但在其他很多方法中却未被使用,导致代码的维护性和可读性变差。这种设计往往表明字段的存在是偶然的或局部的,而非类的真正属性…

DOM NodeList 探索

DOM NodeList 探索 引言 在Web开发中,文档对象模型(DOM)是核心概念之一。DOM提供了一种以树形结构表示HTML或XML文档的方法,允许开发者通过JavaScript等脚本语言操作文档的结构、样式和内容。在DOM中,NodeList是一个重要的接口,它表示一个节点的集合,通常是由查询DOM树…

JavaScript字符串常用方法

在JavaScript中,字符串是用来表示文本数据的基本数据类型。字符串可以用单引号()、双引号(")、或反引号()包裹。JavaScript中的字符串是不可变的,也就是说,字符串的值一旦创建就无法更改,但可以创建新字符串来替换原有字符串…

[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent

040_缩进几个字符好_输出所有键盘字符_indent 缩进几个字符好? 上次 研究了range函数 根据range函数的结果生成了for循环 可以输出 从start到end - 1所有的数字 想要 循环输出 必须得缩进吗? for num in range(ord(A), ord(Z)1):print(num,chr(num)) 不…

【Webpack配置全解析】打造你的专属构建流程️(4)

webpack 提供的 CLI 支持很多参数,例如 --mode,但更多的时候,我们会使用更加灵活的配置文件来控制 webpack 的行为。默认情况下,webpack 会读取 webpack.config.js 文件作为配置文件,但也可以通过 CLI 参数 --config 来…

POI实现根据PPTX模板渲染PPT

目录 1、前言 2、了解pptx文件结构 3、POI组件 3.1、引入依赖 3.2、常见的类 3.3、实现原理 3.4、关键代码片段 3.4.1、获取ppt实例 3.4.2、获取每页幻灯片 3.4.3、循环遍历幻灯片处理 3.4.3.1、文本 3.4.3.2、饼图 3.4.3.3、柱状图 3.4.3.4、表格 3.4.3.5、本地…

初阶C++之C++入门基础

大家好!欢迎来到C篇学习,这篇文章的内容不会很难,为c的引入,c的重点内容将在第二篇的文章中讲解,届时难度会陡然上升,请做好准备! 我们先看网络上的一个梗:21天内⾃学精通C 好了&am…