2015-04-30 93 views
0

您是否可以推薦一些關於軟件體系結構模式的文獻,以便在處理軟件更新/版本時組合可提供高度「連續性」的服務。服務連續性體系結構

例如,在一個企業中,有多個應用程序相互連接,並且依賴於它們的資源,當然,就像數據庫一樣,執行更新/發佈時如何實現零停機?典型場景包括一次更改DB設計和多個服務合同。

回答

1

無狀態可能是構建服務層的唯一最重要的因素,可以通過零宕機進行升級。這使您可以啓動新版本的軟件,執行負載平衡器切換,並關閉舊版本。

這可以通過有狀態系統來實現,但是您必須能夠監視它們的現有連接,並在等待現有會話過期時更仔細地控制負載平衡器。

數據庫設計的變化要複雜得多,通常只包含規劃,以便變更始終向後兼容。您需要確保您的數據庫允許同時運行舊版本和新版本的服務。

這並不意味着你不能做出突破性改變,它只是意味着你通常需要分兩步進行。例如,重命名一個字段變爲:

  1. 添加新列
  2. 部署服務,從舊列讀取數據時沒有出現在新列,但只寫入新列
  3. 移動的新版本數據到新列
  4. 部署新服務,只讀取/寫入新列
  5. 刪除舊列

這是一個巨大的疼痛,BU對於某些您確實需要的系統需要這種正常運行時間要求。當需要很長時間(有時幾周)將數據移動到新位置時,我也必須這樣做。

最後,這部分是非常重要的。確保你的服務是自治的。沒有多個服務讀取/寫入同一張表。這是一個巨大的混亂,同時遷移多個服務是一場噩夢。