[ https://issues.apache.org/jira/browse/KAFKA-745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13572229#comment-13572229 ]
Sriram Subramanian commented on KAFKA-745: ------------------------------------------ Took a look at this. The main issue is that we seem to be tracking a bunch of metrics per request type and they all end up being tracked in the network layer. This has really made the network layer ugly. These metrics are really of two types Network level metrics and Request level metrics. 1. Metrics that can be tracked at the network level are those that do not have any large difference based on the request type. For example, queueTime is a metric that is supposed to be the amount of time a request spends in the request queue. Tracking this for each request type does not really make sense. This is a network level property and should be tracked at that level. 2. Metrics that can be tracked at the request level have a large difference based on the request type. For example, local time is the amount of time the KafkaApi handle method takes to complete. This largely depends on the request type and should be tracked at the request level. To summarize, with the decoupling specified above we have the following metrics at the two levels Network metrics ----------------------- // time a request spent in a request queue val queueTimeHist = newHistogram(name + "-QueueTimeMs") // time to send the response to the requester from the response queue val responseSendTimeHist = newHistogram(name + "-ResponseSendTimeMs") // total time taken for the request to be served val totalTimeHist = newHistogram(name + "-TotalTimeMs") Request metrics ------------------------ // request rate by type val requestRate = newMeter(name + "-RequestsPerSec", "requests", TimeUnit.SECONDS) // time a request takes to be processed at the local broker val localTimeHist = newHistogram(name + "-LocalTimeMs") // time a request takes to wait on remote brokers (only relevant to fetch and produce requests) val remoteTimeHist = newHistogram(name + "-RemoteTimeMs") With the separation specified above, any request can be defined as queueTime + localTime + remoteTime + responseSendTime = totalTime We can totally remove any kafkaapi dependency in the network layer with the proposed separation. > Remove getShutdownReceive() and other kafka specific code from the > RequestChannel > --------------------------------------------------------------------------------- > > Key: KAFKA-745 > URL: https://issues.apache.org/jira/browse/KAFKA-745 > Project: Kafka > Issue Type: Bug > Components: network > Affects Versions: 0.8 > Reporter: Neha Narkhede > Assignee: Sriram Subramanian > Priority: Critical > > Jay's suggestion from KAFKA-736 is to get rid of getShutdownReceive() and > kafka request specific code from the generic requestchannel -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira