KafkaApi.handleFetchRequest
//拉取数据
replicaManager.fetchMessages
// 从本地的磁盘里面去读取日志信息
val logReadResults = readFromLocalLog
def readFromLocalLog(fetchOnlyFromLeader: Boolean,
readOnlyCommitted: Boolean,
fetchMaxBytes: Int,
hardMaxBytesLimit: Boolean,
readPartitionInfo: Seq[(TopicAndPartition, PartitionFetchInfo)],
quota: ReplicaQuota): Seq[(TopicAndPartition, LogReadResult)] = {
//一个分区一个分区去读取的
readPartitionInfo.foreach {
case (tp, fetchInfo) =>
//TODO 调用read方法
val readResult = read(tp, fetchInfo, limitBytes, minOneMessage)
val messageSetSize = readResult.info.messageSet.sizeInBytes
// Once we read from a non-empty partition, we stop ignoring request and partition level size limits
if (messageSetSize > 0)
minOneMessage = false
kafka 副本同步-Leader处理fetch请求
最新推荐文章于 2024-07-21 15:48:25 发布