2011-07-11 34 views
5

Windows Azure操作系統是否會不時自動重新啓動或重置正在運行的工作者角色?或者,如果我在Run()方法中有一個循環,我可以依靠這個事實:我的Worker角色無限運行?Azure Workerrole生命週期

回答

3

角色實例(無論是Worker還是Web)每月至少被回收一次,因爲Guest OS每月更新一次。主機操作系統每季度刷新一次,可能會導致額外的角色回收(假設主機和guest虛擬機更新單獨執行)。

話雖如此:通過指定要使用的客戶操作系統版本,您可以選擇不自動更新到最新的客戶操作系統。您無法退出主機操作系統更新。

一般來說,你應該而不是依賴於無限運行的角色實例。您需要假設將來會有重新啓動。除主機操作系統更新外,還有可能會發生的硬件故障。

有關客戶操作系統更新的更多信息,請參閱here;主機操作系統更新的here

1

在任何情況下,您都不能依賴主機連續運行 - 它有時會停止更新,並且無論出於何種原因它都會崩潰。所以你的代碼應該知道並定期設置檢查點並且能夠恢復。

所以是的,你可以有一個while(true) doStuff()循環,但是你必須設計你的代碼,以便它影響全局存儲的操作(SQL Azure,blob,隊列和表)始終保持一致的狀態。通過這種方式,應當中斷循環(通過崩潰或中止正在運行的線程的異常),一旦角色重新啓動,您的代碼就可以恢復。