【发布时间】:2013-02-28 20:29:47
【问题描述】:
我想知道同步运行相同角色的多个 azure 实例的最佳实践。 更准确地说,我想防止多个工人角色在同一个工作单元上工作。
Azure 队列似乎对这个问题没有帮助。 一种选择是使用带有锁和存储过程的 sql 表;但是在 Azure 中使用 sql 同步似乎有点别扭。
有什么想法吗?
编辑,我的详细(但简化的问题)如下:
- 有 n 个目标。
- 必须以指定的时间间隔(例如 30 秒 - 但每个目标不同)在每个目标上完成一个工作单元。
- 我有 m 个工作人员(托管在 h 个实例中)。
- 处理一个工作单元可能需要 10 秒到 1 小时之间的时间。
我的想法是我有一个 调度程序,它将工作单元放入 Azure 队列中,每个 m 个工作人员都会读取并处理它们。 p>
问题:
- worker1 开始在 unit1 上工作(这是关于 target1) - 这需要很长时间,比如 10 分钟
- 30 秒过去了
- 调度程序为 target1 放置另一个工作单元,例如 unit13
- worker2 开始在 unit13 上工作,针对相同的 target1 - 不好
我有一些想法,但它们似乎还不够多云,所以我很想看看你会为这个问题应用什么解决方案。
【问题讨论】:
-
为什么你认为队列在这里不起作用?队列是协调需要完成一次的工作的传统方式。肯定有一些细微差别,但 90% 的情况是排队。
-
我同意大卫的回答,队列通常是一个不错的选择。虽然有时你不能排队。但如果是这种情况,请详细描述您的问题,我们会尽力提供更好的答案。
-
同时,我已经向 Azure 的 UserVoice 发布了一个想法 - entlib.uservoice.com/forums/… 在队列无法工作的情况下可能有用
标签: azure synchronization azure-worker-roles instances