Eine Job-Queue bauen, die sauber horizontal skaliert
In der Datenbank gibt es eine Job-Queue — die Tabelle jobs mit dem Status pending für die noch nicht ausgeführten Zeilen. Fünf Worker schauen gleichzeitig darauf: Jeder möchte den ältesten Job greifen und ihn als „in Bearbeitung" markieren. Eine gewöhnliche zeilenbezogene Sperre mit einem Limit führt dazu, dass sich alle fünf Worker auf derselben Zeile stauen und serialisiert werden. Die Abhilfe besteht darin, die bereits gesperrten Zeilen zu überspringen und die nächste freie zu nehmen: Jeder Worker erhält seinen eigenen Job, und die Parallelität funktioniert ohne Kollisionen.
jobs(id SERIAL, status, payload) enthält vier pending-Zeilen (a, b, c, d). Greife aus jobs einen pending-Job mit der kleinsten ID und setze ihn auf running — die anderen drei bleiben pending.
Melde dich an, um den Einreichungsverlauf zu sehen
AnmeldenMelde dich an, um den KI-Mentor zu nutzen
Anmelden