Vytvoř frontu úloh, která se čistě škáluje do šířky
V databázi je fronta úloh — tabulka jobs se stavem pending pro nezpracované řádky. Současně se na ni dívá pět workerů: každý chce uchopit nejstarší úlohu a označit ji jako „zpracovává se“. Obyčejný zámek na úrovni řádku s limitem způsobí, že se všech pět workerů nahromadí na stejném řádku a serializují se. Lékem je přeskočit řádky, které jsou již zamčené, a vzít další volný: každý worker dostane svou úlohu a paralelismus funguje bez kolizí.
jobs(id SERIAL, status, payload) obsahuje čtyři řádky ve stavu pending (a, b, c, d). Vezmi z jobs jednu pending úlohu s nejmenším id, přepni ji na running — zbývající tři zůstanou pending.
Přihlaste se, abyste viděli historii odevzdání
Přihlásit sePřihlaste se, abyste mohli použít AI mentora
Přihlásit se