Heim  >  Artikel  >  [Fortgeschritten] Was sind die Unterschiede und Gemeinsamkeiten zwischen Workman und Swoole?

[Fortgeschritten] Was sind die Unterschiede und Gemeinsamkeiten zwischen Workman und Swoole?

藏色散人
藏色散人nach vorne
2019-03-14 14:24:286243Durchsuche

Workerman und Swoole sind in dieser Phase sehr beliebt. Wenn Sie Zeit haben, müssen Sie sich kennenlernen, sonst sind Sie nicht im PHP-Kreis. Swoole ist ein in der C-Sprache implementiertes Socket-Kommunikationsframework, während Workerman ein in reinem PHP implementiertes Socket-Kommunikationsframework ist. Es gibt auch viele Unterschiede in den Prozessmodellen zwischen den beiden.

Lassen Sie uns zunächst über das Prozessmodell von Swoole sprechen. Schauen Sie sich das folgende Analysediagramm an.

[Fortgeschritten] Was sind die Unterschiede und Gemeinsamkeiten zwischen Workman und Swoole?

Masterprozess
Dieser Prozess ist komplexer und meiner Meinung nach auch der Kernprozess. Dies ist ein Prozess, der mehrere enthält Threads bzw. ein Haupt-Thread und n Reaktor-Threads (die Anzahl kann konfiguriert werden). Unter diesen wird der Haupt-Thread zum Akzeptieren neuer Verbindungen verwendet. Anschließend wird die Anzahl der Verbindungen bewertet, für deren Aufrechterhaltung jeder Reaktor-Thread verantwortlich ist, und diese dann dem Reaktor-Thread mit der kleinsten Anzahl zugewiesen, um sicherzustellen, dass die Last jedes Reaktor-Threads gleich ist weitestgehend ausgeglichen. Sobald ein Socket lesbar oder beschreibbar ist, wird er im Wesentlichen vom Reaktorthread an den Arbeitsprozess oder an den Client gesendet. Darüber hinaus ist der Haupt-Thread auch dafür verantwortlich, alle Signale zu übernehmen, um Unterbrechungen zu vermeiden, wenn der Reaktor-Thread Signale empfängt. Um es ganz klar auszudrücken: Der Master-Prozess ist für die Annahme und das Hosten der Verbindung sowie für die Lesbarkeit und Beschreibbarkeit des Sockets (das Senden und Empfangen von Daten) verantwortlich. Im Wesentlichen ist der Master-Prozess für IO verantwortlich. Es ist auch zu beachten, dass der Reaktor-Thread eine vollständig asynchrone und nicht blockierende Arbeitsmethode ist.

Manager-Prozess
Der Manager-Prozess ist die Mutter des Worker-Prozesses und des Taskworker-Prozesses. Um es arroganter auszudrücken: Der Manager-Prozess teilt den Worker-Prozess und den Taskworker-Prozess. Das Management, also der Managerprozess, muss für die Wartungsverpflichtungen des Worker-Prozesses und des TaskWorker-Prozesses verantwortlich sein, einschließlich der Überwachung ihres Status, des Neustarts eines neuen Prozesses, wenn dieser unerwartet aufhängt (Vermeidung von Zombie-Prozessen) und eines reibungslosen Neustarts (so die Legende). ) neu laden).

Worker-Prozess
Der Worker-Prozess wird durch den Manager-Prozess gespalten. Vereinfacht gesagt handelt es sich bei diesem Prozess lediglich um das Verschieben von Bausteinen zur Arbeit (Geschäftscode, der oft in offiziellen Dokumenten erwähnt wird). . Tatsächlich ist es der normale Prozess, verstehen Sie? Das Interessante am Arbeitsprozess ist jedoch, dass dieser Prozess asynchron oder synchron arbeiten kann. Wenn Sie nicht verstehen, was es bedeutet, merken Sie es sich zunächst und machen Sie sich damit vertraut, bevor Sie darüber sprechen.

Taskworker-Prozess
Der Taskworker-Prozess (im Folgenden als Tasker-Prozess bezeichnet) ist eigentlich im Wesentlichen ein Worker-Prozess, aber eine besondere Art von Worker-Prozess. Wenn Ihr Worker-Prozess einige zeitaufwändige und arbeitsintensive Vorgänge enthält, können Sie diese zunächst an den Tasker-Prozess übergeben und andere Dinge selbst erledigen. Wenn der Tasker fertig ist, ruft der Worker-Prozess sie ab. Der Tasker-Prozess kann jedoch nur im synchronen Modus arbeiten und kann den asynchronen Modus nicht verwenden. Aus diesem Grund kann der Tasker-Prozess keine Timer verwenden, der Worker-Prozess jedoch Timer.

