kafka延时队列内部应用简介
kafka延时队列_悠然予夏的博客-CSDN博客
两个follower副本都已经拉取到了leader副本的最新位置,此时又向leader副本发送拉取请求,而leader副本并没有新的消息写入,那么此时leader副本该如何处理呢?可以直接返回空的拉取结果给follower副本,不过在leader副本一直没有新消息写入的情况下,follower副本会一直发送拉取请求,并且总收到空的拉取结果,消耗资源。

Kafka在处理拉取请求时,会先读取一次日志文件,如果收集不到足够多(fetchMinBytes,由参数fetch.min.bytes配置,默认值为1)的消息,那么就会创建一个延时拉取操作(DelayedFetch)以等待拉取到足够数量的消息。当延时拉取操作执行时,会再读取一次日志文件,然后将拉取结果返回给follower副本。
延迟操作不只是拉取消息时的特有操作,在Kafka中有多种延时操作,比如延时数据删除、延时生产等。
对于延时生产(消息)而言,如果在使用生产者客户端发送消息的时候将acks参数设置为-1,那么就意味着需要等待ISR集合中的所有副本都确认收到消息之后才能正确地收到响应的结果,或者捕获超时异常。

假设某个分区有3个副本:leader、follower1和follower2,它们都在分区的ISR集合中。不考虑ISR变动的情况,Kafka在收到客户端的生产请求后,将消息3和消息4写入leader副本的本地日志文件。
由于客户端设置了acks为-1,那么需要等到follower1和follower2两个副本都收到消息3和消息4后才能告知客户端正确地接收了所发送的消息。如果在一定的时间内,follower1副本或follower2副本没能够完全拉取到消息3和消息4,那么就需要返回超时异常给客户端。生产请求的超时时间由参数request.timeout.ms配置,默认值为30000,即30s。

