ホームページ よくある問題 RPCミドルウェアとは何ですか?

RPCミドルウェアとは何ですか?

Jan 07, 2020 am 09:34 AM
rpc ミドルウェア

RPCミドルウェアとは何ですか?

# 1. メッセージミドルウェア

メッセージキュー技術は、分散アプリケーション間で情報を交換するための技術です。メッセージ キューはメモリまたはディスク上に常駐でき、アプリケーションによって読み取られるまでメッセージを保存します。メッセージ キューを使用すると、アプリケーションは独立して実行できます。アプリケーションはお互いの位置を認識したり、続行する前に受信プログラムがメッセージを受信するのを待つ必要がありません。

一般に、メッセージ ミドルウェアには、結合の低減、トラフィック ピークの低減、非同期通信、および信頼性の高い送信の機能があります。

1. 結合の低減: パブリッシュとサブスクライブによる疎結合

登録ビジネスを例に挙げます。登録が成功すると、確認のために SMS と電子メールがユーザーに送信されます。従来のアーキテクチャ モデルは次のとおりです。

RPCミドルウェアとは何ですか?

メール業務とSMS業務 ユーザー登録時にコードを記述します インターフェース経由で実装する場合も、リモート通話で実装する場合も、結合度は非常に高いです ここで、新たな要件が追加されます ユーザー登録完了後メールが送信されない ユーザーの「ポイントを増やすため」 これらの状況を分析してみましょう:

まず、登録成功後の業務処理は、コードの蓄積とインターフェース呼び出しを通じて業務システムに実装されます。登録コードを変更するには、オンライン時にアプリケーションを起動および停止する必要がありますが、この方法が最も結合度が高くなります。

2 番目に、リモート呼び出しを通じて新しいビジネス処理を追加する場合、メイン プロセスのコードを変更する必要があり、アプリケーションの起動と停止が避けられません。

メッセージ ミドルウェアを次のように導入すると:

RPCミドルウェアとは何ですか?

#ユーザーが正常に登録された後、パブリッシュとサブスクライブを通じて、メッセージがメッセージ ミドルウェアに送信されます。ビジネスエンドは、同じチャネルのメッセージをサブスクライブし、登録成功のメッセージを受信した後、対応するビジネスを実行します。 「ポイント追加」の追加により、ポイントシステム側での処理とこのメッセージの購読だけで済むため、ユーザーの業務コードの変更やアプリケーションの起動・停止が不要となり、スムーズな拡張が可能となります。ビジネスは達成できる。

2. 非同期通信

上記の例で言うと、従来のアーキテクチャでは、ユーザー登録が完了して SMS メールが送信されると、クライアントが戻ってきてユーザーに登録が完了したことを通知します。成功です。メッセージ ミドルウェアを使用した後、ユーザーが登録情報を送信して処理が完了すると、ユーザーは正常に登録するように求められます。その後の SMS サービスと電子メール サービスは、SMS メッセージを送信する前に、購読チャネルからユーザー登録成功メッセージを受信し、メール、企業間でのやり取りは不要、相互抑制。

3. トラフィック ピークの削減とサージの防止

メッセージ ミドルウェアはピーク期間中にメッセージを蓄積し、ピーク値が過ぎた後、ダウンストリーム システムがメッセージをゆっくりと消費してトラフィック ピークの問題を解決します。 。

同時実行性がピークに達すると、通常、バックエンド システムへの負荷が非常に高くなります。アプリケーション サーバーであってもデータベース サーバーであっても、この時点では、同様のリクエストがメッセージ キューに入れられる可能性があります。メッセージ ミドルウェアのサイズを設定し、処理が遅いために蓄積されます。メッセージ キューのサイズを設定して、同時実行の量を制御することもできます。製品のフラッシュ セールのビジネス シナリオは、比較的一般的です。

4. 信頼性の高い送信

メッセージベースの通信は信頼性が高く、メッセージが失われることはありません。ほとんどのメッセージング ミドルウェアは、メッセージをディスクに永続化する機能を提供します。冒頭の 1 つ目のシナリオでは、メッセージ ミドルウェアはプロデューサによって生成されたメッセージをディスクに永続化できます。バックエンド アプリケーションは停止しますが、メッセージは失われず、アプリケーションは再起動されて処理を続行します。

メッセージ ミドルウェアがダウンしている場合、メッセージを受信できない場合にメッセージ ミドルウェアを維持するにはどうすればよいですか?という質問があるかもしれません。それは問題ではありません。メッセージ ミドルウェアは、メッセージの信頼性の高い送信を保証できるさまざまなメッセージ レプリケーション戦略、永続化戦略、クラスター展開戦略などを提供します。

#2. メッセージ ミドルウェア モデル

RPCミドルウェアとは何ですか?

RPCミドルウェアとは何ですか?

##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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

RPC サーバーに接続できない、およびデスクトップに入れない場合の解決策 RPC サーバーに接続できない、およびデスクトップに入れない場合の解決策 Feb 18, 2024 am 10:34 AM

RPC サーバーが利用できず、デスクトップからアクセスできない場合はどうすればよいですか? 近年、コンピューターとインターネットが私たちの生活の隅々に浸透しています。集中コンピューティングとリソース共有のテクノロジーとして、リモート プロシージャ コール (RPC) はネットワーク通信において重要な役割を果たします。ただし、場合によっては、RPC サーバーが利用できなくなり、デスクトップにアクセスできなくなる状況が発生することがあります。この記事では、この問題の考えられる原因のいくつかについて説明し、解決策を提供します。まず、RPC サーバーが使用できない理由を理解する必要があります。 RPCサーバーは、

