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 ),用来处理消息正常写入所有副本或超时的情况,
以返回相应的响应结果给客户端。
下面是延时生产流程