

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

# 应用程序升级的一般最佳实践和建议
<a name="best-practices-recommendations"></a>
+ 在尝试生产升级之前，请在非生产环境中测试 job/runtime 没有状态的新版本。
+ 考虑先使用非生产应用程序测试有状态升级。
+ 确保新作业图与用来启动升级后应用程序的快照处于兼容状态。
  + 确保存储在操作员状态下的类型保持不变。如果类型已更改，Apache Flink 将无法恢复操作员状态。
  + 确保使用该`uid`方法 IDs 设置的运算符保持不变。Apache Flink 强烈建议为运算符分配唯一值 IDs 。有关更多信息，请参阅 Apache Flink 文档 IDs中的[分配运算符](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/savepoints/#assigning-operator-ids)。

    如果您没有为运算符赋值 IDs ，Flink 会自动生成它们。在这种情况下，ID 可能取决于程序结构，如果更改，则可能会导致兼容性问题。Flink 使用运算符 IDs将快照中的状态与运算符进行匹配。更改 Op IDs erator 会导致应用程序无法启动，或者快照中存储的状态被删除，而新操作符在没有状态的情况下启动。
  + 不要更改用于存储密钥状态的密钥。
  + 不要修改有状态操作员的输入类型，例如 window 或 join。这会隐式更改操作员内部状态的类型，从而导致状态不兼容。