Bouw een job-wachtrij die netjes opschaalt
Er is een job-wachtrij in de database — tabel jobs met status pending voor de nog niet uitgevoerde rijen. Vijf workers kijken er gelijktijdig naar: elk wil de oudste job grijpen en die als "in uitvoering" markeren. Een gewone lock op rijniveau met een limiet zorgt ervoor dat alle vijf workers op dezelfde rij stuklopen en serialiseren. De oplossing is om de rijen die al gelockt zijn over te slaan en de volgende vrije te nemen: elke worker krijgt zijn eigen job en de parallelliteit werkt zonder botsingen.
jobs(id SERIAL, status, payload) bevat vier pending-rijen (a, b, c, d). Grijp uit jobs één pending-job met de kleinste id en zet die op running — de andere drie blijven pending.
Log in om je inzendingsgeschiedenis te zien
InloggenLog in om de AI-mentor te gebruiken
Inloggen