Tomcatミドルウェアの原理は何ですか Tomcatミドルウェアの原理は何ですか Dec 27, 2023 pm 04:40 PM

Tomcat ミドルウェアの原理は、Java Servlet および Java EE 仕様に基づいて実装されています。 Tomcat はサーブレット コンテナとして、HTTP リクエストとレスポンスを処理し、Web アプリケーションに実行環境を提供する役割を果たします。 Tomcat ミドルウェアの原理には主に次のものが含まれます: 1. コンテナ モデル; 2. コンポーネント アーキテクチャ; 3. サーブレット処理メカニズム; 4. イベント リスニングとフィルター; 5. 構成管理; 6. セキュリティ; 7. クラスタリングとロード バランシング; 8. コネクタテクノロジー; 9. エンベデッドモードなど

Laravelでミドルウェアを使用してフォーム検証を処理する方法 Laravelでミドルウェアを使用してフォーム検証を処理する方法 Nov 02, 2023 pm 03:57 PM

ミドルウェアを使用して Laravel でフォーム検証を処理する方法、特定のコード例が必要です はじめに: フォーム検証は Laravel で非常に一般的なタスクです。ユーザーが入力したデータの有効性と安全性を確保するために、当社は通常、フォームに送信されたデータを検証します。 Laravel は便利なフォーム検証機能を提供しており、フォーム検証を処理するためのミドルウェアの使用もサポートしています。この記事では、ミドルウェアを使用してLaravelでフォーム検証を処理する方法を詳しく紹介し、具体的なコード例を示します。

Laravelでデータ高速化のためのミドルウェアを使用する方法 Laravelでデータ高速化のためのミドルウェアを使用する方法 Nov 02, 2023 am 09:40 AM

Laravel でデータ アクセラレーションのためのミドルウェアを使用する方法 はじめに: Laravel フレームワークを使用して Web アプリケーションを開発する場合、データ アクセラレーションがアプリケーションのパフォーマンスを向上させる鍵となります。ミドルウェアは、Laravel が提供する重要な機能で、リクエストがコントローラーに到達する前、または応答が返される前に処理します。この記事では、ミドルウェアを使用して Laravel でデータ高速化を実現する方法に焦点を当て、具体的なコード例を示します。 1. ミドルウェアとは何ですか? ミドルウェアはLaravelフレームワークの仕組みです。

Laravelでのレスポンス変換にミドルウェアを使用する方法 Laravelでのレスポンス変換にミドルウェアを使用する方法 Nov 03, 2023 am 09:57 AM

Laravel での応答変換にミドルウェアを使用する方法 ミドルウェアは、Laravel フレームワークの非常に強力で実用的な機能の 1 つです。これにより、リクエストがコントローラーに入る前、またはレスポンスがクライアントに送信される前に、リクエストとレスポンスを処理できるようになります。この記事では、Laravel でレスポンス変換にミドルウェアを使用する方法を説明します。始める前に、Laravel がインストールされており、新しいプロジェクトが作成されていることを確認してください。次に、次の手順に従います。 新しいミドルウェアを作成する 開く

Laravelでデータ復元用のミドルウェアを使用する方法 Laravelでデータ復元用のミドルウェアを使用する方法 Nov 02, 2023 pm 02:12 PM

Laravel は、効率的で安全かつスケーラブルな Web アプリケーションを構築するための多くの高速かつ簡単な方法を提供する、人気のある PHP Web アプリケーション フレームワークです。 Laravel アプリケーションを開発する場合、多くの場合、データ回復の問題、つまり、データの損失または損傷が発生した場合にデータを回復し、アプリケーションの通常の動作を保証する方法を考慮する必要があります。この記事では、Laravelミドルウェアを使用してデータ回復機能を実装する方法と、具体的なコード例を紹介します。 1. ララとは何ですか?

Slim フレームワークのミドルウェアを使用してクロスドメイン リソース共有 (CORS) を設定する方法 Slim フレームワークのミドルウェアを使用してクロスドメイン リソース共有 (CORS) を設定する方法 Jul 30, 2023 pm 08:34 PM

Slim フレームワークでミドルウェアを使用してクロス オリジン リソース シェアリング (CORS) を設定する方法 クロス オリジン リソース シェアリング (CORS) は、サーバーが HTTP 応答ヘッダーに追加情報を設定して、ブラウザーに相互接続を許可するかどうかを伝えることができるメカニズムです。 -オリジンリクエスト。フロントエンドとバックエンドが分離されている一部のプロジェクトでは、CORS メカニズムを使用して、バックエンド インターフェイスに対するフロントエンドのクロスドメイン要求を実現できます。 Slim フレームワークを使用して REST API を開発する場合、ミドルウェア (Middleware) を使用できます。

Laravelでスケジュールされたタスクのスケジューリングにミドルウェアを使用する方法 Laravelでスケジュールされたタスクのスケジューリングにミドルウェアを使用する方法 Nov 02, 2023 pm 02:26 PM

Laravel でスケジュールされたタスクのスケジューリングにミドルウェアを使用する方法 はじめに: Laravel は、Web アプリケーションを開発するための便利で強力なツールを提供する、人気のある PHP オープン ソース フレームワークです。重要な機能の 1 つはスケジュールされたタスクです。これにより、開発者は指定された間隔で特定のタスクを実行できます。この記事では、ミドルウェアを使用してLaravelのスケジュールされたタスクのスケジューリングを実装する方法と、具体的なコード例を紹介します。環境の準備 始める前に確認する必要があります