2012-06-21 231 views
1
  1. 假設我們在N個應用程序服務器上同時運行N個相同的Windows服務(使用C#/ .NET開發)。 '不幸',每項服務都有自己的內存狀態(比如說,「在下午10點我需要執行一項工作」)。在應用程序服務器之間同步服務狀態

  2. 通過前端Web UI用戶可以將其中一個服務的狀態(例如,將作業的開始時間從10更改爲12)更改。

我的問題:什麼是在用戶更改狀態後同步這些服務之間的狀態的最佳實踐? (最好在.NET平臺上)。

p.s.您可能想知道爲什麼我們在不同的服務器上運行相同的服務。這是因爲管理者認爲冗餘可以防止單點故障。但是當服務實例擁有自己的內存狀態時,它也會帶來上述問題,用戶可以通過用戶界面來更改它們。

這裏的任何建議表示讚賞!

回答

0

聽起來像你正在使用本地服務狀態作爲主要配置/設置/等。爲每個服務實例。既然你希望它們保持同步,那就意味着更新每個操作實例。

我能想到許多如何解決這個辦法,但根據您所提供我會去與集中配置與更新輪詢的信息:

  • 以用於配置中央DB /設置,如工作時間。
  • 初始化時,所有服務都從中央數據庫讀取設置/配置並將它們以狀態方式應用於服務實例。
  • 管理用戶界面只是將數據保存到配置/設置數據庫。
  • 所有服務定期從DB查詢更新並相應地應用。

這是一個簡單的分佈式結構,使每個服務負責獲取其設置以便操作(拉模型),並且比向每個服務實例(推模型)發出通知更容易管理。它有一個額外的好處,即允許您稍後添加更多的服務器和服務實例,而無需更改應用程序代碼或修改任何配置信息。

+0

謝謝! (經過這麼多年:)) –

相關問題