

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為您的 Managed Service for Apache Flink 應用程式啟用系統復原
<a name="how-system-rollbacks"></a>

透過系統復原功能，您可以在 Amazon Managed Service for Apache Flink 上實現更高可用性的執行中 Apache Flink 應用程式。選擇此組態可讓服務在 或 等動作`autoscaling`執行到程式碼`UpdateApplication`或組態錯誤時，自動將應用程式還原至先前執行的版本。

**注意**  
若要使用系統復原功能，您必須更新應用程式以選擇加入。根據預設，現有的應用程式不會自動使用系統復原。

## 運作方式
<a name="how-rollback-works"></a>

當您啟動應用程式操作時，例如更新或擴展動作，Amazon Managed Service for Apache Flink 會先嘗試執行該操作。如果偵測到阻止操作成功的問題，例如程式碼錯誤或許可不足，服務會自動啟動`RollbackApplication`操作。

轉返會嘗試將應用程式還原至先前成功執行的版本，以及相關聯的應用程式狀態。如果轉返成功，您的應用程式會使用先前的版本，以最短的停機時間繼續處理資料。如果自動轉返也失敗，Amazon Managed Service for Apache Flink 會將應用程式轉換為 `READY` 狀態，以便您可以採取進一步的動作，包括修正錯誤和重試操作。

您必須選擇加入，才能使用自動系統復原。從現在開始，您可以使用 主控台或 API 來啟用應用程式的所有操作。

`UpdateApplication` 動作的下列範例請求會啟用應用程式的系統復原：

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 1,
   "ApplicationConfigurationUpdate": { 
      "ApplicationSystemRollbackConfigurationUpdate": { 
         "RollbackEnabledUpdate": "true"
       }
    }
}
```

## 檢閱自動系統復原的常見案例
<a name="common-scenarios"></a>

下列案例說明自動系統復原的有利之處：
+ **應用程式更新：**如果您使用透過主要方法初始化 Flink 任務時出現錯誤的新程式碼來更新應用程式，則自動復原允許還原先前的工作版本。系統復原有幫助的其他更新案例包括：
  + 如果您的應用程式已更新為以高於 [maxParallelism](https://docs.aws.amazon.com/managed-flink/latest/java/how-scaling.html#how-scaling-auto) 的平行處理執行。
  + 如果您的應用程式已更新為在啟動 Flink 任務期間導致失敗的 VPC 應用程式使用不正確的子網路執行。
+ **Flink 版本升級：**當您升級至新的 Apache Flink 版本，且升級的應用程式遇到快照相容性問題時，系統復原可讓您自動還原至先前的 Flink 版本。
+ **AutoScaling：**當應用程式擴展，但由於快照和 Flink 任務圖表之間的運算子不相符，從儲存點遇到還原問題時。

## 使用操作 APIs進行系統復原
<a name="operation-apis"></a>

為了提供更好的可見性，Amazon Managed Service for Apache Flink 有兩個與應用程式操作相關的 APIs，可協助您追蹤故障和相關的系統復原。

`ListApplicationOperations`

此 API 會依反向時間順序列出應用程式上執行的所有操作，包括 `RollbackApplication`、、 `UpdateApplication` `Maintenance`和其他操作。`ListApplicationOperations` 動作的下列範例請求會列出應用程式的前 10 個應用程式操作：

```
{
   "ApplicationName": "MyApplication",
   "Limit": 10
}
```

的下列範例請求`ListApplicationOperations`有助於篩選應用程式上先前更新的清單：

```
{
   "ApplicationName": "MyApplication",
   "operation": "UpdateApplication"
}
```

`DescribeApplicationOperation`

此 API 提供 列出之特定操作的詳細資訊`ListApplicationOperations`，包括故障原因，如適用。`DescribeApplicationOperation` 動作的下列範例請求會列出特定應用程式操作的詳細資訊：

```
{
   "ApplicationName": "MyApplication",
   "OperationId": "xyzoperation"
}
```

如需故障診斷資訊，請參閱[系統復原最佳實務](troubleshooting-system-rollback.md)。