序章


クローズドソースのアプリケーションとは対照的に、オープンソースアプリケーションは無料で比較的高速であり、強力な開発サイクルとすぐに利用できるコミュニティサポートが組み合わされています。 これにより、長期的な選択を行う場合、多くの開発者、製品マネージャー、および一般ユーザーにとって非常に強力な代替手段になります。

コミュニティで開発されたアプリケーションに成功をもたらす重要な要素の1つ(つまり、 多くの人が1つ以上の相互作用プロジェクトに取り組んでいること)は、継続的な開発の過程で一般的に合意されています。アプリケーションを使用可能にするのは、ほとんどの場合、互いに話し、一緒に作業する能力です。

このDigitalOceanの記事では、何か新しいことを試し、開発者(およびその他の関心のある人)が Advanced Message QueuingProtocolに完全に慣れるように支援します。 これはオープンな[技術]標準(共通の基盤)であり、異なるプロセス、アプリケーション、または通信する必要のある無関係のシステム間でメッセージを仲介するミドルウェアとして機能するように調整されたアプリケーションの開発を可能にするように設計されています。お互いにメッセージを渡します。

技術基準とオープンスタンダードとは何ですか?


技術基準


技術基準は、規則、規範、定義などで構成されています。 アプリケーションおよびそれらに電力を供給する他の技術システムの開発と使用のため。 それらは、理論的なフレームワークとして機能する、明確に定義されたメソッドとプロセスで構成されています。

オープンスタンダード


技術システムの分野では、オープンスタンダードとは、アプリケーションの実装と開発に適合させて使用できる命令(ロイヤリティフリー)です。 それらを開発している組織に応じて、オープンスタンダードは「オープンプロセス」を通じて「オープンボディ」によって作成および維持されます。

オープンシステム相互接続とは何ですか?


オープンシステム相互接続(OSI)は、1970年代に開発されたISO(国際標準化機構)標準であり、さまざまなネットワーク、つまりそれらを介して通信するコンピューターシステムが連携する方法を「均質化」します。

この規格はフレームワークで構成されています(つまり 開発の基盤)7つの連続する層で通信プロトコルを実装するために作成されました:

  1. 物理層-物理層を形成します(つまり、 ハードウェア)OSIが機能するためのベース。

  2. データリンク層-ネットワーク[ノード]間でデータを転送します。

  3. ネットワーク層-トラフィックを転送します(つまり、 転送)場所間。

  4. トランスポート層-信頼性、データフローを確保するために機能します(つまり、 レート)制御とそのストリーム。

  5. セッション層-アプリケーション間のセッションの管理を担当します。

  6. プレゼンテーション(構文)レイヤー-処理するデータの形成と提示に取り組んでいます。

  7. アプリケーション層-コミュニケーションのための共通の基盤の設定と確保-アプリケーションへの到達-。 (ここにAMQPがあります!)

アプリケーション層とは何ですか?


AMQPが存在するアプリケーション層は、オープンシステム相互接続標準を形成する上記の要素の1つです。 詳細に説明すると、アプリケーション層は、ユーザーが対話する[唯一の]層であり、プロセス間(またはアプリケーションからアプリケーション)の通信がどのように行われるかを定義する層と考えることができます。

AMQP以外のアプリケーション層の[一般的な]例は次のとおりです。

  • IRC
  • DNS
  • FTP
  • IMAP
  • SSH
  • もっと。

通信プロトコルとは何ですか?


各通信プロトコルは、異なるアプリケーション間で話される共有言語を形成するように明確に定義されたルールと規制で構成されており、最終的には、元々どのように機能するように設定されていても通信できるようになります。

これらのプロトコルには、データ形式、プロトコルを使用するパーティの定義、ルーティング、フロー(レート)制御などの要素があります。

Advanced Message Queuing Protocolとは何ですか?


Advanced Message Queuing Protocol(AMQP)は、クライアントとブローカー間の相互運用性を実現します(つまり、 メッセージングミドルウェア)。 その作成の目標は、内部設計に関係なく、さまざまなアプリケーションとシステムが連携して、エンタープライズメッセージングを産業規模で標準化できるようにすることでした。

AMQPには、ネットワーキングが行われる方法とメッセージブローカーアプリケーションが機能する方法の両方の定義が含まれています。 これは、次の仕様を意味します。

  • メッセージブローカーを使用したメッセージのルーティングと保存の操作、および関連するコンポーネントの動作を定義する一連のルール

  • そして、上記の操作を実行するクライアントとブローカー間の通信がどのように機能するかを実装するためのワイヤープロトコル

AMQPの作成と使用の理由


AMQPの前は、さまざまなベンダーによって作成および設定されたさまざまなメッセージブローカリングおよび転送アプリケーションがありました。 しかし、彼らには1つの大きな問題があり、それは相互運用性の欠如でした。 ある人が別の人と協力する方法はありませんでした。 さまざまなプロトコルを使用してさまざまなシステムを機能させるために使用できる唯一の方法は、メッセージングブリッジと呼ばれるメッセージを変換するための追加のレイヤーを導入することでした。 これらのシステムは、通常のクライアントのようにメッセージを受信できるように個々のアダプターを使用して、複数の異なるメッセージングシステムを接続するために使用されます(例: WebSphere MQおよび別の)。

AMQPは、上で説明したように明確に定義されたルールと指示を提供することにより、すべてのメッセージキューイングおよびブローカリングアプリケーションが機能して相互運用するために使用できる共通の基盤を作成します。

AMQPユースケースとは何ですか?


