Heim > Backend-Entwicklung > Golang > Pipeline-Konzept

Pipeline-Konzept

王林
Freigeben: 2024-07-17 17:24:07
Original
1289 Leute haben es durchsucht

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.

  1. Wir benötigen eine Datenliste aller Datenbanken, die gesichert werden müssen, zusammen mit ihren Zugangsadressen und Anmeldeinformationen.
  2. Wir führen den Backup-Prozess entweder sequentiell (nach db1, beenden, fortfahren mit db2, fortfahren mit db3 usw.) oder parallel (db1, db2, db3 usw.) aus. Backup-Prozesse und andere werden gleichzeitig ausgeführt).
  3. Bei jedem Datenbanksicherungsprozess werden mehrere Prozesse ausgeführt

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.

Image description

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:

  1. Sequenz 1: Pipeline A führt einen Dump-Prozess von DB1 durch. Gleichzeitig sind die Pipelines B und C im Leerlauf. 2.Sequenz 2: Der Db1-Dump-Prozess ist abgeschlossen. Fahren Sie dann mit der nächsten Stufe fort, nämlich dem Db1-Datendump-Prozess, der von Pipeline B ausgeführt wird. Gleichzeitig führt Pipeline A den Db2-Dump-Prozess aus. Pipeline C ist immer noch inaktiv.
  2. Sequenz 3: Pipeline A führt den DB3-Dump-Prozess aus. Gleichzeitig hat Pipeline B den DB2-Archivierungsprozess noch nicht ausgeführt, der abgebrochen wurde, da die Archivierung von DB1 noch nicht abgeschlossen ist. Die Pipeline ist noch im Leerlauf.
  3. Sequenz 4: Der db1-Archivierungsprozess ist abgeschlossen, dann fahren Sie mit der nächsten Stufe fort, nämlich dem Senden des Archivs an den Sicherungsserver, dessen Prozess von Pipeline C abgewickelt wird. Gleichzeitig beginnt Pipeline B mit der Ausführung von db2 Daten-Dump-Archivierung und Pipeline-A-Dumping
  4. ... und so weiter.

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!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage