增加/减少Azure中的工作者角色实例数

jfa*_*zio 2 java azure

我可以使用Azure4Java包中的ServiceManagementRest类直接从Java增加Worker Role(WR)实例的数量.请参阅教程Azure Management by Java.

我的问题是,当我减少WR实例的数量时,我可以决定关闭哪些WR实例吗?因为,对于云弹性的想法,我会将实例停在IDLE状态而不是处于EXECUTING状态的实例.

此致,法布里奇奥

Dav*_*gon 7

您无法选择要关闭的实例; 您只需更改实例计数,然后结构控制器负责关闭实例.一个原因是由于故障域和SLA:如果你有2个故障域中的4个实例,并关闭故障域0中的两个实例,那么现在你在故障域1中有2个实例.所以现在你有两个也许是在同一个机架中的实例,并且该机架脱机.现在,您有零个实例运行一段时间.

处理实例关闭是一种常见的情况,解决此问题的典型模式是利用队列来缓冲工作负载,然后让工作者角色实例使用这些队列中的工作项.如果在工作完成之前关闭实例,则该项最终会重新出现在队列中,而另一个实例可以完成工作.

这种模式需要幂等性,这有时是一种挑战.通过最近对Windows Azure队列的更新,您现在可以修改队列消息,这使得这更容易 - 您可以在完成工作项处理的各个阶段时向队列消息添加信息.然后,如果您的实例在工作完成之前关闭,则下一个接收它的工作人员可以从"开始"以外的点恢复.

还有一个细节:你应该能够处理Stopping事件,并告诉"实例停止"停止从队列中读取(可能设置一个标志).然后,重写OnStop(),并在返回之前等待进程内操作完成.如果仍在进行中的操作将花费超过5分钟,您可能必须获得创意......