实时风暴用户界面:执行和进程延迟之间的区别

btqmn9zl  于 2021-06-24  发布在  Storm
关注(0)|答案(2)|浏览(409)

我一直在试图为我当前的项目记录所有风暴指标的意义。
在这个过程中,我收集了来自这组响应以及github的数据。
虽然有些指标是不言自明的,但我确实对一些bolt指标感到困惑。
例如,进程延迟和执行延迟之间有什么区别?
从这个谷歌群组的帖子中,我收集了以下信息:
list item processing latency=调用ack时的时间戳-传递execute元组时的时间戳
list item execute latency=timestamp when execute function ends-timestamp when execute is passed tuple(源:http://goo.gl/3kral)

list item process latency是在确认元组之前的时间,execute latency是元组执行过程中花费的时间(源:http://goo.gl/m0ftc)
根据我在StormUI中看到的情况,我的执行延迟几乎总是大于进程延迟。怎么可能呢?有人能帮我准确定义两种延迟吗?
提前谢谢!

zvokhttg

zvokhttg1#

根据您的定义,执行延迟应该总是大于进程延迟,因为ack在execute方法中被调用,abhijeet也提到过。
如果您注意到一个主要的差异,那么在确认元组之后,您可能有一些代码。

soat7uwm

soat7uwm2#

ack在执行器的execute函数中被调用,或者简而言之,在bolt的execute方法结束之前被调用。因此,执行延迟更大。这个片段将使事情变得更清楚(原样取自此处):

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

我希望这有帮助。

相关问题