RabbitMQについてのそれらのことについて話します

インタビュー指向のブログは、Q / Aスタイルで提示されます。


質問1:RabbitMQメッセージキューを簡単に紹介しますか?

回答1:

RabbitMQは、Erlangが開発したAMQP(Advanced Message Queuing Protocol)のオープンソース実装です。

AMQP:Advanced Message Queue Protocol、Advanced Message Queue Protocol。これは、アプリケーション層プロトコルのオープンスタンダードであり、メッセージ指向のミドルウェア用に設計されています。このプロトコルに基づくクライアントとメッセージミドルウェアは、製品や開発言語などの条件に制限されることなくメッセージを配信できます。

RabbitMQはもともと金融システムで開発され、分散システムでメッセージを保存および転送するために使用され、使いやすさ、スケーラビリティ、および高可用性の点で優れています。具体的な機能は次のとおりです。

  1. 信頼性:RabbitMQは、永続性、送信確認、リリース確認など、いくつかのメカニズムを使用して信頼性を確保します。
  2. フレキシブルルーティング(フレキシブルルーティング):メッセージがキューに入る前に、メッセージはExchange経由でルーティングされます。典型的なルーティング機能のために、RabbitMQは実現するいくつかの組み込みのExchangeを提供しています。より複雑なルーティング機能の場合、複数のExchangeをバインドし、プラグインメカニズムを介して独自のExchangeを実装することもできます。
  3. クラスタリング:複数のRabbitMQサーバーがクラスターを形成して、論理ブローカーを形成できます。
  4. 高可用性(高可用性キュー):クラスター内のマシンでキューをミラーリングできるため、一部のノードで問題が発生した場合でもキューを使用できます。
  5. マルチプロトコル:RabbitMQは、STOMP、MQTTなどの複数のメッセージキュープロトコルをサポートしています。
  6. 多言語クライアント(多くのクライアント):RabbitMQは、Java、.NET、Rubyなど、ほとんどすべての一般的に使用される言語をサポートしています。
  7. 管理UI:RabbitMQは、ユーザーがメッセージブローカーの多くの側面を監視および管理できる、使いやすいユーザーインターフェイスを提供します。
  8. トレースメカニズム:メッセージが異常な場合、RabbitMQはメッセージトラッキングメカニズムを提供し、ユーザーは何が起こったかを知ることができます。
  9. プラグインメカニズム(プラグインシステム):RabbitMQは多くのプラグインを提供し、さまざまな側面から拡張できます。独自のプラグインを作成することもできます。

質問2:RabbitMQアーキテクチャを簡単に紹介しますか?

回答2:

RabbitMQアーキテクチャは、以下に示すとおりです
ここに画像の説明を挿入
。1、メッセージ
メッセージ。メッセージには名前がありません。メッセージヘッダーとメッセージ本文で構成されます。メッセージ本文は不透明で、メッセージヘッダーは一連のオプション属性で構成されます。これらの属性には、ルーティングキー(ルーティングキー)、優先度(他のメッセージに対する優先度)、配信モード(メッセージに必要な可能性があることを指摘)が含まれます。永続的ストレージ)など

2.パブリッシャー
メッセージのプロデューサーは、メッセージをエクスチェンジにパブリッシュするクライアントアプリケーションでもあります。

3.エクスチェンジ(キューへのメッセージのルーティング)
エクスチェンジ。プロデューサによって送信されたメッセージを受信し、これらのメッセージをサーバーのキューにルーティングするために使用されます。

4.バインディング(メッセージキューとスイッチ間の関連付け)
バインディング。メッセージキューとスイッチ間の関連付けに使用されます。バインディングは、ルーティングキーに基づいてスイッチとメッセージキューを接続するルーティングルールであるため、スイッチはバインディングで構成されたルーティングテーブルとして理解できます。

5.キュー
メッセージキューメッセージがコンシューマに送信されるまでメッセージを保存するために使用されます。メッセージのコンテナであり、メッセージの終わりです。メッセージは1つ以上のキューに入れることができます。メッセージはキューに入れられており、コンシューマーがこのキューに接続して削除するのを待っています。

6.
TCP接続などの接続ネットワーク接続。

