繁体   English   中英

使用某些命令自动缩放云服务

[英]Autoscaling of Cloud services which works with some commands

我在 Azure 上将自定义工作器作为云服务(经典)。 我已经安排了工作时间 (5) 和其他时间 (20) 实例数量的自动缩放。

有时当一些工作人员正在处理命令时会出现问题,但这是营业时间的开始,因此实例被“杀死”(缩小)。 结果命令没有完成。 命令是来自 Azure 队列的消息。 所以基本上消息返回到队列。 但是另一个工人需要一些时间才能再次获取该消息。

所以问题是 - 只有在完成消息/命令的工作后,是否有一种自动扩展工作人员的方法?

请参阅如何停止 WebRole/WorkerRole 的单个实例/VM 中的答案

简而言之,您可以使用删除角色实例 API ( https://docs.microsoft.com/en-us/previous-versions/azure/reference/dn469418(v=azure.100) ) 来指定您想要的角色实例去关机。 但是,这不适用于自动缩放,您必须编写一些代码来确定要关闭哪些实例。

通常,更好的解决方案是确保辅助角色实例正在执行的工作是幂等的并且可以轻松恢复。 听起来您已经有了这种设计,但是它所花费的时间存在问题,在这种情况下,您可能有机会将每个“命令”分解为更小的工作单元,以便在处理该命令时可以保持进度稍后被一个新实例接收。

你的角色的OnStop会在它被拆除时被调用。 根据文档:

一旦 OnStop 方法完成执行,角色将被停止。 如果其他代码需要时间才能正常退出,您应该保持 OnStop 线程忙碌,直到执行完成。

您可以利用这 5 分钟的宽限期从角色实例中清除活动工作。 如果您在整个任务中共享一个取消令牌,例如,您可以在OnStop期间取消OnStop工作并处理取消以立即使工作再次在队列中可见,而不是等待超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM