web-dev-qa-db-ja.com

RESTful v / s MQ。保証付き配信以外の相違点とその他の主要機能

それで、MQとその目的/ユースケースなどについて勉強し始めました。私の既存のアプリケーション(JSPなどを使用して作成されたWeb)は、RestFULインターフェイスを使用してリモートサーバーと通信し、サーバーからデータをポスト/受信します。

リモートサーバーの接続に対処する必要があることがよくあります。同期の問題は常にそこにあります。

エンドから送信されたメッセージですが、リモートサーバーがダウンしています。またはその逆。

MQに遭遇し、リモートサーバーからのメッセージの送受信に関する懸念がある場合は、MQが信頼できることがわかりました。

しかし、再びRESTを使用すると、MQの必要性全体が少しかすんでいるように思われます。基本的に、MQとRestFULの違いのいくつかを探しています... =

RestFULドメインでの研究の増加のの出現により、MQはゆっくりとペースを失うだろうと他のブログ投稿を読んだ.. =

MQについてはあまり考えていないので、コメントはしませんが、RestFULでの作業は確かに楽しいです。

誰かがRestFULとMQの使用に違いを提供してくれれば幸いです。

24
AngelsandDemons

最大の違いの1つは、RESTは同期処理を意味しますが、MQは非同期であることが多いです。すでに述べたように、MQはプロデューサーとコンシューマーを分離する方法であり、同時にオンラインになりますが、システムは引き続き全体として機能します。ユースケースが低遅延の応答(ブラウザを使用するユーザーなど)を示唆する場合は、同期セマンティクスが必要です。この場合、MQは別のプロトコルです。待ち時間が問題にならないか、メッセージングが一方向にしか行かないMQは非常に実行可能な代替手段になる可能性がありますMQが無料で提供する1つの機能は、コンシューマ側の負荷分散(およびある程度のHA)です。

RESTは、クライアント/サーバーの互換性の点ではるかに柔軟性があります。 RESTクライアントは、ほぼすべてのプラットフォームで実行できますが、MQの場合はそうではありません。これが、MQが廃止されたと主張する人がいる理由です。このため、MQはそうではありません。パブリックAPIに適しています。ただし、2つのサーバーシステム間の通信では、MQは依然として非常に優れたオプションです。RESTのユニークな機能は、リソースのWEB動作を完全に模倣できることです(ハイパーメディア)、つまり、1つのリソースに別のリソースへの参照が含まれているなど、MQはそのようなものを提供できません。

パフォーマンスも問題になる可能性があります。正確な数値を示すことはできませんが、MQの方がスループットが高くなる傾向があります。

セキュリティ要件が原因でまれにクライアントがサーバーに直接接続できない場合があります。そのような場合、サーバーにデータを送信する唯一の方法はMQです。

要約すると、原則として、RESTを使用します

  • パブリックAPIまたは
  • 同期処理が必要な場所

MQ

  • 限られた量のサーバー側システムのみが関係している場合
  • 非同期処理は許容可能または
  • RESTパフォーマンスでは不十分
27
kkamenev

RESTとMQの両方により、リモートシステム(およびローカル)間の通信が可能になります。

REST通信では、コンシューマーとRESTサービスプロバイダーが通信を成功させるために実行されている必要があります。これはポイントツーポイント通信です。

MQモデルでは、プロデューサーとコンシューマーを同時に実行する必要はありません。プロデューサーとコンシューマーは直接対話しません。メッセージブローカーは、メッセージの処理、永続化などを処理します。ポイントツーポイントモデルとパブリッシュサブスクライブモデルの両方がサポートされています。パブリッシュサブスクライブモデルでは、メッセージを複数のコンシューマーが消費できます。

これらは、それらを区別するいくつかの基本的なポイントにすぎません。 SOおよびMQについて語るRESTに関する十分な投稿があります。

11
techuser soma

どちらも抽象化ですが、レベルは異なります。アプリケーションはRESTful APIを提供できますが、内部ではメッセージキューなどのさまざまなコンポーネントを利用します。

短くて汚い:RESTfulは、アプリまたはコンポーネントの構築方法のベストプラクティスを宣言します。MQは、コンポーネント間のメッセージングに使用されます。

RPCと混同されるかもしれませんが、WebコンテキストではMQとは異なります。

5
pinepain