Как да организираме разпределена обработка на отказоустойчиви разпределени задачи

Както виждам тази задача: ще има някакъв централен работник, който ще знае къде и с каква честота да поема задачи. В точното време той ще създаде задачи и ще ги добави към опашката. Спомагателните работници не знаят нищо за честотата, те само следят опашката, взимат и изпълняват задачи от нея. Ако работникът падне, екипът няма да забележи загубата на боеца - други работници ще продължат да работят. Всичко е правилно или подобни проблеми се решават по различен начин?
И имам още един въпрос - как да съхранявам задачи? Докато виждаме плоча в базата данни на MS sql, към която основният работник ще добавя задачи, а други ще вземат редове със задачи. Но не е напълно ясно дали е възможно да се направи появата на задачи, управлявани от събития, и не така, че всеки работник да проверява базата данни на интервали.?
Друг въпрос, ако работник се опита да вземе данни, постави ключалка на масата, така че друг някой да не поеме паралелно задачата и в същото време да падне, тогава ключалката ще остане да виси, как да се справи с нея?