アプリケーションとプロセス間で高品質で安全なメッセージ配信が必要な場合はいつでも、メッセージブローカリングソリューションを実装するAMQPの使用を検討できます。

AMQPは


  • メッセージ配信の信頼性

  • メッセージの迅速かつ確実な配信

  • メッセージの確認

これらの機能により、


  • 更新の監視とグローバル共有

  • 異なるシステムを接続して相互に通信する

  • サーバーが即時の要求に迅速に応答し、後の処理のために時間のかかるタスクを委任できるようにする

  • 消費のために複数の受信者にメッセージを配信する

  • オフラインクライアントが後でデータをフェッチできるようにする

  • システムに完全非同期機能を導入

  • アプリケーション展開の信頼性と稼働時間の向上

AMQPアセンブリと用語


AMQPを理解して操作するには、かなりの数の異なる用語や用語に精通している必要があります。 このセクションでは、次の重要な部分について説明します。

  • ブローカー(サーバー):メッセージルーティング、キューイングなどのためにクライアントからの接続を受け入れるアプリケーション(AMQPモデルを実装)。

  • メッセージ:ペイロードやメッセージ属性などの情報を含む、転送/ルーティングされたデータのコンテンツ。

  • コンシューマー:キューからメッセージ(プロデューサーによって送信された)を受信するアプリケーション。

  • プロデューサー:交換を介してメッセージをキューに入れるアプリケーション。

注:メッセージのペイロードはAMQPによって定義されていません。 したがって、さまざまな種類のデータをプロトコルを使用して転送できます。

主なAMQPコンポーネント


メッセージの受信、ルーティング、保存、キューイング、およびこれらのタスクを処理するアプリケーションパーツの動作を定義するAMQPモデルは、以下のコンポーネントの明確な定義に依存しています。

  • Exchange:ブローカーの一部(つまり サーバー)メッセージを受信し、キューにルーティングします

  • キュー(メッセージキュー):メッセージが関連付けられ、コンシューマーがメッセージを受信する場所からの名前付きエンティティ

  • バインディング:交換からキューにメッセージを配信するためのルール

AMQPメッセージブローカーはどのように機能しますか?


AMQPでは、「メッセージブローカー」は、実際のメッセージを受信してルーティングするアプリケーションに変換されます(つまり、 それらを関係者に転送します。

APPLICATION       EXCHANGE        TASK LIST        WORKER
   [DATA] -------> [DATA] ---> [D]+[D][D][D] --->  [DATA]
 Publisher        EXCHANGE          Queue         Consumer

AMQP交換はどのように機能しますか?


出版社からのメッセージを受け取った後(すなわち クライアント)、エクスチェンジはそれらを処理し、1つ以上のキューにルーティングします。 実行されるルーティングのタイプは交換のタイプによって異なり、現在4つあります。

直接交換


直接交換タイプには、ルーティングキーに基づいたキューへのメッセージの配信が含まれます。 ルーティングキーは、メッセージの送信先を設定するために定義された追加データと見なすことができます。

直接交換の一般的な使用例は、ワーカー間のラウンドロビン方式での負荷分散タスクです。

ファンアウト交換


ファンアウト交換はルーティングキーを完全に無視し、それにバインドされているすべてのキューにメッセージを送信します。

ファンアウト交換のユースケースには、通常、通知と同様の目的で複数のクライアントにメッセージを配信することが含まれます。

  • メッセージの共有(例: チャットサーバー)と更新(例: ニュース)

  • アプリケーションの状態(例: 構成)

トピック交換


トピック交換は、主にpub / sub(パブリッシュ/サブスクライブ)パターンに使用されます。 このタイプの転送を使用すると、キューを交換にバインドするとともにルーティングキーを使用して、メッセージを照合および送信します。

消費者の特別な関与が必要な場合(特定のタイプのアクションを実行するための単一のワーキングセットなど)、トピック交換は、キーとパターンに基づいてそれに応じてメッセージを配信するのに役立ちます。

ヘッダー交換


ヘッダー交換は、追加のヘッダーを使用することで構成されます(つまり、 メッセージ属性)キューにルーティングするためのルーティングキーに依存する代わりに、メッセージと結合されます。

文字列以外のタイプのデータ(ルーティングキーとは何か)を使用できるため、ヘッダー交換により、さまざまなルーティングメカニズムが可能になりますが、キーを介した直接交換と同様の可能性があります。

AMQPメッセージブローカリングは電子メールとどのように異なりますか?


郵送がメッセージの送信で構成されているとすると(すなわち 公開)、メールサーバーによる受信と処理(つまり 仲介)関連するメールボックス(つまり キュー)最後に、上記のメッセージを要求して取得します(つまり 消費)、AMQPによって定義されたメッセージを転送するプロセスとタスクは類似していると見なすことができます。

基本は実際にはかなり異なりますが、AMQPと電子メールを区別する主な点は、対象となるサービス品質(QoS)です。 AMQPは、その性質上、信頼性、セキュリティ、標準への準拠、および安全性を追求しています。

永続性、複数のコンシューマーへのメッセージの配信、複数のコンシューマーを保証および防止する可能性、高速で動作するプロトコルなどの機能が、この2つを分離する主な要因です。

ビジネスレベルの使用法と適応のために、メッセージを送信するための認証の要件(すなわち 交換(およびキュー)への公開)は、不要なもの(スパムなど)の防止を意味し、QoSを確立するための重要な役割を果たします。

投稿者: https ://twitter.com/ostezer ”> OS Tezer