更新策略決定執行副本如何替換。Operator 或 Admin 在應用程式設定中設定這些字段;它會影響設定更新和重啟等需要重新建立容器的操作。
字段與預設值
| 字段 | 預設值 | 作用 |
|---|---|---|
| 並行度 | 全部 | 每輪同時更新的副本數量 |
| 順序 | StopFirst | 先停止舊副本,再啟動新副本 |
| 觀察時間 | 60 秒 | 判斷新任務失敗的觀察窗口 |
| 最大失敗比例 | 0% | 超過閾值時觸發失敗動作 |
| 失敗動作 | Rollback | 更新失敗後嘗試回到上一份設定 |
觀察時間不是兩批更新之間固定等待的延遲,也不是業務就緒檢查。應用程式需要業務回應驗證時設定 XHealth 或 Guardian。
選擇更新順序
StopFirst 先停止舊實例,額外容量需求較低,但單副本應用程式可能中斷服務。
StartFirst 先啟動新實例,新舊副本可能短暫重疊。它需要足夠資源和可用調度位置,應用程式本身也必須允許並行執行。僅選擇 StartFirst 並不能保證零停機,尤其當進程執行後仍需要較長初始化時間時。
使用本地資料的資料庫應特別注意同一資料目錄的併發存取。不要未經確認讓新舊資料庫進程同時操作同一份資料。
選擇並行度與失敗動作
多個無狀態副本可使用較小並行度,逐批替換並觀察業務。並行處理全部副本會擴大一次變更的影響範圍。
| 失敗動作 | 含義 |
|---|---|
| Continue | 繼續更新,需要操作者持續觀察 |
| Pause | 暫停更新,等待人工判斷 |
| Rollback | 嘗試恢復可用的上一份設定 |
回復不恢復業務資料,也不提供任意歷史版本選擇。當前回復執行時並行處理全部副本,失敗動作是繼續,繼承更新順序、觀察時間和失敗比例;不能假定回復與正向更新的並行度完全相同。
修改策略前檢查
- 當前應用程式是否有足夠副本承擔業務。
- 伺服器是否能容納新舊實例重疊。
- 每台伺服器副本上限和標籤是否允許更新。
- 應用程式啟動、連接排空和資料兼容是否滿足所選方式。
- 是否需要啟用發佈驗證。