web-dev-qa-db-ja.com

Storm vs. Trident:Tridentを使用しない場合

Storm を使用していますが、多くのユースケースで問題ありません。最近、私は Trident を見ました。これはStormの高レベルの抽象化です。 exactly-once処理をサポートし、ステートフル処理を容易にします。

しかし今、私は疑問に思っています..なぜStormの代わりに常にTridentを使用できないのですか?

これまでに読んだこと:

  • Tridentはメッセージをバッチで処理するため、スループット時間が長くなる可能性があります。
  • トライデントは、トポロジ内のループをまだ処理できません。

Stormの代わりにTridentを使用する場合、他の欠点はありますか?今のところ、私が上に挙げた欠点はわずかだと思います。

トライデントでは実装できないユースケースは何ですか?


余波:

私が質問したので、私の会社はまずトライデントに行くことにしました。パフォーマンスに問題がある場合にのみ、純粋なStormを使用します。悲しいことに、これは積極的な決定ではなく、デフォルトの動作になりました(当時はそうではありませんでした)。

彼らの仮定は、ほとんどのユースケースで、状態または1回のみの処理が必要であるか、近い将来必要になるというものでした。 StormからTridentに移動したり戻したりするのは簡単な変換ではないので、私は彼らの推論を理解していますが、個人的な意見では、状態のないストリーム処理の概念はすべてに理解されておらず、それがTridentを使用する主な理由でした。

39

あなたの質問に答えるために:いつトライデントを使うべきではありませんか?あなたがする余裕がないときはいつでも。

TridentはStormトポロジに複雑さを追加し、パフォーマンスを低下させ、状態を生成します。質問を自問してください:Tridentの「1回だけ」の処理セマンティクスが必要ですか、それともStormの「少なくとも1回」の処理セマンティクスで生きることができますか。一度だけ、トライデントを使用し、そうでない場合は使用しないでください。

また、Stormがすべてのメッセージが処理されることを保証しているという事実も強調したいと思います。一部のメッセージは、複数回処理される場合があります。

44
John Gilmore

可能な限り最小のレイテンシが目標であり、1回だけ処理する必要がない場合、Stormの使用はTridentよりも優れています。

20
ChrisBlom

トライデントは、Twitter Stormの上でリアルタイムコンピューティングを行うための高レベルの抽象化であり、Storm 0.8.xで利用可能です。 Stormはステートレスストリーム処理フレームワークであり、Tridentはステートフルストリーム処理を提供します。

4
Do Do

クリス、これら2つはオープンソーステクノロジーであるため、トライデントは嵐の頂上にあるシナリオの唯一の実装として機能します。もちろん、これはパフォーマンスのオーバーヘッドをもたらしました。トライデントが要件を満たせなかった場合は、嵐の上に独自の状態実装を作成します。 Tridentは、Trident-MLなどの高レベルのプロジェクトをやがて生み出しました。

1

フィルター処理+タプルへのフィールドの追加を行いたいと仮定します。ストームを使用する場合、通常、フィルタリング、フィールドの追加に2つのボットを使用します。したがって、グローバルグループを使用して、タプルを新しいボルトに送信する必要があります。そのため、nw帯域幅がボトルネックになる可能性があります。

トライデントを使用すると、単一のマシンで上記のdoを使用できます。この場合、再グループ化は必要ありません。 「exactly once」/「at east once」に加えて、このようなユースケースは、使用するものなどを区別できます。

トライデントは一種のグループ化論理グループです

0
atul gupta