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