Eine kurze Zusammenfassung, wie diese Prozesse zusammenarbeiten. Vereinfacht ausgedrückt ist der Master-Prozess für die Übernahme von Vertriebsaufträgen verantwortlich, die spezifische Arbeit wird jedoch vom Worker-Prozess ausgeführt. Wenn der Worker-Prozess das Gefühl hat, dass einige Prozesse zu beschäftigt und zu kompliziert sind, kann er dies dem Tasker-Prozess überlassen. Der Managerprozess ist die Personalunterstützungsabteilung des Logistikarbeiterprozesses und des Nehmerprozesses und verantwortlich für deren Leben und Tod sowie Essen, Trinken und Schlafen.

Das Prozessmodell von Workerman ist relativ einfach. Im Vergleich zu Swoole verfügt Workerman nicht über den Reaktor-Thread. Zweitens verfügt Workerman nicht über den Worker-Prozess und den Tasker-Prozess gewöhnliches Geschäft. Im Fall von workerman wird der Socket vom Worker-Prozess verwaltet, während er im Fall von swoole vom Reaktor-Thread im Hauptprozess verwaltet wird. Nach Erhalt der Daten kann Swoole das Geschäft über seinen eigenen Worker-Prozess verarbeiten (ähnlich dem FPM-Prozess).

workerman ist ein leistungsstarkes PHP-Socket-Server-Framework, das auf der PHP-Multiprozess- und Libevent-Ereignisabfragebibliothek basiert. PHP-Entwickler müssen nur eine oder zwei Schnittstellen implementieren, um ihre eigenen Netzwerkanwendungen zu entwickeln RPC-Dienste, Chatroom-Server, mobile Spieleserver usw.

Das Ziel von Workerman ist es, PHP-Entwicklern die Entwicklung leistungsstarker Socket-basierter Anwendungsdienste zu erleichtern, ohne die Details von PHP-Sockets und PHP-Multiprozessen verstehen zu müssen. Workerman selbst ist ein PHP-Multiprozess-Server-Framework mit PHP-Prozessverwaltungs- und Socket-Kommunikationsmodulen, sodass es unabhängig ausgeführt werden kann, ohne auf PHP-FPM, Nginx oder Apache und andere Container

angewiesen zu sein, darunter

Workerman hat zwei Prozessmodelle

1. Grundlegendes Master-Worker-Modell

2. Master-Gateway-Worker-Modell

Der Master-Worker-Modell-Workflow und die Beziehung zwischen Prozessen sind wie folgt:

[Fortgeschritten] Was sind die Unterschiede und Gemeinsamkeiten zwischen Workman und Swoole?

Beschreibung des Master-Worker-Modells:

Der Master-Prozess ist der Hauptprozess, und die Konfiguration wird während des Startvorgangs gelesen Erstellen Sie in der Konfiguration jeder Anwendung einen Listening-Socket mit IP und Port und erstellen Sie dann eine entsprechende Anzahl untergeordneter Prozesse, dh Arbeitsprozesse, basierend auf der Anzahl der Prozesse in der Konfiguration. Der Arbeitsprozess erbt automatisch den erstellten Überwachungs-Socket durch den Master-Prozess, sodass der Worker-Prozess Client-Verbindungen selbstständig annehmen und verarbeiten kann. Dann tritt der Master-Prozess in die Signalüberwachungslogik ein und wartet auf das Exit-Signal des Worker-Prozesses (nachdem der Worker-Prozess beendet wurde, sendet das System automatisch ein SIGHCLD-Signal an den Master-Prozess, und der Master-Prozess erstellt den untergeordneten Prozess neu und ersetzt ihn der fehlende untergeordnete Prozess), Master Der Prozess hört auch auf das Stoppsignal (SIGINT) und das Signal für den reibungslosen Neustart des Dienstes (SIGHUP), die vom Workermand-Skript gesendet werden

Der Worker-Prozess ist ein vom Master-Prozess abgeleiteter untergeordneter Prozess und erbt automatisch den Listening-Socket des Master-Prozesses. Jeder Worker-Prozess akzeptiert und verarbeitet Client-Verbindungen unabhängig.

Das Master-Worker-Modell eignet sich besser für einfache Geschäftsanwendungen oder Kurzverbindungsanwendungen

Der Workflow und die Beziehung zwischen den Prozessen des Master-Gateway-Worker-Modells sind wie folgt:

[Fortgeschritten] Was sind die Unterschiede und Gemeinsamkeiten zwischen Workman und Swoole?

Beschreibung des Master-Gateway-Worker-Modells:

Dieses Modell verfügt über eine zusätzliche Gateway-Prozessgruppe. Der Workflow ist grundsätzlich der gleiche wie beim Master-Worker-Modell Der Unterschied besteht darin, dass der Worker-Prozess nicht direkt mit dem Client arbeitet. Es gibt einen zusätzlichen Gateway-Prozess zwischen dem Client und dem Worker-Prozess. Das Gateway verarbeitet Netzwerk-E/A und hält die lange Verbindung des Clients aufrecht.

Das Master-Gateway-Worker-Modell eignet sich sehr gut für Langzeitverbindungsanwendungen.

Wenn unser Geschäftscode Swoole und Workerman synchron blockierend verwendet, möchte Swoole Nginx + FPM und Workerman kombinieren ist nur äquivalent zu Nginx

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen