azure - 如何为每个工作角色_实例_(而不是角色)进行配置

标签 azure quartz.net azure-worker-roles

给定:一个 Worker 角色 + 多个 Quartz.net 作业。 Quartz 作业与主机无关,并以 Worker 角色执行。

一个辅助角色可以扩展到多个实例。

目标是:能够定义运行时在哪个实例中运行哪个作业(或者仅使用配置来定义它,无需更改代码)。例如:

  • MyRole 实例 1:Job1、Job2、Job3
  • MyRole 实例 2:Job4,
  • MyRole 实例 3:Job4,
  • MyRole 实例 4:Job4,
  • MyRole 实例 5:Job5、Job6

在我的示例中,Job4 接收了大量负载。所以我希望它能在更多实例上运行。而且我还希望它在运行时可扩展(或者至少通过配置,无需更改代码)。

据我所知,每个实例不可能有 azure 配置(仅每个角色本身)。网上搜索类似问题没有得到任何结果。

问题:有人遇到过类似的情况吗?最好的方法是什么?非常感谢任何其他设计建议。谢谢。

最佳答案

这更多的是一个体系结构问题,而不是 Azure 特有的问题。最常见的解决方案是设置一个“代理”,每个实例/进程都会联系该代理并请求其单独的工作负载。无论您部署的解决方案是什么平台,挑战都在于如何 a) 识别代理,b) 确保代理管理的“状态”信息在代理进程终止时得以保留。

在 Azure 中解决这些问题的最常见方法是使用带有租约的 Blob,该 Blob 允许“自选”代理(获得租约的第一个进程是代理),并存储两者代理的地址和代理的状态(存储在 blob 中的元数据)。然后,您可以按照最适合您的任务分配需求的方式将分配作业的逻辑放入此代理中。

关于azure - 如何为每个工作角色_实例_(而不是角色)进行配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24455750/

相关文章:

c# - 跨午夜的 Quartz.NET 每日时间间隔

quartz-scheduler - 如何正确检测并删除无法使用 Quartz.net 恢复的作业?

c# - Azure 存储(经典)与 Azure 存储 (V2) 代码不适用于 V2 存储

Azure CloudService 角色启动顺序

azure - Connect-AzAccount - 如何避免 azure 设备身份验证?

sql-server - SQL Azure CONTAINS 不返回所有结果

c# - 我可以为无服务器 Azure Cosmos DB 动态创建表(Azure 表)吗?

python - Azure 语音转文本 - 连续识别

c# - Quartz.NET - 暂停的作业

visual-studio - 将 Windows Azure 项目中的 Web 角色部署到网站