

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 檢閱 Managed Service for Apache Flink 應用程式資源
<a name="how-resources"></a>

本節說明應用程式使用的系統資源。了解 Managed Service for Apache Flink 如何佈建和使用資源，將協助您設計、建立和維護高效能且穩定的 Managed Service for Apache Flink 應用程式。

## Managed Service for Apache Flink 應用程式資源
<a name="how-resources-kda"></a>

Managed Service for Apache Flink 是一項 AWS 服務，可建立託管 Apache Flink 應用程式的環境。Managed Service for Apache Flink 服務使用 **Kinesis 處理單元 (KPU)** 提供資源。

一個 KPU 代表下列系統資源：
+ 一個 CPU 核心
+ 4 GB 的記憶體，其中 1 GB 是本機記憶體，3 GB 是堆積記憶體
+ 50 GB 的可用磁碟空間

KPU 在稱為**任務**和**子任務**的不同執行單元中執行應用程式。你可以將一個子任務視為等效於一個執行緖。

應用程式可用的 KPU 數量等於應用程式的 `Parallelism` 設定除以應用程式的 `ParallelismPerKPU` 設定。

如需應用程式平行處理的詳細資訊，請參閱 [實作應用程式擴展](how-scaling.md)。

## Apache Flink 應用程式資源
<a name="how-resources-flink"></a>

Apache Flink 環境會使用稱為**任務空位**的單元為應用程式配置資源。Managed Service for Apache Flink 為應用程式配置資源時，會將一或多個 Apache Flink 任務空位指派給單一 KPU。指派給單一 KPU 的空位數量等於應用程式的 `ParallelismPerKPU` 設定。如需任務槽的詳細資訊，請參閱 Apache Flink 文件中的[任務排程](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/internals/job_scheduling/)。

### 運算子平行處理
<a name="how-resources-flink-operatorparallelism"></a>

您可以設定運算子可以使用的最大子任務數目。此值稱為**運算子平行處理層級**。依預設，應用程式中每個運算子的平行處理層級與應用程式的平行處理層級相同。這表示依預設，應用程式中的每個運算子都可以視需要使用應用程式中所有可用的子任務。

您可以使用 `setParallelism` 方法設定應用程式中運算子的平行處理層級。使用此方法，您可以控制每個運算子一次可以使用的子任務數目。

如需運算子的詳細資訊，請參閱 Apache Flink 文件中的[運算子](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/operators/overview/)。

### 運算子鏈結
<a name="how-resources-flink-operatorchaining"></a>

通常，每個運算子都使用單獨的子任務來執行，但是如果多個運算子始終按順序執行，則執行期可以將它們全部分配給相同的任務。這個過程稱為**運算子鏈結**。

如果幾個循序運算子都對相同的資料進行操作，則可以鏈接到單個任務中。以下是實現這一點所需要的一些條件：
+ 運算子執行 1 對 1 簡單轉發。
+ 所有運算子具有相同的平行處理層級。

應用程式將運算子鏈結到單一子任務中時，可以節省系統資源，因為服務不需要執行網路作業，也不需要為每個運算子配置子任務。若要判斷您的應用程式是否使用運算子鏈結，請查看 Managed Service for Apache Flink 主控台中的作業圖表。應用程式中的每個頂點代表一或多個運算子。此圖表顯示已鏈結為單一頂點的運算子。