Bygg en jobbkö som skalar ut snyggt
Det finns en jobbkö i databasen — tabellen jobs med statusen pending för de rader som inte körts. Fem arbetare tittar på den samtidigt: var och en vill ta det äldsta jobbet och markera det som "pågår". Ett vanligt radnivålås med en gräns gör att alla fem arbetare hopar sig på samma rad och serialiseras. Botemedlet är att hoppa över de rader som redan är låsta och ta nästa lediga: varje arbetare får sitt eget jobb och parallellismen fungerar utan kollisioner.
jobs(id SERIAL, status, payload) innehåller fyra pending-rader (a, b, c, d). Ta ett pending-jobb från jobs med det minsta id:t och växla det till running — de övriga tre förblir pending.
Logga in för att se historik över inskick
Logga inLogga in för att använda AI-mentorn
Logga in