我正在編寫一個c#windows服務,它將執行一些後臺處理 - 基本上它是一個工作隊列的使用者。高可靠性服務的設計考慮
它不需要停下來(停止處理新項目),如果它停下來,我需要得到通知。
對於a)確保此類服務儘可能可靠以及b)如果出現問題時發出通知,有哪些設計準則和注意事項?例如,我曾考慮創建一個觀察器線程,其唯一的工作是確保工作線程仍在處理作業。
我正在編寫一個c#windows服務,它將執行一些後臺處理 - 基本上它是一個工作隊列的使用者。高可靠性服務的設計考慮
它不需要停下來(停止處理新項目),如果它停下來,我需要得到通知。
對於a)確保此類服務儘可能可靠以及b)如果出現問題時發出通知,有哪些設計準則和注意事項?例如,我曾考慮創建一個觀察器線程,其唯一的工作是確保工作線程仍在處理作業。
在這裏您可以做很多事情來幫助提高可靠性,同時衡量您的解決方案是否能夠滿足您的需求。
測試
首先雖然,你經歷將需要一個非常堅實的一個,測試對於那些「意外」的情況下,網絡連接丟失,等等確保測試過程你正在測試這些,看看發生了什麼。失敗通知,可以是一個「混合包」。例如,如果您沒有可用的網絡連接,則無法發送電子郵件。
正確的代碼設計
除了建立有效的測試方案,確保您的代碼是一個防彈越好,因爲你正在創建一個Windows服務,確保您捕捉,記錄,並處理所有可能的錯誤,就像錯誤冒起OS一樣,你的服務將會下降。
監測
考慮將監控,在我每天的工作,我們有兩種類型的監視中,錯誤報告的Windows事件日誌在某些情況下,微軟MOM用於通知我們任何/環境中正在發生的所有問題。我們使用的第二個過程是第二個計劃作業,每隔X分鐘驗證關鍵作業是否處於「已啓動」狀態,如果未處於啓動狀態,則會重新啓動它。不優雅,但它的作品。
我覺得MOM和/或太陽風或您的系統管理員可能會使用要監視的服務部署&採取適當行動的機器,其他一些監控應用(發送電子郵件,環電話:)