【问题标题】:Signal that an Azure worker role should not be scaled down while processing在处理时不应缩小 Azure 辅助角色的信号
【发布时间】:2015-08-23 18:59:24
【问题描述】:

我们有一个启用了自动缩放的 Azure 云服务。我们认为我们的一些消息偶尔会被一台机器处理,该机器随后被自动缩减过程关闭。这意味着消息的出队计数会增加,如果这种情况发生几次,我们会在消息再次出队时将消息标记为失败(我们让消息尝试处理两次)

Auto Scaling 选择关闭哪台机器完全基于辅助角色主机进程的 CPU 使用率?

有没有办法向 Azure 基础架构发出信号,告知不应关闭某台机器?

【问题讨论】:

    标签: azure azure-worker-roles azure-cloud-services


    【解决方案1】:

    您在设计应用时考虑了错误的期望。任何实例在任何时候消失在任何地方都是完全可以的。也许它会被关闭,也许它只是崩溃。您的应用程序应该能够处理这个问题。您需要对“放弃”消息进行逻辑处理,并且不应将“放弃”视为通常的失败。也许你想要一个计数,但至少应该是一个单独的计数器。

    【讨论】:

    • 是的,这很公平。
    【解决方案2】:

    您不能拒绝角色实例中的关闭,但您可以延迟它,在OnStop() 中(我相信您最多可以延迟 5 分钟)。

    您可能希望阻止角色实例在完成其当前项目时摄取更多队列消息,这应该非常简单(例如,在OnStop() 中设置一个布尔值,即队列-在获取另一个队列消息之前读取代码检查)。

    【讨论】:

    • 我们的某些消息可能需要一个小时才能处理完。我希望 Azure 选择另一个实例来杀死。
    • 如果您的消息耗时那么长,并且如果它们是多阶段流​​程,您可以在每个阶段完成时随时修改您的消息。这样,如果一个实例死亡并且消息重新可见,下一个阅读器可以在管道中间的某个地方获取而不是重新开始。
    • 是的,我已经考虑过了,我想我只能硬着头皮了:)
    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多