Azure 角色间同步

标签 azure synchronization azure-worker-roles instances

我想知道同步运行相同角色的多个 Azure 实例的最佳实践。 更准确地说,我想防止多个工作角色在同一个工作单元上工作。

Azure 队列似乎对此事没有帮助。 一种选择是使用带有锁和存储过程的 sql 表;但是在Azure中使用sql同步似乎有点尴尬。

有什么想法吗?

编辑,我的详细(但简化的问题)如下:

  • n 个目标。
  • 必须以指定的时间间隔(例如 30 秒 - 但每个目标都不同)对每个目标完成一个工作单元。
  • 我有 m 个工作线程(托管在 h 个实例中)。
  • 处理一个工作单元可能需要 10 秒到 1 小时之间的时间。

我的想法是,我有一个调度程序,它将工作单元放入 Azure 队列中,每个 m 个工作人员都会读取这些工作单元并进行处理。

问题:

  • worker1 开始处理 unit1(与 target1 有关) - 这将需要很长时间,比如 10 分钟
  • 30 秒过去了
  • 调度程序为target1放置另一个工作单元,例如unit13
  • worker2 开始在 unit13 上工作,针对相同的 target1 - 不好

我有一些想法,但它们似乎不够多云,所以我很想知道您会针对这个问题应用什么解决方案。

最佳答案

我刚刚写了几篇关于使用 blob 租约来做此类事情的博客文章。请参阅http://blog.smarx.com/posts/managing-concurrency-in-windows-azure-with-leaseshttp://blog.smarx.com/posts/building-a-task-scheduler-in-windows-azure .

关于Azure 角色间同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258692/

相关文章:

java - 其实例为 volatile 的 Singleton 类是否使实例数据再次加载?

azure - 如何在运行时更新 Windows Azure 辅助角色

Azure服务总线: Can't add rules to a subscription under Topics with partitioning enabled?

c# - Web 应用程序在 Visual Studio 和 Azure 上显示不同的屏幕

sql - 在 Azure SQL 数据库中使用 "INSERT INTO"SQL 查询时出错

azure - 为什么无法将数据存储在 Azure 计算实例中?

c# - 在 Azure 辅助角色中使用 kernel32 CreateThread/TerminateThread

azure - Terraform 通过服务主体和客户端 key 向 azure 进行身份验证

multithreading - 锁定VS内存屏障

javascript - 同步 Javascript 和 PHP