Мне было интересно узнать о лучших методах синхронизации нескольких экземпляров Azure, выполняющих одну и ту же роль.Точнее, я хочу запретить нескольким рабочим ролям работать на одном и том же рабочем модуле.
Очереди Azure, похоже, не помогают в этом вопросе.Одним из вариантов является использование таблицы SQL с блокировками и хранимыми процедурами;но использование синхронизации sql в Azure кажется немного неловким.
Есть идеи?
Правка, моя подробная (но упрощенная проблема) следующая:
- Есть n целей.
- Единица работы должна быть выполнена для каждой цели через определенный интервал (скажем, 30 секунд - но она различна для каждой цели).
- Iиметь м рабочих (размещено в ч экземплярах).
- Обработка единицы работы может занять от 10 секунд до 1 часа.
Идея состоит в том, что у меня есть планировщик , который помещает единицы работы в очередь Azure, и каждый из m рабочих будет читать их и обрабатывать.
Проблема:
- worker1 начинает работать на unit1 (что касается target1 ) - это займет много времени, скажем10 минут
- 30 секунд прохода
- планировщик выставляет еще одну единицу работы для target1 , скажем unit13
- работник2 начинает работать на unit13 , против того же target1 - не хорошо
У меня есть некоторые идеи, но они не кажутся облачными , поэтому мне интересно посмотреть, какие решения вы бы применили для этой проблемы.