Apache Storm 分散メッセージング システム


Apache Storm はリアルタイム データを処理し、通常、入力はメッセージ キュー システムから取得されます。外部の分散メッセージング システムは、リアルタイム計算に必要な入力を提供します。 Spout はメッセージング システムからデータを読み取り、タプルに変換して Apache Storm にフィードします。興味深いことに、Apache Storm は、ニンバスとスーパーバイザー間の通信に独自の分散メッセージング システムを内部で使用しています。

分散メッセージング システムとは何ですか?

分散メッセージングは​​、信頼性の高いメッセージ キューの概念に基づいています。メッセージは、クライアント アプリケーションとメッセージング システムの間で非同期的にキューに入れられます。分散メッセージング システムには、信頼性、拡張性、耐久性という利点があります。

ほとんどのメッセージング パターンは、パブリッシュ-サブスクライブ モデル (パブリッシュ-サブスクライブと呼ばれます) に従い、メッセージの送信者は パブリッシャー#と呼ばれます。 ##、そしてメッセージを受け取りたい人は subscribers と呼ばれます。

メッセージが送信者によって公開されると、購読者はフィルタリング オプションを使用して選択されたメッセージを受信できます。通常、フィルタリングには 2 種類あり、1 つは

トピック ベースのフィルタリング 、もう 1 つは コンテンツ ベースのフィルタリング です。

pub-sub モデルはメッセージを通じてのみ通信できることに注意してください。これは非常に疎結合なアーキテクチャであり、送信者でさえ購読者が誰であるか知りません。多くのメッセージング パターンにより、メッセージ ブローカーはパブリッシュされたメッセージを交換して、多くのサブスクライバーがタイムリーにアクセスできるようになります。実際の例としては、スポーツ、映画、音楽などのさまざまなチャンネルを公開する Dish TV があります。誰でも自分のチャンネル セットに登録し、利用可能な場合はチャンネルを取得できます。

#次の表では、一般的な高スループット メッセージング システムのいくつかについて説明します - messaging_system.jpg


分散メッセージング システムApache KafkaRabbitMQJMS (Java Message Service)ActiveMQZeroMQKestrel

Thrift プロトコル

Thrift は、言語を超えたサービス開発とリモート プロシージャ コール (RPC) のために Facebook 上に構築されています。その後、オープンソースの Apache プロジェクトになりました。 Apache Thrift は、定義されたデータ型に基づいて新しいデータ型とサービス実装を簡単な方法で定義できるようにするインターフェイス定義言語です。 Apache Thrift は、組み込みシステム、モバイル アプリケーション、Web アプリケーション、その他多くのプログラミング言語をサポートする通信フレームワークでもあります。 Apache Thrift に関連する主要な機能には、そのモジュール性、柔軟性、および高いパフォーマンスがあります。さらに、分散アプリケーションでストリーミング、メッセージング、RPC を実行できます。

Storm は、内部通信とデータ定義に Thrift プロトコルを広範囲に使用しています。ストーム トポロジは単なる

Thrift Structs

です。 Storm Nimbus は、Apache Storm でトポロジを実行する Thrift サービスです。

説明
Kafka は LinkedIn で開発され、後に Apache のサブプロジェクトになりました。 Apache Kafka は、ブローカー対応で耐久性のある分散パブリッシュ/サブスクライブ モデルに基づいています。 Kafka は高速でスケーラブルで効率的です。
RabbitMQ は、オープンソースの分散型堅牢メッセージング アプリケーションです。使いやすく、すべてのプラットフォームで実行できます。
JMS は、あるアプリケーションから別のアプリケーションへのメッセージの作成、読み取り、送信をサポートするオープン ソース API です。保証されたメッセージングを提供し、パブリッシュ/サブスクライブ モデルに従います。
ActiveMQ メッセージング システムは、JMS 用のオープン ソース API です。
ZeroMQ は、エージェントレスのピア メッセージ処理です。プッシュプル、ルーター/リセラーのメッセージング モードを提供します。
Kestrel は、高速で信頼性が高く、シンプルな分散メッセージ キューです。