美文网首页
【HDFS】一个RPC的生命周期,从服务端接收到响应的各个阶段的

【HDFS】一个RPC的生命周期,从服务端接收到响应的各个阶段的

作者: 大数据Zone | 来源:发表于2023-02-04 20:53 被阅读0次

注:本文参考的hadoop版本是:3.3.2

RPC生命周期

在ProcessingDetails.Timing枚举类里:

  /**
   * The different stages to track the time of.
   */
  public enum Timing {
    // reader线程把Call放入call queue的时间
    ENQUEUE,          // time for reader to insert in call queue.
    // Call在call queue里等待处理的时间
    QUEUE,            // time in the call queue.
    // handler线程的一些消耗(不在处理/响应的时间)
    HANDLER,          // handler overhead not spent in processing/response.
    // handler花在处理call上的时间:等于lock free + lock wait + lock shared + lock exclusive的时间
    PROCESSING,       // time handler spent processing the call. always equal to
                      // lock_free + lock_wait + lock_shared + lock_exclusive
    LOCKFREE,         // processing with no lock.
    LOCKWAIT,         // processing while waiting for lock.
    LOCKSHARED,       // processing with a read lock.
    LOCKEXCLUSIVE,    // processing with a write lock.
    // encode和发送相应的时间。
    RESPONSE;         // time to encode and send response.
  }

TODO:画一幅图,标注出每个阶段。

Handler的run方法内部,每次执行完一个call#run方法之后,finally块里会调用updateMetrics进行RPC相关指标的统计。

1、ENQUEUE

这个阶段是reader将请求插入到call queue里的时间。

internalQueueCall方法:

  private void internalQueueCall(Call call, boolean blocking)
      throws IOException, InterruptedException {
    try {
      // queue the call, may be blocked if blocking is true.
      if (blocking) {
        callQueue.put(call);
      } else {
        callQueue.add(call);
      }
      // 这个delta就是ENQUEUE的时间,因此我们要看call.timestampNanos是什么?
      long deltaNanos = Time.monotonicNowNanos() - call.timestampNanos;
      call.getProcessingDetails().set(Timing.ENQUEUE, deltaNanos,
          TimeUnit.NANOSECONDS);
    } catch (CallQueueOverflowException cqe) {
      // If rpc scheduler indicates back off based on performance degradation
      // such as response time or rpc queue is full, we will ask the client
      // to back off by throwing RetriableException. Whether the client will
      // honor RetriableException and retry depends the client and its policy.
      // For example, IPC clients using FailoverOnNetworkExceptionRetry handle
      // RetriableException.
      rpcMetrics.incrClientBackoff();
      // unwrap retriable exception.
      throw cqe.getCause();
    }
  }

timestampNanos是这个rpc call被接收时的时间。

全文请参考链接:
https://blog.csdn.net/yexiguafu/article/details/128850802

相关文章

  • 【HDFS】一个RPC的生命周期,从服务端接收到响应的各个阶段的

    注:本文参考的hadoop版本是:3.3.2 RPC生命周期 在ProcessingDetails.Timing枚...

  • 三,性能测试指标定义

    **请求响应时间(RT) **:从客户端发起一个请求开始,到客户端接收到从服务器返回的响应,整个过程所耗费的时间 ...

  • 性能测试指标

    交易响应时间# 1. 定义及解释 ​ 响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结...

  • 【精】彻底熟悉Hadoop RPC框架

    学习HDFS绕不开的一个重要的知识点就是Hadoop RPC框架。但是能将RPC框架从客户端->服务端,再从服务端...

  • 性能的一些指标定义

    1,事务:从客户端发起一个或多个请求(这些请求组成一个完整的操作)到客户端接收到从服务器返回的响应。 2,TPS:...

  • 性能指标的定义

    事务:从客户端发起的一个或多个请求(这些请求组成一个完整的操作),到客户端接收到从服务器返回的响应 TPS(Tra...

  • 初步理解HTTP协议中的请求与响应

    1、什么是请求? 客户端向服务端发出一个消息,来请求做某件事情 2、什么是响应? 服务端接收到客户端的请求消息,并...

  • Go context

    Go context 在RPC或者Web服务中,当Server端接受一个request的时候,都会开启一个额外的g...

  • Activity生命周期(二)

    在各个生命周期,各个阶段应该做的事情。 activity的生命周期的7个生命周期函数 一个activity的生命周...

  • Android RPC

    前言 RPC是一个请求响应模型,客户端发起请求,服务器返回响应。 JSON-RPC是一个无状态且轻量级的远程过程调...

网友评论

      本文标题:【HDFS】一个RPC的生命周期,从服务端接收到响应的各个阶段的

      本文链接:https://www.haomeiwen.com/subject/htzohdtx.html