Скажем, у меня есть 2 сервера, которые общаются с одной и той же транзакционной базой данных.
Я хочу настроить ее так, чтобы только один из этих двух серверов выполнял заданное действие по времени (по сути, используя базу данных для обеспечения синхронизации).).Из того, что я слышал, что-то вроде этого может работать:
Скажем, моя таблица TABLE имеет 2 столбца, ID и STATUS.Если я настрою код следующим образом:
update TABLE set STATUS = 'processing' where ID = 1234 and STATUS != 'processing'
if (weHaveModifiedAtLeastOneRow)
{
// do critical section stuff here
// This is code that we only want one server to run, not both.
update TABLE set STATUS = 'free' where ID = 1234
}
else
{
// We failed to get the lock, so do nothing
}
Будет ли это работать, или я здесь упускаю некоторые понятия?