kafka服务端之延时操纵实现原理

诗林  论坛元老 | 2025-4-15 20:48:43 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1336|帖子 1336|积分 4008

背景

上篇我们说到了kafka时间轮是延时操纵内部实现的紧张数据结构,这篇我们来说下kafka内部的延时操纵实现原理。这里我们以延时生产延时拉取为例阐明延时操纵的实现原理。
案例

延时生产

我们知道如果在使用生产者客户端发送消息的时候将acks参数设置为-1,那么就意味着需要等待ISR集合中的所有副本都确认收到消息之后才能正确地收到相应的效果,大概捕捉超时非常。
如图1、图2和图3所示,假设某个分区有3个副本:leader、follower1和follower2,它们都在分区的ISR集合中。为了简化阐明,这里我们不思量ISR集合伸缩的情况。Kafka在收到客户端的生产请求(ProduceRequest)后,将消息3和消息4写入leader副本的本地日志文件。由于客户端设置了acks为-1,那么需要等到follower1和follower2两个副本都收到消息3和消息4后才能告知客户端正确地吸取了所发送的消息。如果在一定的时间内,follower1副本或follower2副本没可以或许完全拉取到消息3和消息4,那么就需要返回超时非常给客户端。生产请求的超时时间由参数request.timeout.ms配置,默认值为30000,即30s。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表