Kafka 副本管理模块(二):ReplicaFetcherThread

ReplicaFetcherThread是AbstractFetcherThread的子类,实现了对应的函数,它的定义如下:

class ReplicaFetcherThread(name: String, // 线程名称
                           // 单台 Broker 上,允许存在多个 ReplicaFetcherThread 线程。Broker 端参数 num.replica.fetchers,决定了 Kafka 到底创建多少个 Follower 拉取线程。
                           fetcherId: Int, // Follower 拉取的线程 Id,也就是线程的编号
                           sourceBroker: BrokerEndPoint, // 数据源Broker地址,即分区的leader是在哪个节点
                           brokerConfig: KafkaConfig, // 它封装了 Broker 端所有的参数信息。同样地,ReplicaFetcherThread 类也是通过它来获取 Broker 端指定参数的值。
                           failedPartitions: FailedPartitions, // 处理过程中出现失败的分区
                           replicaMgr: ReplicaManager, // 副本管理器。该线程类通过副本管理器来获取分区对象、副本对象以及它们下面的日志对象。
                           metrics: Metrics,
                           time: Time,
                           quota: ReplicaQuota, // 用做限流。用作 Follower 副本拉取速度控制
                           leaderEndpointBlockingSend: Option[BlockingSend] = None // 这是用于实现同步发送请求的类。
                           // 所谓的同步发送,是指该线程使用它给指定 Broker 发送请求,然后线程处于阻塞状态,直到接收到 Broker 返回的 Response。
                          )
  extends AbstractFetcherThread(name = name,
                                clientId = name,
                                sourceBroker = sourceBroker,
                                failedPartitions,
                                fetchBackOffMs = brokerConfig.replicaFetchBackoffMs,
                                isInterruptible = false) {
  // 副本Id就是副本所在Broker的Id
  private val replicaId = brokerConfig.brokerId
  private val logContext = new LogContext(s"[ReplicaFetcher replicaId=$replicaId, leaderId=${sourceBroker.id}, " +
    s"fetcher
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值