为适用于 Apache Flink 的托管服务应用程序启用系统回滚 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

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

为适用于 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 作业时使用存在错误的新代码更新应用程序,则自动回滚允许恢复以前的工作版本。其他有助于系统回滚的更新场景包括:

    • 如果您的应用程序已更新为以更高的并行度运行。maxParallelism

    • 如果您的应用程序更新为使用不正确的子网运行,从而导VPC致 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" }

有关故障排除信息,请参阅系统回滚最佳实践