Heim  >  Artikel  >  PHP-Framework  >  Der Unterschied zwischen Swoole und RPC in PHP

Der Unterschied zwischen Swoole und RPC in PHP

(*-*)浩
(*-*)浩Original
2019-12-14 14:17:012430Durchsuche

Der Unterschied zwischen Swoole und RPC in PHP

RPC ist die Abkürzung für Remote Procedure Call.

Das Prinzip des RPC-Aufrufs im SAP-System ist eigentlich sehr einfach. Es gibt einige C/S-Systeme, die der dreistufigen Architektur ähneln. Das Client-Programm von Drittanbietern ruft die Standard- oder benutzerdefinierten Funktionen auf innerhalb von SAP über die Schnittstelle zu erhalten Die von der Funktion zurückgegebenen Daten werden verarbeitet und dann angezeigt oder gedruckt. (Empfohlenes Lernen: SWOOLE-Video-Tutorial )

Inter-Process Inter-Process (IPC) ist die Kommunikationstechnologie, die das Programm und der Prozess zwischen dem Multitasking-Betriebssystem oder den angeschlossenen Geräten verwenden Computer. Es gibt zwei Arten der Interprozesskommunikation (IPC).

Local Procedure Call (LPC) LPC wird in Multitasking-Betriebssystemen verwendet, um gleichzeitig ausgeführten Aufgaben die Kommunikation miteinander zu ermöglichen. Diese Aufgaben teilen sich den Speicherplatz, sodass Aufgaben sich gegenseitig synchronisieren und Informationen senden können.

Remote Procedure Call (RPC) RPC ähnelt LPC, funktioniert jedoch online. RPC tauchte erstmals auf Computern auf, auf denen das UNIX-Betriebssystem von Sun Microsystems und HP ausgeführt wurde.

Der vom Swoole-Framework bereitgestellte RPC-Server unterstützt Funktionen wie die Parallelität einzelner Verbindungen und die Aufrechterhaltung langer Verbindungen unter PHP-FPM. In der groß angelegten Anwendung von Wheel Internet wurde eine serviceorientierte Architektur mit einer 4-Schichten-Architektur aufgebaut.

Viele Unternehmen verwenden Http Rest, um die RPC-Kommunikation zu implementieren. Die Implementierung ist einfach und kann viele vorgefertigte Tools und Lösungen nutzen. Das HTTP-Kommunikationsprotokoll weist jedoch zwei schwerwiegende Mängel auf.

Http unterstützt nicht die Parallelität einzelner Verbindungen. Wenn Sie viele Anfragen gleichzeitig senden möchten, müssen Sie eine große Anzahl von TCP-Verbindungen erstellen. Wenn php-fpm 500 Prozesse startet und jedes Mal 128 Parallelitäten erfordert, müssen 64.000 TCP-Verbindungen erstellt werden.

Http unterstützt lange Verbindungen nicht gut genug. Eine TCP-Verbindung wird erstellt, wenn eine Anfrage endet. Dies führt zu einem zusätzlichen Netzwerkkommunikationsverbrauch >

Der RPC-Client des Swoole-Frameworks verwendet eine 16-Byte-Kommunikationsmethode mit festem Header + Paketkörper, unterstützt die Parallelität einzelner Verbindungen und unterstützt das Öffnen langer Verbindungen in PHP-FPM.

PHP-FPM-Langverbindung

Die Aufrechterhaltung der TCP-Langverbindung in PHP-FPM hängt hauptsächlich von der SWOOLE_KEEP-Option ab, die von der Swoole-Erweiterung bereitgestellt wird, nachdem der Client festgelegt wurde Mit dieser Option wird die Verbindung nicht geschlossen, wenn die Anforderung endet, und die TCP-Verbindung kann nach dem Eintreffen neuer Anforderungen wiederverwendet werden. Darüber hinaus verfügt die unterste Ebene über eine integrierte Funktion zur Erkennung langer Verbindungen.

Beim Ausführen von $client->connect() wird automatisch erkannt, ob die Verbindung verfügbar ist. Wenn die wiederverwendete Verbindung abgelaufen ist, erstellt die unterste Ebene eine neue lange TCP-Verbindung.

Junk-Daten automatisch bereinigen, wenn $client->connect() ausgeführt wird, um Dienstausnahmen zu vermeiden, die durch Restdaten aus dem letzten Client-Timeout verursacht werden

$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,
));

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Swoole und RPC in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn