2016-03-22 10 views
0

私は現在、嵐で新しいグループ化方法を測定しているため、スループットとレイテンシが最も重要ですが、各タプルのエンドツーエンドのレイテンシを測定する際にはいくつかの問題がありました。ストームで各タプルのエンドツーエンドレイテンシを測定するにはどうすればよいですか?

タプル内でタイムスタンプを入れ、トポロジのダウンストリームで受信したときのレイテンシを計算しようとしましたが、結果に負の数があります。

トポロジをクラスタモードで実行しているため、クラスタ内のマシン間で時間を正確に同期させることはできません(私はNTPを試しましたが、十分正確ではありません)。

ストーム自体は、各タプルのエンドツーエンドレイテンシを測定するための何らかの方法を提供していますか?または目的を達成するために使用できるトリックですか?

答えて

0

最後にこの問題を解決しました。

我々は我々自身の注ぎ口を実装し、IRichSpoutインタフェースを実装し、私たちのnextTuple()方法では、我々はタプルにユニークなIDが割り当てられ、ConcurrentHashMapにタイムスタンプを入れ、その後、

collector.emit(new Values(str), ID);

ようにすることによって、IDで発します

タプルにIDが割り当てられていることを嵐に認識させるため、ack(Object msgId)メソッドでは、キーをmsgIdに与えてハッシュマップの時刻をチェックし、現在の時刻と比較してこのタプルの待ち時間を得ました。

スパウト並列度を1に設定したので、問題をもう同期させることについて心配する必要はありません。

関連する問題