我想知道同步运行相同角色的多个 azure 实例的最佳实践。更准确地说,我想防止多个工人角色在同一个工作单元上工作。
Azure 队列似乎对这个问题没有帮助。一种选择是使用带有锁和存储过程的 sql 表;但是在 Azure 中使用 sql 同步似乎有点尴尬。
有任何想法吗?
编辑,我的详细(但简化的问题)如下:
- 有n 个目标。
- 必须以指定的间隔(比如 30 秒 - 但每个目标不同)在每个目标上完成一个工作单元。
- 我有m个工人(托管在h 个实例中)。
- 处理一个工作单元可能需要 10 秒到 1 小时之间的任何时间。
我的想法是我有一个调度程序,它将工作单元放在 Azure 队列中,并且m个工作人员中的每一个都将读取这些并处理它们。
问题:
- worker1开始在unit1上工作(这是关于target1) - 这需要很长时间,比如 10 分钟
- 30秒过去
- 调度程序为target1放置另一个工作单元,例如unit13
- worker2开始在unit13上工作,针对相同的target1 -不好
我有一些想法,但它们似乎不够多云,所以我很想看看你会为这个问题应用什么解决方案。