# 1. メッセージミドルウェア
メッセージキュー技術は、分散アプリケーション間で情報を交換するための技術です。メッセージ キューはメモリまたはディスク上に常駐でき、アプリケーションによって読み取られるまでメッセージを保存します。メッセージ キューを使用すると、アプリケーションは独立して実行できます。アプリケーションはお互いの位置を認識したり、続行する前に受信プログラムがメッセージを受信するのを待つ必要がありません。 一般に、メッセージ ミドルウェアには、結合の低減、トラフィック ピークの低減、非同期通信、および信頼性の高い送信の機能があります。1. 結合の低減: パブリッシュとサブスクライブによる疎結合 登録ビジネスを例に挙げます。登録が成功すると、確認のために SMS と電子メールがユーザーに送信されます。従来のアーキテクチャ モデルは次のとおりです。#2. メッセージ ミドルウェア モデル
##3. 一般的に使用されるメッセージ ミドルウェア##RabbitMQ
1. RabbitMQ の機能:
RabbitMQ はオープン ソース実装ですErlang 言語で開発された AMQP 標準に基づいています。 RabbitMQ はもともと金融システムから生まれ、分散システムでメッセージを保存および転送するために使用されており、使いやすさ、拡張性、高可用性の点で優れたパフォーマンスを発揮します。その具体的な機能は次のとおりです。信頼性柔軟なルーティングメッセージ クラスターのサポート
高可用性
複数のプロトコルのサポート (AMQP プロトコルのサポートに加え、STOMP や MQTT などのプラグインを通じて他のメッセージ キュー プロトコルもサポートします)
多言語クライアントのサポート
管理インターフェイスの提供
追跡メカニズムの提供
プラグイン メカニズムの提供 (RabbitMQ は多くのプラグインを提供しており、独自のプラグインを作成することもできます)
概要:
RabbitMQ の最大の利点は、比較的柔軟なメッセージ ルーティング戦略、高可用性、信頼性、豊富なプラグイン、複数のプラットフォームを提供することです。サポートと完全なドキュメント。ただし、AMQP プロトコル自体の実装が比較的重いため、他の MQ (Kafka など) と比較してスループットが不利になります。
ActiveMQ
1.ActiveMQ の機能:
ActiveMQ は、Apache によって作成されたオープン ソースのメッセージング ミドルウェアであり、効率的でスケーラブルで安定した、エンタープライズレベルのメッセージング通信を保護します。 ActiveMQ は JMS 1.1 を実装し、JMX 管理、マスター/スレーブ管理、メッセージ グループ通信、メッセージの優先順位、遅延メッセージ受信、仮想レシーバー、メッセージの永続化、メッセージ キューの監視など、多くの追加機能を提供します。主な機能は次のとおりです。
Java、C、C、C#、Ruby、Perl、Python、PHP など、OpenWire、STOMP、AMQP などの複数の言語でクライアントとプロトコルをサポートします。 、MQTT プロトコル。
メッセージ グループ通信、メッセージの優先順位、遅延メッセージ受信、仮想受信者、メッセージの永続化などの高度な機能を提供します。
JMS 1.1 および J2EE 1.4 仕様 (永続性、分散トランザクション メッセージ、トランザクションを含む) を完全にサポートします。
Spring フレームワークをサポートし、ActiveMQ は Spring 構成ファイルを通じて Spring アプリケーションに簡単に埋め込むことができます。
TomEE、Geronimo、JBoss、GlassFish、WebLogic などの一般的な J2EE サーバー テストに合格しました。
多様な接続方式 ActiveMQ は、VM 内、TCP、SSL、NIO、UDP、マルチキャスト、JGroups、JXTA など、さまざまな接続方式を提供します。
JDBC とジャーナルを使用して、メッセージの高速永続化をサポートします。
高パフォーマンスのクラスター、クライアント/サーバー、ポイントツーポイント通信、およびその他のシナリオ向けに設計されています。
テクノロジーと言語に依存しない REST API インターフェイスを提供します。
AJAX 経由での ActiveMQ の呼び出しをサポートします。
ActiveMQ は、CXF や Axis などの Web サービス テクノロジと簡単に統合して、信頼性の高いメッセージングを提供できます。
インメモリ JMS プロバイダーとして使用でき、JMS 単体テストに非常に適しています。
Kafka
1.Kafka の機能:
Kafka は、分散パブリッシュ/サブスクライブ メッセージング システムとして LinkedIn によって最初に開発され、後に Apache のものになりました。トップレベルのプロジェクト。その主な機能は次のとおりです。
パブリッシュとサブスクリプションの両方で高いスループットを提供します。 (Kafka の設計目標は、時間計算量が O(1) のメッセージ永続化機能を提供することです。これは、TB レベルを超えるデータに対しても一定時間のアクセス パフォーマンスを保証でき、非常に安価な商用マシンでも実行できます。 1 台のマシンに 1 秒あたり 100K のメッセージを送信)
メッセージの永続性。 (メッセージをディスクに永続化するため、リアルタイム アプリケーションだけでなく ETL などのバッチ消費にも使用できます。データをハードディスクに永続化してレプリケートすることで、データ損失を防ぐことができます。)
分散。 (各パーティション内でのメッセージの連続送信を確保しながら、サーバー間でのメッセージの分割と分散消費をサポートします。内部のプロデューサー、ブローカー、およびコンシューマーはすべて分散アーキテクチャであるため、外部への拡張が容易になります。)
Consumingmessagesプルモードを採用。 (処理中のメッセージのステータスは、サーバー側ではなくコンシューマ側で維持されます。ブローカーはステートレスであり、コンシューマ自体がオフセットを保存します。)
オフラインだけでなく、オンラインおよびオフラインのシナリオもサポートします。データ処理とリアルタイムデータを扱います。
RocketMQ
1. RocketMQ の機能:
RocketMQ は、2012 年に Alibaba によってオープンソース化され、その後 Apache software Foundation に寄付された分散メッセージング ミドルウェアです。そして、2017 年 9 月 25 日に Apache のトップレベル プロジェクトになりました。アリババの「Double 11」など数々の「スーパープロジェクト」を経験し、安定した優れたパフォーマンスを誇る国産ミドルウェアとして、その高性能、低遅延、高信頼性により、近年国内ユーザーの利用が増えています。企業が使用します。主な特徴は次のとおりです。
柔軟な拡張性を備えています。 (RocketMQ は当然クラスターをサポートしており、その 4 つのコア コンポーネント (NameServer、Broker、Producer、および Consumer) はそれぞれ単一障害点なしで水平方向に拡張できます。)
大量のメッセージを蓄積する機能があります。 (RocketMQ は、ゼロコピーの原則を使用して、非常に大量のメッセージを蓄積する機能を実現します。1 台のマシンで数億のメッセージの蓄積をサポートできると言われており、非常に多くのメッセージを蓄積した後でも、低い書き込み遅延を維持します。 )
連続メッセージをサポートします。 (RocketMQ は、メッセージ コンシューマーが送信された順序でメッセージを消費することを保証できます。シーケンシャル メッセージは、グローバルに順序付けされたメッセージとローカルに順序付けされたメッセージに分けられます。一般に、ローカルに順序付けされたメッセージを使用することをお勧めします。つまり、プロデューサーは特定のタイプを送信します。達成するために同じキューに送信するためのメッセージの数。)
複数のメッセージ フィルタリング方法をサポートします。 (メッセージのフィルタリングは、サーバー側のフィルタリングとコンシューマ側のフィルタリングに分かれます。サーバー側でフィルタリングを行うと、メッセージのコンシューマの要件に応じてフィルタリングを実行できます。メリットは、不要なメッセージの送信が削減されることですが、デメリットは、メッセージ サーバーの負荷が増加します。実装は比較的複雑です。コンシューマ側のフィルタリングは、特定のアプリケーションによって完全にカスタマイズされます。この方法はより柔軟です。欠点は、多くの無駄なメッセージがメッセージ コンシューマに送信されることです。)
トランザクションメッセージをサポートします。 (通常のメッセージと順次メッセージのサポートに加えて、RocketMQ はトランザクション メッセージもサポートします。この機能は、分散トランザクションに別のソリューションを提供します。)
バックトラッキング消費をサポートします。 (遡及消費とは、コンシューマーによって正常に消費されたメッセージが、ビジネス ニーズのために再度消費される必要があることを意味します。RocketMQ は、時間に応じた遡及消費をサポートします。時間ディメンションはミリ秒単位で正確で、前後に追跡できます。)
MoreFAQ については、PHP 中国語 Web サイトをご覧ください。
以上がRPCミドルウェアとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。