Windows Azure操作系统是否会不时自动重新启动或重置正在运行的辅助角色?或者,如果我在Run()方法中有一个循环,我可以依赖我的Worker角色无限运行吗?
答案 0 :(得分:3)
角色实例(无论是工作者还是Web)每月至少回收一次,因为客户操作系统每月更新一次。主机操作系统每季度刷新一次,可能导致额外的角色回收(假设主机和访客更新分开执行)。
话虽如此:您可以选择不通过指定要使用的客户操作系统版本自动更新到最新的客户操作系统。您无法选择退出主机操作系统更新。
通常,您应该不依赖无限运行的角色实例。您需要假设将来会重新启动。除主机操作系统更新外,还有可能会发生的硬件故障。
答案 1 :(得分:1)
在任何情况下,您都不能依赖主机持续运行 - 它有时会因更新而停止,并且无论出于何种原因它都会崩溃。因此,您的代码应该知道并定期设置检查点并能够恢复。
所以是的,你可以有一个while( true ) doStuff()
循环,但你必须设计你的代码,使其影响全局存储的操作 - SQL Azure,blob,队列和表 - 使存储保持一致状态倍。这种方式应该中断你的循环(通过崩溃或中止正在运行的线程的异常),一旦角色重新启动,你的代码就可以恢复。