kafkaBroker管理之follower的fetch请求处理流程
2021-12-28 10:21:00 0 举报
kafkaBroker管理之follower的fetch请求处理流程
作者其他创作
大纲/内容
空消息及leader HW=1
follower的fetch请求带上offset=0
更新Follower HW=0
消息及leader HW=0
向log文件写消息(没有数据可以写)
读取到的log数据(其实没有数据),加上leader HW,一起发给follower副本
更新Follower LEO+1
follower的fetch请求带上offset=1
leader partition
broker1
broker0
读取底层log数据(其实没有数据)
follower partition
font color=\"#0000ff\
follower的offset比leader的offset多1
follower的fetch请求处理流程
问题:Follower间隔多久做一次fetch?
读取到的log数据,加上leader HW,一起发给follower副本
在考虑fetch请求时,需要考虑两种情况1.producer暂时无法响应follower partition的请求,如没有数据可以返回,这时fetch请求会缓存在一个叫做purgatory的对象里(请求不会无限期缓存,默认500ms)。在缓存期间,如果producer发送PRODUCE请求,则被唤醒,接下来会正常处理fetch请求。2.producer正常响应follower partition的请求。注意:font color=\"#ff0000\
读取底层log数据
使用HW来记录消息在副本中提交或备份的进度,其实是存在缺陷的,在kafka 0.11.0.0后的版本中,使用leader epoch解决
向log文件写消息
更新Follower LEO依然+1)
0 条评论
下一页