kafka的 ack 应答机制
目录
一 ack 应答机制
二 ISR 集合
一 ack 应答机制
kafka 为用户提供了三种应答级别: all,leader,0
acks :0
这一操作提供了一个最低的延迟,partition的leader接收到消息还没有写入磁盘就已经返回ack,当leader故障时有可能丢失数据;
生产者发送完消息后不会等待到 broker 的任何确认消息,这种方式虽然效率提升但是它的可靠性大大降低;
acks:1(leader)
partition的leader落盘成功后返回ack,如果在follower同步成功之前leader故障,尽管 leader 已经落盘成功,但是 follower 的同步进度肯定是低于leader,这时故障,那么将会丢失 follower 还未同步 leader 那部分数据;
这种模式下,具有一定的可靠性和效率,但是依旧有丢失数据的可能性;

acks:-1(all)
partition的leader和follower全部落盘成功后才返回ack。但是如果在follower同步完成后,broker发送ack之前,leader发生故障,即选举出新的 leader,新的 leader 将再次落盘一次,那么会造成数据重复;
这种模式下,效率是最低的,但是数据可靠性则最高

java api 中相应参数
// 设置acksproperties.put(ProducerConfig.ACKS_CONFIG, "all");// 重试次数retries,默认是int最大值,2147483647properties.put(ProducerConfig.RETRIES_CONFIG, 3);
二 ISR 集合
ISR(in-sync replica) 就是 Kafka 为某个分区维护的一组同步集合,即每个分区都有自己的一个 ISR 集合,处于 ISR 集合中的副本,意味着 follower 副本与 leader 副本保持同步状态,只有处于 ISR 集合中的副本才有资格被选举为 leader。一条 Kafka 消息,只有被 ISR 中的副本都接收到,才被视为“已同步”状态。这跟 zk 的同步机制不一样,zk 只需要超过半数节点写入,就可被视为已写入成功。
想象如下场景
如果一个follower因为某种故障迟迟无法与leader 同步,那么如果选择 ack 为 all 的话,leader 要一直等待follower 同步完才发 ack 吗
显然不是,in-sync replica set (ISR),意为和leader保持同步的follower集合。当ISR中的follower完成数据的同步之后,leader就会给producer发送ack。如果follower长时间未向leader同步数据,则该follower将被踢出ISR,该时间阈值由replica.lag.time.max.ms参数设定。Leader发生故障之后,就会从ISR中选举新的leader。
被踢出 ISR 的 follower 在选举新的 leader 时不被考虑,待该follower恢复后,follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向leader进行同步。等该follower的LEO大于等于该Partition的HW,即follower追上leader之后,就可以重新加入ISR了。
同样的 leader 故障的话,会从ISR中选出一个新的leader,之后,为保证多个副本之间的数据一致性,其余的follower会先将各自的log文件高于HW的部分截掉,然后从新的leader同步数据。
LEO:指的是每个副本最大的offset;
HW:指的是消费者能见到的最大的offset,ISR队列中最小的LEO。

