

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

# 确保您的 Apache Flink 应用程序托管服务已生产准备就绪
<a name="production-readiness"></a>

这是在 Managed Service for Apache Flink 上运行生产应用程序的重要方面的集合。这不是一份详尽的清单，而是在将应用程序投入生产之前应注意的最低限度的内容。

## 负载测试您的应用程序
<a name="load-testing-applications"></a>

应用程序的某些问题只有在负载过重的情况下才会出现。我们已经看到应用程序看起来运行良好，而操作事件大大增加了应用程序的负载的案例。这可能完全独立于应用程序本身发生。如果数据源或数据接收器在几个小时内不可用，Flink 应用程序将无法取得进展。当该问题得到解决时，就会积累大量未处理的数据，这些数据可能会完全耗尽可用资源。然后，负载可能会放大以前从未出现过的错误或性能问题。

因此，必须对生产应用程序进行适当的负载测试。在这些负载测试期间应回答的问题包括：
+ 在持续的高负载下，应用程序是否稳定？
+ 在峰值负载下，应用程序还能占用保存点吗？
+ 处理积压的 1 小时需要多长时间？ 24 小时持续多长时间（取决于数据流中数据的最大保留时间）？
+ 扩展应用程序时，应用程序的吞吐量会增加吗？

当从数据流中消费时，可以通过在数据流中生成一段时间来模拟这些场景。然后启动应用程序，让它从一开始就使用数据。例如，对于 Kinesis 数据流，请使用 `TRIM_HORIZON` 的起始位置。

## 定义最大并行度
<a name="explicit-max-parallelism"></a>

最大并行度定义了有状态应用程序可以扩展到的最大并行度。这是在首次创建状态时定义的，如果不丢弃状态，就无法将运算符缩放到此最大值之外。

最大并行度是在首次创建状态时设置的。

默认情况下，最大并行度设置为：
+ 128，如果并行度 <= 128
+ `MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)`: 如果并行度 > 128

如果您计划将应用程序的并行度扩展到 > 128，则应明确定义最大并行度。

最大并行度可以在应用程序级别定义，使用 `env.setMaxParallelism(x)` 或单个操作员。除非另有说明，否则所有操作员都继承应用程序的最大并行度。

有关更多信息，请参阅的 Apache Flink 文档中的[设置最大并行度](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism)。

## 为所有运算符设置 UUID
<a name="set-uuid"></a>

在 Flink 将保存点映射回单个运算符的操作中使用 UUID。为每个运算符设置特定的 UUID 可以为要恢复的 savepoint 进程提供稳定的映射。

```
.map(...).uid("my-map-function")
```

有关更多信息，请参阅[生产就绪清单](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/ops/production_ready/)。