#RPC は Remote Procedure Call の略です。
SAP システムにおける RPC 呼び出しの原理は、実際には非常に単純です。3 層アーキテクチャに似た C/S システムがいくつかあります。サードパーティのクライアント プログラムは、SAP の内部標準またはカスタムを呼び出します。インターフェイスを介して関数が取得する関数によって返されたデータは処理され、表示または印刷されます。 (推奨学習: SWOOLE ビデオ チュートリアル )
## ((((IPC) は、マルチタスクのオペレーティング システムやネットワーク コンピューターの手順やプロセスで使用される通信テクノロジです。プロセス間通信 (IPC) には 2 つのタイプがあります。 ローカル プロシージャ コール (LPC) LPC は、マルチタスク オペレーティング システムで、同時に実行されているタスクが相互に通信できるようにするために使用されます。これらのタスクはメモリ空間を共有し、タスクが相互に同期して情報を送信できるようにします。 リモート プロシージャ コール (RPC) RPC は LPC に似ていますが、オンラインで動作します。 RPC は、Sun Microsystems および HP の UNIX オペレーティング システムを実行するコンピュータに導入され始めました。Swoole フレームワークによって提供される RPC サーバーは、PHP-FPM での単一接続の同時実行や長時間の接続維持などの機能をサポートします。 Wheel Internet の大規模アプリケーションでは、4 層アーキテクチャのサービス指向アーキテクチャが構築されています。
多くの企業は Http Rest を使用して RPC 通信を実装しています。実装は簡単で、多くの既製のツールやソリューションを活用できます。ただし、HTTP 通信プロトコルには 2 つの重大な欠陥があります。 Http は単一接続の同時実行をサポートしていません。多くのリクエストを同時に送信したい場合は、多数の TCP 接続を作成する必要があります。 php-fpm が 500 のプロセスを開始し、毎回 128 の同時実行性を必要とする場合、64,000 の TCP 接続を作成する必要があります。 Http は長い接続を十分にサポートしていません。多くの Http プログラムは短い接続用に設計されています。TCP 接続はリクエストが行われたときに作成され、リクエストが終了したときに閉じられます。これにより、追加のネットワーク通信の消費が発生しますSwoole フレームワークの RPC クライアントは、16 バイトの固定ヘッダーと本文の通信方法を使用し、単一接続の同時実行をサポートし、php-fpm での長い接続のオープンをサポートします。
php-fpm の長い接続
php-fpm での TCP の長い接続の維持は、主に swoole 拡張機能によって提供される SWOOLE_KEEP オプションに依存します。このオプションを使用すると、リクエストの終了時に接続は閉じられず、新しいリクエストの到着後に TCP 接続を再利用できます。さらに、最下層には長い接続の検出機能が組み込まれています。 $client->connect() を実行すると、接続が利用可能かどうかが自動的に検出され、再利用された接続の有効期限が切れた場合、最下層は新しい TCP ロング接続を再作成します。 $client->connect() の実行時にジャンク データを自動的にクリーンアップして、最後のクライアント タイムアウトからの残留データによって引き起こされるサービス例外を回避します$socket = new \swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP, WOOLE_SOCK_SYNC); $socket->set(array( 'open_length_check' => true, 'package_max_length' => $this->packet_maxlen, 'package_length_type' => 'N', 'package_body_offset' => RPCServer::HEADER_SIZE, 'package_length_offset' => 0, ));
以上がPHPにおけるswooleとrpcの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。