Postav front úloh, ktorý sa škáluje bez kolízií
V databáze je front úloh — tabuľka jobs so stavom pending pre nevykonané riadky. Päť workerov sa naň pozerá súbežne: každý chce schmatnúť najstaršiu úlohu a označiť ju ako „v práci“. Bežný zámok na úrovni riadka s limitom spôsobí, že sa všetkých päť workerov nahromadí na tom istom riadku a serializuje sa. Liekom je preskočiť riadky, ktoré sú už zamknuté, a vziať ďalší voľný: každý worker dostane vlastnú úlohu a paralelizmus funguje bez kolízií.
jobs(id SERIAL, status, payload) obsahuje štyri riadky v stave pending (a, b, c, d). Vezmi z jobs jednu úlohu v stave pending s najmenším id, prepni ju na running — ostatné tri zostávajú pending.
Prihláste sa, aby ste videli históriu odoslaní
Prihlásiť saPrihláste sa, aby ste mohli používať AI mentora
Prihlásiť sa