表明 Azure 工作者角色在处理时不应缩减
Signal that an Azure worker role should not be scaled down while processing
我们有一个启用了自动缩放的 Azure 云服务。我们认为我们的一些消息偶尔会被一台机器处理,而这台机器随后会被自动缩减进程关闭。这意味着消息的出队计数会增加,如果这种情况发生几次,我们会在消息再次出队时将其标记为失败(我们让消息尝试处理两次)
auto scaling 选择关闭哪台机器纯粹是基于 CPU worker 角色主机进程的使用情况?
有没有办法向 Azure 基础结构发出信号,表明某台机器不应关闭?
您不能拒绝角色实例内的关闭,但您可以延迟它,在OnStop()
内(我相信您最多可以延迟 5 分钟) .
您可能希望阻止角色实例在完成其当前项目时吸收更多队列消息,这应该非常简单(例如,在 OnStop()
中设置一个布尔值队列读取代码在获取另一条队列消息之前进行检查)。
您在设计应用程序时考虑到了错误的期望。任何实例随时消失在无处都是完全可以的。也许它会被关闭,也许它只是崩溃。您的应用程序应该能够处理这个。您需要对 "abandoned" 消息进行逻辑处理,并且 "abandoning" 不应被视为通常的失败。也许你想要一个计数,但至少应该是一个单独的计数器。
我们有一个启用了自动缩放的 Azure 云服务。我们认为我们的一些消息偶尔会被一台机器处理,而这台机器随后会被自动缩减进程关闭。这意味着消息的出队计数会增加,如果这种情况发生几次,我们会在消息再次出队时将其标记为失败(我们让消息尝试处理两次)
auto scaling 选择关闭哪台机器纯粹是基于 CPU worker 角色主机进程的使用情况?
有没有办法向 Azure 基础结构发出信号,表明某台机器不应关闭?
您不能拒绝角色实例内的关闭,但您可以延迟它,在OnStop()
内(我相信您最多可以延迟 5 分钟) .
您可能希望阻止角色实例在完成其当前项目时吸收更多队列消息,这应该非常简单(例如,在 OnStop()
中设置一个布尔值队列读取代码在获取另一条队列消息之前进行检查)。
您在设计应用程序时考虑到了错误的期望。任何实例随时消失在无处都是完全可以的。也许它会被关闭,也许它只是崩溃。您的应用程序应该能够处理这个。您需要对 "abandoned" 消息进行逻辑处理,并且 "abandoning" 不应被视为通常的失败。也许你想要一个计数,但至少应该是一个单独的计数器。