Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为适用于 Apache Flink 应用程序的托管服务做好生产准备
这是在 Managed Service for Apache Flink 上运行生产应用程序的重要方面的集合。这不是一份详尽的清单,而是在将应用程序投入生产之前应注意的最低限度的内容。
对应用程序进行负载测试
应用程序的某些问题只有在负载过重的情况下才会出现。我们已经看到应用程序看起来很健康,但操作事件却大大增加了应用程序的负载。这可能完全独立于应用程序本身。如果数据源或数据接收器在几个小时内不可用,Flink 应用程序将无法取得进展。修复该问题后,就会积累大量未处理的数据,这可能会完全耗尽可用资源。然后,负载可能会放大以前从未出现过的错误或性能问题。
因此,必须对生产应用程序进行适当的负载测试。在这些负载测试期间应回答的问题包括:
在持续的高负载下,应用程序是否稳定?
在峰值负载下,应用程序还能占用保存点吗?
处理积压的 1 小时需要多长时间? 24 小时持续多长时间(取决于数据流中数据的最大保留时间)?
扩展应用程序时,应用程序的吞吐量会增加吗?
当从数据流中消费时,可以通过在数据流中生成一段时间来模拟这些场景。然后启动应用程序,让它从一开始就消耗数据。例如,对于 Kinesis 数据流,请使用起始位置。TRIM_HORIZON
定义最大并行度
最大并行度定义了有状态应用程序可以扩展到的最大并行度。这是在首次创建状态时定义的,如果不丢弃状态,就无法将运算符缩放到此最大值之外。
最大并行度是在首次创建状态时设置的。
默认情况下,最大并行度设置为:
128,如果并行度 <= 128
MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)
: 如果并行度 > 128
如果您计划将应用程序扩展到 128 并行度,则应明确定义最大并行度。
您可以使用env.setMaxParallelism(x)
或单个运算符在应用程序级别定义最大并行度。除非另有说明,否则所有运算符都继承应用程序的最大并行度。
有关更多信息,请参阅 Apache Flink 文档中的设置最大并行度
为所有运算符设置 a UUID
A 用UUID于 Flink 将保存点映射回单个运算符的操作。UUID为每个运算符设置特定的映射可以为要恢复的 savepoint 进程提供稳定的映射。
.map(...).uid("my-map-function")
有关更多信息,请参阅生产就绪清单