Apache-storm-distributed-messaging-system

提供:Dev Guides
移動先:案内検索

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

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

分散メッセージングシステムとは

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

ほとんどのメッセージングパターンは、 publish-subscribe モデル(単純に Pub-Sub )に従います。メッセージの送信者は publishers 、メッセージを受信したい人は subscribers と呼ばれます。

メッセージが送信者によって公開されると、サブスクライバーはフィルターオプションを使用して、選択したメッセージを受信できます。 通常、2種類のフィルタリングがあります。1つは*トピックベースのフィルタリング*で、もう1つは*コンテンツベースのフィルタリング*です。

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

メッセージングシステム

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

Distributed messaging system Description
Apache Kafka Kafka was developed at LinkedIn corporation and later it became a sub-project of Apache. Apache Kafka is based on brokerenabled, persistent, distributed publish-subscribe model. Kafka is fast, scalable, and highly efficient.
RabbitMQ RabbitMQ is an open source distributed robust messaging application. It is easy to use and runs on all platforms.
JMS(Java Message Service) JMS is an open source API that supports creating, reading, and sending messages from one application to another. It provides guaranteed message delivery and follows publish-subscribe model.
ActiveMQ ActiveMQ messaging system is an open source API of JMS.
ZeroMQ ZeroMQ is broker-less peer-peer message processing. It provides push-pull, router-dealer message patterns.
Kestrel Kestrel is a fast, reliable, and simple distributed message queue.

スリフトプロトコル

Thriftは、クロスランゲージサービス開発とリモートプロシージャコール(RPC)のためにFacebookで構築されました。 その後、オープンソースのApacheプロジェクトになりました。 Apache Thriftは Interface Definition Language であり、定義されたデータ型の上に簡単に新しいデータ型とサービス実装を定義できます。

Apache Thriftは、組み込みシステム、モバイルアプリケーション、Webアプリケーション、および他の多くのプログラミング言語をサポートする通信フレームワークでもあります。 Apache Thriftに関連する重要な機能のいくつかは、そのモジュール性、柔軟性、および高いパフォーマンスです。 さらに、分散アプリケーションでストリーミング、メッセージング、およびRPCを実行できます。

Stormは、内部通信とデータ定義にThriftプロトコルを広く使用しています。 Stormトポロジは、単純に Thrift Structs です。 Apache Stormでトポロジを実行するStorm Nimbusは* Thriftサービス*です。