【问题标题】:How can I have configuration per worker role _instance_ (not role)我怎样才能有每个工作角色的配置_instance_(不是角色)
【发布时间】:2015-04-10 03:13:44
【问题描述】:

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

一个工作角色可以扩展到多个实例。

目标是:能够在运行时定义在什么实例中运行什么作业(或仅通过配置定义它,无需更改代码)。例如:

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

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

AFAIK 每个实例不可能有 azure 配置(仅每个角色本身)。网上搜索类似的问题没有结果。

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

【问题讨论】:

    标签: azure quartz.net azure-worker-roles


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。这说得通。在 Azure 的情况下,您能否澄清一下实例如何准确地向“代理”询问工作项?我认为这可能只是对“代理”端点的服务调用。还是别的什么?
    • 是的,和/或使用队列机制进行消息交换。如果要完成一堆任务,则通常使用后一种模式。代理可以将它们放入队列中,让处理器获取并处理它们。
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 2020-09-06
    • 2022-10-23
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多