Подтвердить что ты не робот

Storm UI: разница между Execute и Process Latencies

Я пытался документировать значение всех показателей Storm для моего текущего проекта.

Во время этого процесса я собрал данные из этих групповых ответов, а также github.

В то время как некоторые из показателей довольно понятны, я действительно запутался в некоторых показателях болтов.

Например, в чем разница между задержкой процесса и задержкой выполнения?

Из сообщений в этой группе Google я собрал следующую информацию:

  • Задержка обработки списка элементов = отметка времени при вызове ack - отметка времени при выполнении передается кортеж

  • Элемент списка выполняет latency = timestamp при завершении функции выполнения - отметка времени при передаче переданного кортежа (источник: http://goo.gl/3KRAl)

и

  • Элемент списка Задержка процесса - это время до тех пор, пока не будет добавлен кортеж, выполнение задержки будет потрачено на выполнение для кортежа (источник: http://goo.gl/m0fTC)

Основываясь на том, что я вижу в моем личном интерфейсе, мой Execute Latency почти всегда больше, чем задержка процесса. Как это могло быть?  Может ли кто-нибудь помочь мне с точным определением обеих задержек?

Спасибо заранее!

4b9b3361

Ответ 1

Ack вызывается в функции выполнения исполнителя или в двух словах будет вызываться до завершения метода завершения болта. Таким образом, латентность выполнения больше. Этот фрагмент сделает все ясно (взято из здесь как есть):

public void execute(Tuple tuple) {
  String sentence = tuple.getString(0);
  for(String word: sentence.split(" ")) {
    _collector.emit(tuple, new Values(word));
  }
  _collector.ack(tuple);
}

Надеюсь, это поможет.

Ответ 2

В соответствии с вашим определением задержка Execute всегда должна быть больше, чем задержка процесса, поскольку ack вызывается внутри метода execute, как упоминал Abhijeet.

Если вы заметили существенную разницу, то, вероятно, у вас есть код после того, как вы подберете кортеж.