7.チャネル
チャネル。多重化接続の独立した双方向データフローチャネル。チャネルは、実際のTCP接続で確立された仮想接続です。AMQPコマンドはチャネルを介して送信されます。メッセージをパブリッシュするか、キューをサブスクライブするか、メッセージを受信するかに関係なく、これらのアクションはチャネルを介して実行されます。オペレーティングシステムがTCPを確立して破棄することは非常にコストがかかるため、TCP接続を再利用するためにチャネルの概念が導入されています。

8.コンシューマー
メッセージのコンシューマーは、メッセージキューからメッセージを取得するクライアントアプリケーションを表します。

9.
スイッチ、メッセージキュー、および関連オブジェクトのバッチを表す仮想ホスト仮想ホストは、同じID認証および暗号化環境を共有する独立したサーバードメインです。

10.ブローカー
はメッセージキューサーバーエンティティを表します。


質問3:Exchangeがメッセージを配信するためのさまざまな戦略について話しますか?

Answer3:

Exchangeは、さまざまな種類の配信戦略に従ってメッセージを配信します。現在、ダイレクト、ファンアウト、トピック、ヘッダーの4つのタイプがあります。ヘッダーはルーティングキーではなくAMQPメッセージのヘッダーと一致します。さらに、ヘッダースイッチとダイレクトスイッチはまったく同じですが、パフォーマンスははるかに悪く、現在はほとんど使用されていないため、他の3つのタイプを直接見てください。

1.ダイレクトキー(ルーティングキー)の配布

直接:メッセージのルーティングキーがバインディングのバインディングキーと同じ場合、スイッチは対応するキューにメッセージを送信します。完全に一致するユニキャストモードです。直接交換を以下に示します。

ここに画像の説明を挿入

上の図は、直接型で、ルーティングキーとバインディングキーが完全に一致する場合、ルーティングキー=キールーティングキー=図のキーが完全に一致し、スイッチが対応するキューにメッセージを送信し、最後にメッセージキューからコンシューマーが送信されることを示しています消費のためにメッセージを取り出します。

2.ファンアウト(放送配信)

ファンアウト:ファンアウトタイプのスイッチに送信されたすべてのメッセージは、バインドされたすべてのキューに配信されます(サブネットブロードキャストと同様に、サブネット内の各ホストはメッセージのコピーを取得します)。ファンアウトタイプの転送メッセージが最も高速です。

ファンアウト交換を以下に示します。
ここに画像の説明を挿入

上の図は、ファンアウトタイプでは、スイッチのすべてのメッセージがブロードキャストのようなすべてのバインドされたキューに配信され、最後にコンシューマーがメッセージキューからメッセージを取得して消費することを示しています。

3.トピックスイッチ(パターンマッチング)

トピックスイッチ:トピックスイッチは、ルーティングキーを特定のパターンに一致させるために、パターンマッチングを通じてメッセージのルーティングキー属性を配布します。この場合、キューはパターンにバインドする必要があります。ルーティングキーとバインドキーの文字列をドットで区切られた単語に分割します。また、記号「#」と記号「」の2つのワイルドカードも認識します。#0以上の単語に一致し、1つの単語にのみ一致します。

トピック交換を以下に示します。

ここに画像の説明を挿入

トピックタイプと直接タイプは、ルーティングキーとバインディングキーが一致するという点で類似しています。違いは、直接タイプがバインディングキーであると判断されると、2つが完全に一致することと、トピックタイプがバインディングキーである場合の一種です。一致パターン、このパターンに一致するルーティングキーに一致します。もちろん、このパターンに一致するルーティングキーは複数あります。
上の図では、パターンマッチングは次の
とおりです。binding.key = usa。#一致させるrouting.key = usa.news routing.key = usa.weather;
binding.key =#。ニュースが一致するrouting.key = usa.news routing.key = europe.news;
binding.key =#。天気と一致するrouting.key = usa.weather routing.key = europe.weather;
binding.key = europe。#一致するrouting.key = europe.news routing.key = europe.weather
パターンマッチングが満たされると、スイッチは対応するキューにメッセージを送信し、最後にコンシューマーはメッセージキューからメッセージを取り出して消費します。

207の元の記事を公開 80を賞賛 120,000ビュー

おすすめ

転載: blog.csdn.net/qq_36963950/article/details/105335758