Ich entworfene eine Multi-Thread-Datenpipeline, die auf dem Service A beruht. Ich verfolge ein Produzenten-Verbraucher-Design, um eine Liste von Objekten zu verarbeiten. Wo mein Produzent die API von Service B aufruft, um Aufgaben für jedes Objekt abzurufen (könnte Millionen von Aufgaben pro Objekt sein) und Verbraucher die Aufgaben verarbeitet und sie in Service c. < /p>
Meine Frage verarbeitet Wie kann ich dies so entwerfen, dass ich, wenn der Service B ausfällt (der Produzent kann keine Aufgaben erhält) oder der Service C ausfällt (Verbraucher kann Aufgaben nicht bearbeiten), anmutig aufhören und meinen Fortschritt speichern.
Ich kann nicht zuerst alle meine Aufgaben in einem Blockingqueue speichern, da es zu viele Aufgaben wären, um in Memory zu handhaben. Aufgaben in einem DB, aber dann würde es meine Pipeline dramatisch verlangsamen, da sie jetzt Schreib-/Lesevorgänge ausführen muss. Wäre es nicht eine Verschwendung von DB -Raum, wenn ich Millionen von Aufgaben speichere, die ich nur einmal bearbeiten muss? Ich müsste sie alle nach dem Verarbeitungsabschluss alle aus der DB löschen, so dass es fast ein Aufwandsverschwendung erscheint?
Wie man bei der Bearbeitung von Aufgaben mit Multithread -Pipeline anmutig scheitert ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Umgang mit Ausnahmen in Iobservable Pipeline und ermöglicht die Pipeline fort
by Anonymous » » in C# - 0 Replies
- 19 Views
-
Last post by Anonymous
-
-
-
Umgang mit Ausnahmen in Iobservable Pipeline und ermöglicht die Pipeline fort
by Anonymous » » in C# - 0 Replies
- 13 Views
-
Last post by Anonymous
-