5

Windows Azure 操作系统是否会不时自动重新启动或重置正在运行的辅助角色?或者,如果我在 Run() 方法中有一个循环,我可以依靠我的 Worker 角色无限运行的事实吗?

4

2 回答 2

3

角色实例(无论是 Worker 还是 Web)至少每月回收一次,因为 Guest OS 每月更新一次。主机操作系统每季度更新一次,可能会导致额外的角色回收(假设主机和来宾更新是分开执行的)。

话虽如此:您可以通过指定要使用的客户操作系统版本来选择不自动更新到最新的客户操作系统。您不能选择退出主机操作系统更新。

通常,您不应依赖无限运行的角色实例。您需要假设将来会重新启动。除了主机操作系统更新之外,还会发生硬件故障。

有关来宾操作系统更新的更多信息,请参见此处,有关主机操作系统更新的信息,请参见此处。

于 2011-12-20T15:39:54.093 回答
1

在任何情况下,您都不能依赖主机连续运行 - 它有时会因更新而停止,并且可能因任何原因而崩溃。因此,您的代码应该知道并定期设置检查点并能够恢复。

所以是的,你可以有一个while( true ) doStuff()循环,但你必须设计你的代码,使其影响全局存储的操作——SQL Azure、blob、队列和表——始终保持该存储处于一致状态。这样,如果您的循环被中断(由于崩溃或异常中止正在运行的线程),您的代码可以在角色重新启动后恢复。

于 2011-12-20T15:43:52.390 回答