從 .NET 應用程式管理 Azure Batch 工作負載

已完成

Azure Batch 是您結合在一起的資源集合,可產生大規模平行、高效能的解決方案。

您決定要撰寫現在以 .NET Core 主控台應用程式管理整個 Azure 批次程序的應用程式。 首先,應用程式會將寵物的影片上傳至雲端。 接著,其會使用計算節點 (虛擬機器) 建立 Azure Batch 集區。 應用程式之後會建立要在這些節點上執行的作業。

在每個計算節點上執行的作業包含已上傳至輸入儲存體容器之每個影片的工作。 此工作會載入 MP4 寵物影片、將其轉換成動畫 GIF,並將檔案儲存至輸出容器。 此工作會參考會儲存為 Azure Batch 帳戶中應用程式封裝的 ffmpeg 程式庫。 下圖顯示我們的程序:

Diagram showing how an app can use Azure Storage and Azure Batch to run apps on compute nodes in pools.

Azure Batch 可搭配 Azure 儲存體使用。 Azure 儲存體會提供任何輸入資料的位置,此位置可記錄和監視資訊,並儲存以供最終輸出。 Azure Batch 執行的應用程式也可以儲存在該處,更有彈性的選擇是使用 Azure Batch 的應用程式封裝功能。

Azure Batch 的元件包括:

  • Azure Batch 帳戶:保存 Azure Batch 解決方案所需下列資源的容器:
    • 應用程式套件:應用程式套件會新增 Batch 中工作可以使用的應用程式。 Azure Batch 帳戶可以包含最多 20 個應用程式封裝。 您可以提出提高此限制的要求 (如果貴公司需要更多)。
    • 集區:集區包含計算節點,也就是執行 Batch 作業的引擎。 您要在建立時指定節點的數目、大小和作業系統。 Azure Batch 帳戶可以包含許多集區。
    • 節點:每個節點都可以獲指派要執行的工作數目,且 Azure batch 會配置及管理這些工作。 節點與特定集區相關聯。
    • 作業:作業會管理工作的集合。 作業與特定集區相關聯。 Azure Batch 帳戶可以有許多作業。
    • 工作:工作會執行應用程式。 這些都可以包含在應用程式封裝中,或包含在 Azure 儲存體容器中。 工作會處理輸入檔案,並在完成時,寫入至輸出容器。

在您可以開始從 .NET 應用程式內管理 Azure Batch 元件之前,您必須建立 Azure Batch 帳戶和 Azure 儲存體帳戶。 您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 建立這些帳戶。

為什麼要使用應用程式管理 Batch 工作負載

使用應用程式控制 Azure Batch 處理,可讓您將 Azure Batch 中對工作的執行和監視自動化。 所提供的一組豐富用戶端 API 可讓您從程式碼控制整個 Batch 工作流程。 批次處理完成之後,應用程式就可以自動刪除已建立的資源,進而降低 Azure 的成本。

批次工作負載可讓您能夠擴充到數以千計個節點,使得需要密集使用處理器計算資源的解決方案 (例如影片轉碼、天氣預測和影像分析) 變得更為可行。 所有這些使用案例在以程式設計方式管理時會變得更有效率。

Batch 用戶端服務 API

Microsoft 已發行多種語言的 Batch API。 您可以使用這些用戶端程式庫,以程式設計方式控制所有 Batch 程序元件,包括驗證、處理檔案、建立節點集區、使用工作建立作業,以及監視那些執行中工作的狀態。

在 .NET 中,這些 Batch API 是以 NuGet 套件的形式,載入到您的應用程式中。 我們也會使用 Azure 儲存體用戶端程式庫管理解決方案中的檔案和資產。

如何使用 .NET 應用程式控制 Azure Batch

您將依照課程模組其餘部分的步驟,使用 Azure 入口網站建立 Azure Batch 和 Azure 儲存體帳戶。 接著,您將會以應用程式封裝的形式上傳 ffmpeg 應用程式,以便將其用於工作中。 應用程式將會使用執行 ffmepg 的工作轉換影片。

使用您在 Azure 入口網站中建立的 Batch 和儲存體帳戶之後,您將需要在 Cloud Shell 中建立使用 Azure Batch 和 Azure 儲存體用戶端程式庫中的 .NET Core 主控台應用程式。

您的應用程式將使用 Azure 儲存體用戶端程式庫,將 MP4 影片上傳到 Blob 儲存體。 接著,應用程式會使用 Batch 用戶端程式庫,建立具有三個節點 (Windows Server VM) 的集區、建立作業,然後將影片轉換工作新增至在這些節點上執行的作業中。 執行工作時,應用程式需要監視其狀態、檢查這些工作是否成功完成,然後清除不想要的資源。