5

私のStormトポロジでは、ストリームを処理している間、いくつかのメッセージの処理を将来のある時点まで遅らせたいと考えています。これを行うための合理的なオプションは何ですか?

これまでのところ、次のことを考えてきました。

  • Java のThread.sleep. (ただし、いくつかの議論に基づいて、これは Storm のリソースを効率的に利用するための推奨される方法ではありません。)
  • 遅延キューを使用...
  • Storm には、私が見落としたメッセージを遅らせるための API がありますか?
  • ZeroMQ は、Storm (変更された場合) が利用できる遅延メッセージング API を提供しますか?
4

2 に答える 2

5

保留中のタプルを一括で処理するために、トポロジ ティック タプルを使用しています。基本的に、すべての通常のタプルでそれらをメモリに保存し、ティックタプルを受け取ると、バルク/パイプライン処理を使用してそれらをストレージ/インデックス作成に処理します。

また、ボリュームに大きなスパイクがある場合に redis を使用します。ボリュームのスパイクが検出された場合、すべてのタプルが各ホストのローカル redis ストレージにリダイレクトされ、ボリュームがダウンした後にトポロジ処理にプッシュバックされます。私たちの状況はあなたの状況には当てはまらないかもしれません。私の 2c だけです。

于 2013-05-16T19:10:55.803 に答える
2

外部メッセージ キューを使用して、時間遅延キューを実装します。

Storm はフォールト トレラントであり、水平方向に分散されているため、次のようなそのスタイルに適合するメッセージ キューを選択することは理にかなっています。

  • カフカ
  • アマゾン SQS
  • RabbitMQ
于 2013-07-10T05:31:48.603 に答える