Ho un database a cui accedono diversi server, chiamiamoli lavoratori. Questi lavoratori prendono un elemento dal database, eseguono alcune operazioni su di esso e quindi lo aggiornano nuovamente nel database. Anche i lavoratori sono volatili, possono esserne in numero e possono morire / iniziare in qualsiasi momento.
Il mio problema è il coordinamento delle risorse tra i lavoratori. Voglio assicurarmi che non ci siano 2 lavoratori che lavorano sullo stesso articolo. Voglio anche assicurarmi che se un lavoratore muore mentre lavorava su un oggetto, questo elemento verrà rilasciato su un altro server (immediatamente o tramite timeout).
Come posso garantire questo coordinamento? So di poter implementare alcune logiche personalizzate utilizzando le transazioni di database e alcuni tipi di rilevamento / monitoraggio dei server.
Questo sembra un problema comune, ma sto facendo fatica a cercare su Google una soluzione, non so quali termini cercare.