2013-05-08 60 views
13

我一直在嘗試爲當前項目記錄所有Storm指標的含義。Storm UI:執行和進程延遲之間的區別

在這個過程中,我收集了來自這個小組的回覆以及github的數據。

儘管一些指標非常明顯,但我對某些螺栓指標非常困惑。

例如,Process Latency和Execute Latency之間有什麼區別?

從我收集的以下信息,這個谷歌組帖子:

  • 列表項的處理時延=時間戳當ACK被稱爲 - 時間戳執行時傳遞的元組

  • 列表項在執行函數結束時執行latency = timestamp - 執行通過元組時執行timestamp(源:http://goo.gl/3KRAl

  • 列表項處理延遲時間,直到元組ACKED,執行等待時間是花費在執行了一個元組的時間(來源:http://goo.gl/m0fTC

基於我所看到的在我的風暴UI,我的Execute Latency幾乎總是比Process Latency大。那怎麼可能? 任何人都可以幫我準確定義兩個延遲?

在此先感謝!

+0

對不起,我是新來的風暴和混淆我提交的拓撲後得到的數字。應該一直執行大於進程延遲的延遲?正如我在一些螺栓維卡相反。 – user1 2016-03-13 13:57:06

回答

5

在執行程序的執行函數中調用Ack或者在堅果殼中執行方法結束之前調用Ack。所以,執行延遲更多。這個片段將事情說清楚(從here視爲是):

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

我希望這有助於。

0

根據您的定義,執行延遲應該始終大於進程延遲,因爲ack在執行方法中被稱爲Abhijeet也提到。

如果你注意到一個主要的區別,那麼你可能有一些代碼後acking一個元組。