分散メッセージングミドルウェアとは何ですか?
分散メッセージ ミドルウェアについては、まず分散システムとは何か、ミドルウェアとは何かという 2 つの基本概念を理解する必要があります。
分散システム
「分散システムとは、ネットワークに接続されたコンピュータにあるコンポーネントがメッセージを渡すことによってのみ通信し、その動作を調整するシステムのことです。」——《分散システムの概念と設計》
上記の説明から、分散システムの 2 つの特徴が得られます。
コンポーネントはネットワークコンピュータ全体に分散されます
メッセージを通じてコンポーネント間のアクションを調整する
ミドルウェア
ミドルウェアは、オペレーティング システムで利用可能なサービスを超えたサービスをソフトウェア アプリケーションに提供するコンピューター ソフトウェアです。それは「ソフトウェアの接着剤」と表現できます。ミドルウェアを使用すると、ソフトウェア開発者は通信と入出力を簡単に実装できるため、アプリケーションの特定の目的に集中できます。
ミドルウェアは、オペレーティング システムが提供するサービス以外のサービスをアプリケーションに提供し、アプリケーションの通信、入出力開発を簡素化し、アプリケーションが独自のビジネス ロジックに集中できるようにすると説明されています。
Wikipediaのミドルウェアの説明は少々複雑に感じますが、実はミドルウェアは上位アプリケーションとの接続部分である「中間層」のコンポーネントであるという「空間」の観点から理解することができます。ブリッジ (たとえば、DB ミドルウェアの上位層はアプリケーション プログラム、下位層は DB サービス) であり、アプリケーション (分散サービス コンポーネントなど) 間のブリッジでもあります。
分散メッセージミドルウェア
「メッセージ指向ミドルウェア (MOM) は、分散システム間のメッセージの送受信をサポートするソフトウェアまたはハードウェアのインフラストラクチャです。」——维基百科
Wikipedia によるメッセージ ミドルウェアの定義は、分散システムでのメッセージの送受信をサポートするハードウェアまたはソフトウェア インフラストラクチャです (ここでの説明の範囲では、ソフトウェアである必要があります)。
したがって、分散型メッセージ ミドルウェアは、実際には、メッセージ ミドルウェア自体も分散型システムであることを意味します。
メッセージミドルウェアは何ができるのでしょうか?
ミドルウェアは特定の分野で特定の問題を解決する必要があり、メッセージ ミドルウェアは分散システム間のメッセージ送信の問題を解決します。メッセージパッシングは、分散システムが直面しなければならない問題です。
電子商取引のトランザクション シナリオを想定すると、ユーザーが注文した後、在庫を減らすために在庫システムが呼び出され、商品を配送するために物流システムが呼び出される必要があります。同じシステムの場合、それはインターフェイス呼び出しです。しかし、システムの発展に伴い各モジュールがどんどん大きくなり、ビジネスロジックも複雑化するため、サービス化や事業分割が必要になります。このとき、これらのシステムがどのように相互作用するかを考慮する必要がありますが、最初の反応は RPC (Remote Procedure Call) です。システムが開発を続けると、リスク管理システムや SMS サービスなど、トランザクション後にビジネスを実行するために数十のインターフェイスを呼び出すことが必要になる場合があります。現時点では、問題を解決するにはメッセージミドルウェアの登場が必要です。
著者は、RPC シナリオとメッセージ ミドルウェア シナリオの違いは主に「依存性」と「量」にあると考えています。たとえば、SMS 通知サービスはトランザクション プロセスには必要なく、注文プロセスに影響を与えず、強い依存性もないため、トランザクション システムは SMS サービスに依存すべきではありません。たとえば、一部のデータ分析プログラムでは、1 日の総販売量を取得する必要がある場合がありますが、必要なときに販売センターが呼び出すためのインターフェイスを提供するだけで済みます。
メッセージ ミドルウェアの出現後、トランザクション シナリオでは、在庫センターやその他の依存性の高いシステムを呼び出してビジネスを実行し、メッセージを発行することがあります (このメッセージはメッセージ ミドルウェアに保存されます)。SMS 通知サービス、データ統計サービスなどはすべて、メッセージ ミドルウェアに依存してこのメッセージを消費し、独自のビジネス ロジックを完成させます。
上記のシナリオから、メッセージ ミドルウェアが実際にシステムを分離し、非同期などの利点をもたらすことがわかります。
メッセージミドルウェアの適用シナリオを簡単にまとめると、次のようになります。
ビジネスの分離: 取引システムは SMS 通知サービスの存在を知る必要はなく、メッセージを公開するだけで済みます。
ピークシェービングとバレーフィリング: たとえば、上流システムのスループット能力が下流システムのスループット能力よりも高いため、トラフィックのピーク時に下流システムを圧倒する可能性があります。メッセージミドルウェアはピーク時にメッセージを蓄積でき、下流システムはシステムは、トラフィックのピーク値が過ぎた後、トラフィックのピークを解決するためにメッセージをゆっくりと消費します。
イベント駆動型: ビジネスは、システム間で受け渡されるメッセージの形式で駆動され、ストリーミング モデルで処理されます。
分散メッセージ ミドルウェアとはどのようなものですか?
分散メッセージ ミドルウェアの抽象的な理解は次のようになります。
ビジネス システムがメッセージを送信および消費するためのインターフェイスを提供する SDK があります。
サーバー ノードのバッチはメッセージの受信と保存に使用され、必要に応じてメッセージを使用するためにダウンストリーム システムに送信されます。