为适用于 Apache Flink 的托管服务应用程序启用系统回滚 - Managed Service for Apache Flink

适用于 Apache Flink 的亚马逊托管服务(亚马逊 MSF)以前被称为适用于 Apache Flink 的亚马逊 Kinesis Data Analytics。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为适用于 Apache Flink 的托管服务应用程序启用系统回滚

借助系统回滚功能,您可以在适用于 Apache Flink 的亚马逊托管服务上提高正在运行的 Apache Flink 应用程序的可用性。选择此配置后,当诸如UpdateApplication或之类的操作遇到代码或配置错误时,该服务可以自动将应用程序恢复到之前autoscaling运行的版本。

注意

要使用系统回滚功能,您必须通过更新应用程序来选择加入。默认情况下,现有应用程序不会自动使用系统回滚。

工作方式

当您启动应用程序操作(例如更新或扩展操作)时,适用于 Apache Flink 的亚马逊托管服务会首先尝试运行该操作。如果它检测到阻碍操作成功的问题,例如代码错误或权限不足,则该服务会自动启动操作。RollbackApplication

回滚会尝试将应用程序恢复到成功运行的先前版本以及相关的应用程序状态。如果回滚成功,则您的应用程序将继续使用先前版本处理数据,最大限度地减少停机时间。如果自动回滚也失败,则适用于 Apache Flink 的 Amazon 托管服务会将应用程序转换为READY状态,以便您可以采取进一步的措施,包括修复错误和重试操作。

您必须选择使用自动系统回滚。从现在起,您可以使用控制台或 API 为应用程序上的所有操作启用它。

以下示例UpdateApplication操作请求允许应用程序进行系统回滚:

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

查看自动系统回滚的常见场景

以下场景说明了自动系统回滚的好处:

  • 应用程序更新:如果在通过 main 方法初始化 Flink 作业时使用存在错误的新代码更新应用程序,则自动回滚允许恢复以前的工作版本。其他有助于进行系统回滚的更新场景包括:

  • Flink 版本升级:当您升级到新的 Apache Flink 版本并且升级后的应用程序遇到快照兼容性问题时,系统回滚允许您自动恢复到之前的 Flink 版本。

  • AutoScaling:由于快照和 Flink 作业图之间的操作员不匹配,应用程序向上扩展但从保存点恢复时遇到问题。

使用操作 APIs 进行系统回滚

为了提供更好的可见性,Amazon Apache Flink 托管服务提供了两个 APIs 与应用程序操作相关的服务,可以帮助您跟踪故障和相关的系统回滚。

ListApplicationOperations

此 API 按时间倒序列出了在应用程序上执行的所有操作,包括UpdateApplicationMaintenanceRollbackApplication、、和其他操作。以下ListApplicationOperations操作请求示例列出了该应用程序的前 10 个应用程序操作:

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

以下示例请求可ListApplicationOperations帮助筛选应用程序先前更新的列表:

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

DescribeApplicationOperation

此 API 提供有关列出的特定操作的详细信息ListApplicationOperations,包括失败原因(如果适用)。以下DescribeApplicationOperation操作请求示例列出了特定应用程序操作的详细信息:

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

有关问题排查信息,请参阅系统回滚最佳实践