I was wondering about the best practices in synchronizing multiple azure instances that run the same role. More precisely, I want to prevent several worker roles to work on the same work-unit.
Azure queues do not seem to help on this matter. One option is to use an sql table with locks and stored procedures; but using sql synchronization in Azure seems a bit awkward.
Any ideas?
Edit, my detailed(but simplified problem) is as follows:
- There are n targets.
- A unit of work must be done on each target at a specified interval (say 30 seconds - but it is different for each target).
- I have m workers (hosted in h instances).
- Processing a unit of work could take anything between 10 seconds and 1 hour.
The idea is that I have a scheduler that puts units of work in an Azure queue, and each of the m workers will read these and process them.
The problem:
- worker1 starts working on unit1 (which is regarding target1) - this one will take long, say 10 minutes
- 30 seconds pass
- the scheduler puts another unit of work for target1, say unit13
- worker2 starts working on unit13, against the same target1 - not good
I have some ideas, but they don't seem cloudy enough, so I am interested to see what solutions would you apply for this problem.