相关文章:
kafka的 ack 应答机制
目录 一 ack 应答机制 二 ISR 集合 一 ack 应答机制 kafka 为用户提供了三种应答级别: all,leader,0 acks :0 这一操作提供了一个最低的延迟,partition的leader接收到消息还没有写入磁盘就已经返回ack&#x…...
Django系列:Django开发环境配置与第一个Django项目
Django系列 Django开发环境配置与第一个Django项目 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1328…...
iPad协议/微信协议最新版
一、了解微信的协议 在开发微信协议之前,需要先了解微信的协议。微信的协议包括登录协议、消息传输协议、文件传输协议、数据同步协议等。其中,登录协议是最重要的协议之一,包括登录验证、登录认证等。消息传输协议则是微信最核心的功能之一…...
URL字符解码
将网页编码文字还原: 例如:https%3A%2F%2Fwww.example.com%2F%3Fparam%3Dvalue%26key%3D%E4%B8%AD%E6%96%87 解码: https: // www.example.com/?paramvalue&key中文 代码: char hexValue(char ch) {if (isdigit(ch)){re…...
uni-app进行表单效验
Uni-app内置了一些表单验证方法,可以帮助我们对表单进行有效的验证。以下是一些常用的验证方法: 非空验证: if(!this.formData.name){uni.showToast({title: 请输入姓名,icon: none});return false; }手机号码验证: const phon…...
IO流内容总结
IO流作用 对文件或者网络中的数据进行读写操作。 简单记:输入流读数据,输出流写数据。 Java的输出流主要以OutputStream和Writer作为基类,输入流主要是以InputStream和Reader作为基类。 按处理数据单元分类 字节流 字节输入流ÿ…...
MySQL的进阶篇1-MySQL的存储引擎简介
存储引擎 MySQL的体系结构 0、客户端连机器【java、Python、JDBC等】 1、【MySQL服务器-连接层】认证,授权,连接池 2、【MySQL服务器-服务层】 {SQL接口(DML、DDL、存储过程、触发器)、解析器、查询优化器、缓存} 3、【MySQL…...
九芯电子丨语音智能风扇,助您畅享智慧生活
回忆童年时期的传统机械风扇,那“古老”的扇叶连摆动看起来是那么吃力。在一个闷热的夏夜,风扇的噪音往往令人印象深刻。但在今天,静音家用风扇已取代了传统的机械风扇。与此同时,随着智能化的发展,智能家居已逐渐成为…...
2101. 引爆最多的炸弹;752. 打开转盘锁;1234. 替换子串得到平衡字符串
2101. 引爆最多的炸弹 核心思想:枚举BFS。枚举每个炸弹最多引爆多少个炸弹,对每个炸弹进行dfs,一个炸弹能否引爆另一个炸弹是两个炸弹的圆心距离在第一个炸弹的半径之内。 752. 打开转盘锁 核心思想:典型BFS,就像水源扩散一样&a…...
校园学习《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著
校园学习《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著...
UOS服务器操作系统搭建离线yum仓库
UOS服务器操作系统搭建离线yum仓库 1050e版本操作系统(适用ARM64和AMD64)1、挂载everything镜像并同步2、配置本地仓库3、配置nginx发布离线源 1050e版本操作系统(适用ARM64和AMD64) 首先需要有everything镜像文件 服务端操作流…...
C# 实现数独游戏
1.数独单元 public struct SudokuCell{public SudokuCell() : this(0, 0, 0){}public SudokuCell(int x, int y, int number){X x; Y y; Number number;}public int X { get; set; }public int Y { get; set; }public int Number { get; set; }} 2.数独创建 public class …...
vscode + conda+ ffmpeg + numpy 的安装方式
Windows 搭建 环境 遇到的错误点: 解决,使用conda init conda activate myenv usage: conda-script.py [-h] [–no-plugins] [-V] COMMAND … conda-script.py: error: argument COMMAND: invalid choice: ‘activate’ (choose from ‘clean’, ‘comp…...
Python Union联合类型注解
视频版教程 Python3零基础7天入门实战视频教程 我们看下如下的示例: my_list2: list[int] [1, 2, 3, 4] my_dict2: dict[str, float] {"python222": 3.14, "java1234": 4.35} l1 [1, "python222", True] # 如何注解多种元素类型…...
提高接口自动化测试效率:使用 JMESPath 实现断言和数据提取!
前言 做接口自动化,断言是比不可少的。如何快速巧妙的提取断言数据就成了关键,当然也可以提高用例的编写效率。笔者在工作中接触到了JMESPath,那到底该如何使用呢?带着疑惑一起往下看。 JMESPath是啥? JMESPath 是一…...
【Linux操作系统教程】用户管理与权限管理你真的懂了吗(三)
😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想…...
华为全联接大会2023 | 尚宇亮:携手启动O3社区发布
2023年9月20日,在华为全联接大会2023上,华为正式发布“联接全球服务工程师,聚合用户服务经验”的知识经验平台,以“Online 在线、Open 开放、Orchestration 协同”为理念,由华为、伙伴和客户携手,共同构建知…...
MySQL数据库查缺补漏——基础篇
MySQL数据库查缺补漏-基础篇 基础篇 net start mysql80[服务名] net stop mysql80 create database pshdhx default charset utf8mb4; 为什么不使用utf8?因为其字符占用三个字节,有四个字节的字符,所有需要设置为utf8mb4; 数值类型&…...
ESP8266 WiFi物联网智能插座—电能计量
目录 1、芯片功能 2、性能指标 3、寄存器说明 4、UART通信协议 4.1、写操作帧格式和时序 4.2、读操作帧格式和时序 4.3、读取全电参数数据包 4.4、配置波特率 4.5、UART保护机制 5、功能说明 5.1、电流电压瞬态波形计量 5.2、有功功率 5.3、有功功率防潜动 5.4、电能计量 5.5、…...
“智慧”北京,人工智能引领“新风尚”
原创 | 文 BFT机器人 北京时间,9月15日,北京人工智能产业峰会暨中关村科学城科创大赛颁奖典礼在北京中关村举行,同时惠阳还举行了“中关村人工智能大模型产业集聚区”启动建设的揭牌仪式。 此次大会围绕北京AI产业的建设与发展,各…...
省下PLC的钱!用海康VC3000工控机GPIO控制LED灯(C# WinForm实战)
海康VC3000工控机GPIO控制实战:低成本替代PLC的完整方案 在工业自动化领域,PLC(可编程逻辑控制器)长期以来都是控制系统的核心组件。但对于简单的指示灯控制、报警系统或小型继电器控制这类基础应用,动辄数千元的PLC模…...
青年教师评副高‘捷径’:这6本被低估的SSCI,认可度不输顶刊!
01 Academic Medicine期刊分区影响因子自引率年文章数教育学1区5.211.5%252篇投稿参考:美国医学院协会(AAMC)官方期刊,审稿周期 2–3 个月,录用率≈20%;可选非 OA 模式免版面费,适合具有实践转…...
深度解构:指纹浏览器底层隔离与Python高并发RPA,如何重塑电商矩阵自动化架构?
大家好,我是林焱,一名专注电商底层业务逻辑与 RPA 自动化架构定制的独立开发者。 在 CSDN 的各个技术板块中,关于爬虫与反爬虫、并发调度、以及客户端架构的讨论一直是热点。而将这些技术综合应用到极致的领域之一,就是当下极度内…...
UE4SS终极指南:5步掌握虚幻引擎游戏修改与脚本开发
UE4SS终极指南:5步掌握虚幻引擎游戏修改与脚本开发 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS …...
高性能PDF转SVG矢量转换架构解析:基于Poppler与Cairo的技术实现
高性能PDF转SVG矢量转换架构解析:基于Poppler与Cairo的技术实现 【免费下载链接】pdf2svg A simple PDF to SVG converter using the Poppler and Cairo libraries 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2svg 在数字化文档处理领域,PD…...
告别手动拖拽!用ENVI的Crosshairs和Cursor Value功能,精准搞定无坐标影像拼接
告别手动拖拽!用ENVI的Crosshairs和Cursor Value功能,精准搞定无坐标影像拼接 在遥感影像处理中,遇到没有地理参考信息的影像拼接任务时,很多用户的第一反应是手动拖拽对齐——这种看似直观的方法实际上效率低下且精度堪忧。想象一…...
Intel Wi-Fi 6 AX201网卡‘代码10’通病?华硕/戴尔/联想多品牌用户自救指南
Intel Wi-Fi 6 AX201网卡‘代码10’故障全解析与跨品牌解决方案 当你的笔记本突然无法连接Wi-Fi,设备管理器中那个带着黄色感叹号的Intel Wi-Fi 6 AX201网卡图标格外刺眼,显示着"该设备无法启动(代码10)"的提示——这不…...
别再死记硬背!用Python+OpenCV实战推导相机内外参与FOV公式(附代码)
用PythonOpenCV实战推导相机内外参与FOV公式:从代码中理解数学本质 在计算机视觉领域,相机参数的数学推导常常让开发者陷入公式记忆的困境。本文提供一种全新的学习路径——通过Python代码动态模拟相机成像过程,将抽象的数学公式转化为可交互…...
小熊猫Dev-C++:5分钟搞定C++开发环境的终极解决方案 [特殊字符]
小熊猫Dev-C:5分钟搞定C开发环境的终极解决方案 🚀 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 你是否曾为复杂的C开发环境配置而头疼?是否厌倦了臃肿的IDE占用大量系…...
【LangChain】 入门:从分步调用到链式编程
LangChain 入门:从分步调用到链式编程本文基于一段翻译助手的示例代码,讲解 LangChain 的核心概念、输出解析器的作用,以及普通写法与链式写法的对比。一、LangChain 是什么? 名字拆解缩写含义LangLanguage(语言&#…...
