Kafka值follow同步原理1

  假设某个分区有 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
那么这里等待消息 3 和消息 4 写入 followerl 副本和 follower2 副本,井返回相应的响应结
果给客户端的动作是由谁来执行的呢?在将消息写入 leader 副本的本地日志文件之后, Kafka
会创建一个延时的生产操作( DelayedProduce ),用来处理消息正常写入所有副本或超时的情况,
返回相应的响应结果给客户端。

下面是延时生产流程

  

posted on 2020-11-30 15:18  MaXianZhe  阅读(244)  评论(0编辑  收藏  举报

导航