Ich muss ein verteiltes System entwerfen, bei dem ein Scheduler Aufgaben an Worker in mehreren Knoten sendet. Jeder Aufgabe wird eine ID zugewiesen, und sie kann mehr als einmal ausgeführt werden, geplant vom Scheduler (normalerweise einmal pro Stunde).Verteilte Worker, die sicherstellen, dass eine einzelne Instanz einer Task ausgeführt wird
Meine einzige Anforderung ist, dass eine Aufgabe mit einer bestimmten ID nicht zweimal vom Cluster gleichzeitig ausgeführt werden soll. Ich kann mir ein Design vorstellen, bei dem der Scheduler eine Sperre für jede Aufgaben-ID hält und die Aufgabe an einen geeigneten Mitarbeiter sendet. Sobald der Worker fertig ist, sollte die Sperre aufgehoben werden und der Scheduler könnte sie erneut einplanen.
Was sollte mein Entwurf einschließen, um dies sicherzustellen. Ich mache mir Gedanken über Fälle, in denen eine Aufgabe an einen Arbeiter gesendet wird, der die Aufgabe startet, aber dann den Scheduler nicht darüber informiert.
Was wäre die beste Vorgehensweise in diesem Szenario, um sicherzustellen, dass immer nur eine einzige Instanz eines Jobs gleichzeitig ausgeführt wird?