Die Definition, die der Autor am einfachsten versteht, sind mehrere Prozesse, die gleichzeitig ablaufen und von denen jeder Teil einer Reihe von Prozessphasen ist, die miteinander in Beziehung stehen.
Die Analogie lautet wie folgt: Stellen Sie sich einen Prozessablauf für routinemäßige Datenbank-Autobackups vor, bei dem viele Datenbanken gesichert werden müssen. Für das Backup selbst verwenden wir das Programm go, kein Shell-Skript. In groben Zügen könnte eine Reihe von Prozessschritten, die durchgeführt werden, wie folgt aussehen.
A. Führen Sie einen Dump-Vorgang für die Datenbank durch. Die Ausgabe erfolgt in Form vieler Dateien, die in einem Ordner gespeichert werden.
B. Die Dump-Dateien werden dann im .zip- oder .tar-.gz-Format (zum Beispiel) archiviert
C. Die Archivdatei wird an einen Backup-Server gesendet, zum Beispiel AWS S3.
Wenn Sie den obigen Fall beachten, könnte es hinsichtlich der Leistung besser sein, wenn der Backup-Prozess für viele Datenbanken parallel durchgeführt wird. und dem stimmt der Autor zu.
Und es wäre sogar noch besser, wenn die Prozesse für jeden Datenbanksicherungsprozess A, B und C gleichzeitig ausgeführt würden, indem die drei Prozesse (A, B, C) zu einem gleichzeitigen Prozess gemacht würden, dann würde dies die E/A tun effizienter sein. Später, zwischen den Prozessen A, B und C, bleibt die Ausführung sequentiell (da sie sequentiell ablaufen muss. Es ist nicht zulässig, wenn beispielsweise B zuerst und dann A ausgeführt wird); Die Goroutine, die für die Ausführung von Prozess A verantwortlich sein wird, ist jedoch vollständig. wir können mit Ausführung B (die die nächste Stufe von Prozess A ist) sowie der Ausführung anderer Prozesse (einer anderen Datenbank) fortfahren; parallel. Damit die Goroutine, die A verarbeitet, nicht inaktiv wird.
Bitte beachten Sie die folgende Visualisierung. Die Spalte ist eine Darstellung von Goroutinen, die gleichzeitig ausgeführt werden. Da es sich bei den drei Goroutinen jedoch um eine Reihe von Prozessen handelt, sind die Prozesse immer sequentiell, während die Zeilen eine Sequenz darstellen.
In Go ist der Prozess in Form einer Goroutine, der ausgeführt wird, im Allgemeinen gleichzeitig, aber im Flow muss er sequentiell sein, es wird Pipeline genannt, also nehmen wir zunächst einfach an, dass Pipeline A eine Goroutine für den Prozess ist A, Pipeline B ist Goroutine B und so weiter.
Um das Verständnis der Tabelle zu erleichtern, folgen Sie bitte der Reihenfolge der Erklärung:
In diesem Beispiel gehen wir davon aus, dass Pipeline A nur eine Goroutine hat, Pipeline B hat auch eine Goroutine und Pipeline C auch. Aber tatsächlich kann es in der realen Implementierung viele Goroutinen für jede Pipeline geben (viele Goroutinen für Pipeline A, viele Goroutinen für Pipeline B, viele Goroutinen für Pipeline C).
Ich hoffe, dass mein Schreiben es erklären kann. Auch wenn es nicht klar ist, ist das Internet mit LAN-Quellen offen.
Das obige ist der detaillierte Inhalt vonPipeline-Konzept. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!