那么这里等待消息3和消息4写入follower1副本和follower2副本,并返回相应的响应结果给客户端的动作是由谁来执行的呢?在将消息写入leader副本的本地日志文件之后,Kafka会创建一个延时的生产操作(DelayedProduce),用来处理消息正常写入所有副本或超时的情况,以返回相应的响应结果给客户端。
延时操作需要延时返回响应的结果,首先它必须有一个超时时间(delayMs),如果在这个超时时间内没有完成既定的任务,那么就需要强制完成以返回响应结果给客户端。其次,延时操作不同于定时操作,定时操作是指在特定时间之后执行的操作,而延时操作可以在所设定的超时时间之前完成,所以延时操作能够支持外部事件的触发。
就延时生产操作而言,它的外部事件是所要写入消息的某个分区的HW(高水位)发生增长。也就是说,随着follower副本不断地与leader副本进行消息同步,进而促使HW进一步增长,HW每增长一次都会检测是否能够完成此次延时生产操作,如果可以就执行以此返回响应结果给客户端;如果在超时时间内始终无法完成,则强制执行。
延时拉取操作,是由超时触发或外部事件触发而被执行的。超时触发很好理解,就是等到超时时间之后触发第二次读取日志文件的操作。外部事件触发就稍复杂了一些,因为拉取请求不单单由follower副本发起,也可以由消费者客户端发起,两种情况所对应的外部事件也是不同的。如果是follower副本的延时拉取,它的外部事件就是消息追加到了leader副本的本地日志文件中;如果是消费者客户端的延时拉取,它的外部事件可以简单地理解为HW的增长。
kafka使用时间轮实现延时队列:TimeWheel。size,每个单元格的时间,每个单元格都代表一个时间,size*每个单元格的时间就是一个周期。
相关文章:
kafka延时队列内部应用简介
kafka延时队列_悠然予夏的博客-CSDN博客 两个follower副本都已经拉取到了leader副本的最新位置,此时又向leader副本发送拉取请求,而leader副本并没有新的消息写入,那么此时leader副本该如何处理呢?可以直接返回空的拉取结…...
【网络】HTTPHTTPS协议
文章目录 HTTP协议认识URLurlencode和urldecodeHTTP协议格式HTTP请求协议格式简单的小实验 HTTP响应协议格式关于封装解包分用 HTTP的方法关于GET和POST方法概念GET&POST对比(代码测试)测试POST和GET方法的区别 HTTP的状态码关于重定向的状态码临时重定向的代码演示: HTTP的…...
因子图优化
最大后验概率估计问题 我们常将状态估计问题建模为最大后验估计(MAP)。之所以命名为最大后验估计,是因为它在给定了观测 Z \bm Z Z的情况下,最大化状态 X \bm X X的后验概率密度 p ( X ∣ Z ) p(\bm X|\bm Z) p(X∣Z) X M A P …...
JVM 垃圾回收相关算法
垃圾标记阶段 对象存活判断: 在堆里存放着几乎所有的 Java 对象实例,在GC 执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为已经死亡的对象,GC 才会在执行垃圾回收时,释放掉…...
[Bing Chat] 以某某这个数据结构 编一个故事 要求不能说出某某这个数据结构
以二叉搜索树这个数据结构 编一个故事 要求不能说出二叉搜索树这个数据结构 好的,我试试。这是我编的一个故事,希望你喜欢: 有一天,小明要去参加一个数学竞赛,他需要在有限的时间内回答很多问题。他发现,有…...
【算法】【算法杂谈】一种字符串和数字的对应关系
目录 前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本 思考感悟写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介…...
Java并发基础理论
Java并发基础理论 进程与线程 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因为进程是动态的。系统运行一个程序就是一个进程从创建运行到消亡的过程。 我们启动main方法其实就是启动了一个JVM进程,而main方法所在的线…...
ubuntu22.04静态ip设置(桥接模式、only-host+NAT模式)
在创建一台虚拟机后,默认的方式往往是通过DHCP动态的进行分配,DHCP服务器会告知创建的虚拟机分配到的ip地址,网关地址等信息。所以在创建好虚拟机之后,这些信息都不需要我们来配置,我们直接用就好了。 但是࿰…...
深度模型中的正则化、梯度裁剪、偏置初始化操作
最近调试代码,发现怎么调试都不行,就想着用一些优化方式,然后又不是很清楚这些优化方式的具体细节,然后就学习了一下,这里记录下来,方便以后查阅。 深度模型中的正则化、梯度裁剪、偏置初始化操作 正则化常…...
设计模式之装饰模式
定义 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 模式特点 (1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对…...
华为OD机试真题 Java 实现【最佳对手】【2023Q1 200分】
一、题目描述 游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实力相差太大,对于双方游戏体验都不会太好。 给定 n 个队伍的实力值,对其进行两两实力匹配,两支队伍实例差距在允许的最大差距 d内,则可以匹配。 要求在匹配队伍最多的情况下匹配出的各组…...
IOS证书制作教程
IOS证书制作教程 点击苹果证书 按钮 点击新增 输入证书密码,名称 这个密码不是账号密码,而是一个保护证书的密码,是p12文件的密码,此密码设置后没有其他地方可以找到,忘记了只能删除证书重新制作,所以请务…...
【人工智能】蚁群算法(密恐勿入)
蚁群算法(密恐勿入) 蚁群算法--给你一个感性认识 蚁群算法(密恐勿入)1. 算法简介1.1 基本原理1.1.1 模拟蚂蚁在简单地形,寻找食物1.1.2 模拟蚂蚁在复杂地形,找到食物1.2 算法应用 2. 算法解析3.算法应用——…...
VONR排查指导分享
不能注册或呼叫到SIP服务器端30秒挂断呼叫的黄金法则咬线或摘机状态单通或无语音收到400 bad request收到413,513 Request Entity Too Large或Message Too Large消息收到408, 480或者487 消息483 - Too Many Hops488 – Not Acceptable Here语音质量和思…...
Daftart.ai:人工智能专辑封面生成器
前言 Daft Art AI是一款使用人工智能技术来帮助您制作专辑封面的软件,它可以让您在几分钟内,用简单的编辑器和精选的美学风格,为您的专辑或歌曲创建出惊艳的高质量的艺术品。Daft Art AI有以下几个特点:简单易用:您只…...
ZigBee案例笔记 - 定时器
文章目录 1.片内外设I/O2.定时器简介3.定时器1寄存器4.定时器1操作自由运行模式模模式正计数/倒计数模式 5.16位计数器定时器1控制LED 示例 6.定时器3概述自由运行模式倒计数模式模模式正/倒计数模式 7.定时器3寄存器定时器3控制LED闪烁 1.片内外设I/O 定时器这样的片内外设也…...
GE H201TI 全系统自检和自诊断
Hydran 201Ti是一个小型在线预警发射器。它永久安装在变压器上,将为工作人员提供各种故障气体复合值的单一ppm读数,以提醒他们潜在的问题。 可以下载该值,并且可以将警报设置在预定水平,以提醒人员并能够监控发展中的故障状况。 …...
这个屏幕录制太好用了!
哈喽,大家好!今天给各位小伙伴测试了一屏幕录制的小工具——ApowerREC。它是一款专业同步录制屏幕画面及声音的录屏软件。界面简洁,操作简单,支持实时编辑屏幕录像、创建计划任务、录制摄像头高清视频等功能。废话不多说ÿ…...
初识redis【redis的安装使用与卸载】
一.redis的概念 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。在redis官网中对redis的描述是这样的&#…...
接口测试总结及其用例设计方法整理,希望可以帮到你
目录 接口测试的总结文档 第一部分: 第二部分: 接口测试用例设计 接口测试的总结文档 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系。但该部分只交代了怎么做…...
YOLOv8蒸馏终极实战:v8x→v8n精度仅降1.5%,速度翻6倍,工业部署首选
一、引言 做工业部署的朋友一定都懂这种痛:YOLOv8x在测试集上mAP能到98%,但部署到Jetson Nano上只有5FPS,根本满足不了产线节拍;换成YOLOv8n,速度能到30FPS,但mAP直接掉到89%,漏检率超标。剪枝…...
从汽车ECU通信看CAN协议:位填充与错误帧如何保障行车安全与网络稳定
从汽车ECU通信看CAN协议:位填充与错误帧如何保障行车安全与网络稳定 现代汽车电子系统正变得越来越复杂,一辆普通家用轿车可能包含超过100个电子控制单元(ECU),这些ECU通过控制器局域网(CAN)总线…...
【读书笔记】《释放想象》
《释放想象》解读 作者:马克辛格林(Maxine Greene) 解读人:林晓英(北京大学教育学院)引言:一本写于1995年的预言之书 2018年,一篇题为《这块屏幕可能改变命运》的文章刷遍朋友圈&…...
软考架构设计师论文 —— 论面向服务架构设计及其应用(5) —— 涉及知识点之Seata(2)
接前一篇文章:软考架构设计师论文 —— 论面向服务架构设计及其应用(4) —— 涉及知识点之Seata(1) 本文内容参考: Seata 是什么? | Apache Seata Seata分布式事务 (理论与部署相结合)-腾讯云开发者社区-腾讯云 特此致谢! 3. Seata架构 Seata事务管理中有三个重要的…...
Qwen1.5-1.8B GPTQ模型解析:深入LSTM与Transformer在序列建模中的异同
Qwen1.5-1.8B GPTQ模型解析:深入LSTM与Transformer在序列建模中的异同 最近在和朋友聊起AI模型的发展时,他问了一个挺有意思的问题:“现在大家都在说Transformer,那以前很火的LSTM是不是就完全没用了?” 这个问题让我…...
MusePublic大模型与ChatGPT对比评测:技术架构与应用场景
MusePublic大模型与ChatGPT对比评测:技术架构与应用场景 1. 为什么需要这场对比? 最近在调试几个内容生成任务时,我同时调用了MusePublic和ChatGPT,结果发现它们的反应节奏、输出风格甚至错误处理方式都挺不一样。不是谁“更好”…...
告别ELK的臃肿!用Spring Boot + Loki + Grafana 5分钟搞定轻量级日志可视化(Windows保姆级教程)
轻量级日志监控革命:Spring Boot与LokiGrafana的高效实践 在当今微服务架构盛行的时代,日志管理已成为开发者日常工作中不可或缺的一环。传统方案如ELK(ElasticsearchLogstashKibana)虽然功能强大,但其复杂的配置流程和…...
SAP MD01报错MD251排查指南:如何解决平行MRP目的地配置问题
1. 遇到MD251报错时先别慌 第一次在SAP系统里看到MD251报错时,我也是一头雾水。屏幕上那句"请检查平行MRP的目的地"看起来简单,但背后的问题可能比你想象的复杂。这个报错通常发生在你把生产环境(PRD)的数据拷贝到测试(QAS)或开发(DEV)环境后&…...
chandra OCR日志分析:错误模式识别与改进
Chandra OCR日志分析:错误模式识别与改进 如果你正在用Chandra OCR处理文档,可能会遇到一些“小脾气”——比如识别结果里表格乱了、公式错了,或者干脆漏掉了一段文字。别担心,这些问题不是你的错,而是模型在特定场景…...
Kandinsky-5.0-I2V-Lite-5s部署案例:高校AI课程实验平台——学生自助生成动态作业
Kandinsky-5.0-I2V-Lite-5s部署案例:高校AI课程实验平台——学生自助生成动态作业 1. 项目背景与需求 在高校AI课程教学中,如何让学生直观理解图生视频技术一直是个挑战。传统实验往往局限于理论讲解和简单演示,学生缺乏动手实践机会。Kand…...
