ReadableStreamChannel getReplicas(String blobId, RestResponseChannel restResponseChannel)
      throws RestServiceException {
    logger.trace("Getting replicas of blob ID - {}", blobId);
    long startTime = System.currentTimeMillis();
    ReadableStreamChannel channel = null;
    try {
      channel = FrontendUtils.serializeJsonToChannel(getReplicas(blobId));
      restResponseChannel.setHeader(RestUtils.Headers.CONTENT_TYPE, RestUtils.JSON_CONTENT_TYPE);
      restResponseChannel.setHeader(RestUtils.Headers.CONTENT_LENGTH, channel.getSize());
    } finally {
      metrics.getReplicasProcessingTimeInMs.update(System.currentTimeMillis() - startTime);
    }
    return channel;
  }
Handles {@link RestUtils.SubResource#Replicas} operations by obtaining the replicas of the blob ID from the cluster
map and returning a serialized JSON object in the response.
@param blobId the blob ID whose replicas are required.
@param restResponseChannel the {@link RestResponseChannel} to set headers in.
@return a {@link ReadableStreamChannel} that contains the getReplicas response.
@throws RestServiceException if there was any problem constructing the response.
ambry-frontend/src/main/java/com/github/ambry/frontend/GetReplicasHandler.java