使用 Oracle Cloud Infrastructure 批次服務部署雲端原生批次工作負載
簡介
現代應用程式仰賴背景處理來處理資料轉換、報告產生、媒體處理和大規模模擬等工作。這些工作負載通常需要大量運算,並以非同步方式執行,而且規模和頻率的變化非常大。使用傳統方法管理這類工作負載可能相當複雜,需要團隊佈建基礎架構、建置排程系統,以及手動處理擴展。
Oracle Cloud Infrastructure (OCI) 批次服務旨在簡化此流程。它提供完全託管的方式來大規模執行批次工作負載,讓您專注於在平台處理執行和資源管理時定義工作。
在本教學課程中,我們將探討 OCI Batch 的運作方式、架構,以及如何在實際案例中有效使用。
OCI 批次會解決什麼問題?
傳統上執行批次工作負載涉及多層的複雜性。團隊通常需要事先佈建運算資源、導入自己的工作排程機制,並建立處理重試、失敗及調整規模的邏輯。即使使用 Kubernetes 等平台,設定和維護環境也需要大幅努力。這可增加營運負荷並減緩開發速度。
OCI Batch 提供管理批次工作負載生命週期的統一服務來解決這些挑戰。無需建立自訂排程器或管理基礎架構,讓團隊能夠以更有效率且更少的營運工作,執行大規模的工作。
OCI 批次服務總覽
OCI Batch 是管理和執行批次工作負載的集中式服務。送出工作時,該工作會排入佇列,並根據排程決策與資源可用性進行處理。此服務會評估工作需求,並動態佈建運算能力以執行工作。每個任務都會在容器化環境中執行,以確保一致性和隔離性。執行完成後,會儲存輸出並產生日誌以進行監控和疑難排解。
此方法提供簡化的工作流程,讓工作提交、排程、執行及可觀察性在單一託管服務中處理。
架構深入探索
OCI 批次的架構遵循從工作提交到執行與輸出的明確流程,如圖表所示。

當使用者使用 OCI 主控台、CLI 或 API 送出工作時,程序便會開始。此要求與作為基礎組態層的 Batch Context 相關聯。內容定義重要設定值,例如網路、運算機組及記錄日誌,以確保所有工作都能在一致的環境內執行。
接著,工作會組織成 Job Pools,以提供邏輯分組並協助控制排程行為。這在管理不同團隊或環境的工作負載時特別有用,因為它允許優先順序和隔離。每個提交的工作代表一個完整的工作單位,並且可以包含一或多個任務。作業是最小可執行單位,並使用定義的作業環境來執行。這樣可以根據定義的相依性,將工作細分為可獨立或依序執行的較小片段。
提交後,工作會放入 Queue 中,等待資源可用。排程器會持續評估佇列,並根據優先順序和容量選取工作。這樣可確保在不使系統混亂的情況下有效率地處理工作負載。
為了執行這些任務,OCI Batch 使用 Compute Fleets 來代表基礎運算能力。這些機組會根據工作負載需求動態佈建。送出更多工作時,會配置額外的容量;當需求減少時,會縮減資源。這可確保使用效率,無須手動介入。
執行後,結果會儲存在 OCI storage services 中,並擷取日誌和指標以供檢視。這提供工作執行和系統效能的完整檢視。
此架構的重要性
OCI 批次的關鍵優勢在於其在工作提交與執行之間的分隔。系統不會立即執行所有工作,而是使用佇列和排程邏輯來有效管理工作負載。此設計可讓 OCI 批次在無需預先佈建的基礎架構的情況下,處理需求突然激增的情況。它也可確保優先執行更高優先順序的工作,從而提高共用環境中的可預測性。
透過動態管理資源配置並透過佇列控制執行,此服務在效能、擴展性及成本效率之間取得平衡。
OCI 批次的核心元件
OCI 批次以一組核心元件為基礎,可搭配運作以提供批次處理功能。
- 批次相關資訊環境定義工作負載的環境,包括網路、運算機組以及記錄日誌組態。它可確保所有工作的一致性。
- 工作集區是用來將相關工作分組,以及管理排程行為。他們協助組織工作負載,並控制多團隊環境中的優先順序。
- 工作代表一個完整的工作流程,可以包含多個工作。它定義需要執行的項目,以及任務的相關性。
- 工作是最小的執行單位。每個作業都會在容器內執行,並執行特定的作業。任務可以平行執行或依循相依性,以啟用簡單與複雜的工作流程。
- 任務設定檔可指定資源需求 (例如 CPU、記憶體、容器映像檔及環境變數),以定義任務的執行方式。這可讓工作負載根據其需求進行最佳化。
真實世界範例:視訊處理業績預測
請考慮需要處理數千個影片的案例。例如,轉換格式、產生縮圖或套用篩選。
使用 OCI 批次,每個影片都可視為工作中的個別任務。這些任務可平行執行多個運算資源,大幅縮短總處理時間。隨著工作負載需求增加,OCI Batch 會自動佈建額外的運算能力來處理任務。處理完成後,會儲存結果並產生日誌以進行監督。此模式可套用至許多其他使用案例,包括資料管線、機器學習工作負載和工程模擬。
必備條件
請依照 IAM 原則範例,允許 OCI 批次服務存取所需的 OCI 服務。
若要使用 OCI CLI 建立工作,您也需要下載 OCI CLI 。
作業 1。建立批次內容
「批次內容」是批次工作負載的最上層組態層。包括網路、機組、權益、工作優先順序設定值,以及記錄日誌組態。
若要建立批次內容,請前往「批次」服務並選取批次內容,然後選取建立批次內容。根據您的環境填寫下列詳細資訊。
- 名稱
- 區間
- 描述
- VCN
- 子網路
- 機組
- 權益 (選擇性)
- 工作優先順序組態 (選擇性)
-
記錄組態

作業 2。建立工作集區
「工作集區」只是工作的邏輯容器。執行工作時,您將選取工作集區以在其下建立。若要建立工作集區,您只需要下列組態。
- 名稱
- 描述
-
區間

作業 3。建立作業設定檔
「作業設定檔」是可重複使用的組態,定義作業所需的最低運算資源,例如 1 個 OCPU 和 16 GB 的記憶體。您可以建立多個與不同資源需求對應的設定檔。若要建立任務設定檔,您需要下列組態:
- 名稱
- 描述
- 最小 OCPU - 您可以將此範例設為 1
-
最小記憶體 (GB) - 您可以將此範例設為 8

作業 4。設定本機環境和植入容器映像檔
-
從 GitHub 提取程式碼,然後移至正確的目錄。
git clone https://github.com/oracle-devrel/technology-engineering.git cd technology-engineering/app-dev/developer-tools-and-lowcode/batch/video-transcoding/ -
在 OCI 容器登錄 (OCIR) 中建立儲存區域。

-
將容器映像檔推送到 OCIR。影像路徑應符合您的區域、租用戶命名空間、儲存區域名稱以及影像標記,亦即
iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latestdocker build -t <image>:<tag> . docker push <image>:<tag>
-
建立用於輸入和輸出影片的 Object Storage 貯體。


-
將影片檔案上傳至物件儲存
作業 5。建立任務環境
「工作環境」是您工作的程式實際執行組態。若要設定工作環境,您需要:
- 名稱
- 描述
- 安全相關資訊環境:
- 使用者 ID:設為 1
- 群組 ID:設為 1
- 檔案系統群組 ID:設為 1
-
工作目錄:將此設為 /video

作業 6。送出工作
有多種方法可將工作提交至「批次」服務。在本教學課程中,我們將使用 OCI CLI。
- 建立一個名為
video_conversion_job.json的檔案 - 將下列項目複製並貼到
video_conversion_job.json中{ "batchJobPoolId": "JOB_POOL_OCID", "compartmentId": "COMPARTMENT_ID", "description": "Task to convert video from MP4 to AVI format", "displayName": "convert_video", "maxWaitSeconds": 0, "tasks": [ { "batchJobPoolId": "JOB_POOL_OCID", "compartmentId": "COMPARTMENT_ID", "description": "Task to convert video from MP4 to AVI format", "displayName": "convert_video", "maxWaitSeconds": 0, "tasks": [ { "batchTaskEnvironmentId": "TASK_ENVIRONMENT_OCID", "batchTaskProfileId": "TASK_PROFILE_OCID", "description": "Task to convert video from MP4 to AVI format", "environmentVariables": [ { "name": "INPUT_BUCKET", "value": "input_bucket" }, { "name": "INPUT_OBJECT", "value": "input.mp4" }, { "name": "OCI_BUCKET", "value": "output_bucket" }, { "name": "OUTPUT_FILENAME", "value": "output.avi" }, { "name": "OCI_NAMESPACE", "value": "TENANCY_NAMESPACE" }, { "name": "OCI_REGION", "value": "REGION" } ], "fleetAssignmentPolicy": { "type": "BEST_FIT" }, "name": "convert_video", "type": "COMPUTE" } ], "waitForState": [ "ACCEPTED" ], "waitIntervalSeconds": 0根據您的環境取代下列項目:
- 工作集區 OID
- 區間 ID
- 作業 _ 環境 _OCID
- 任務設定檔代碼 ID
- 租用戶命名空間
- REGION
-
執行下列命令:
oci batch batch-job create --from-json file://video_conversion_job.json完成此工作最多需要 10 分鐘。觀察 OCI 主控台中的工作,以查看工作所在的階段。
作業 7。驗證結果
- 在 OCI 主控台中,前往物件儲存。
- 尋找輸出儲存桶並驗證是否有轉碼的視訊。
OCI 批次與傳統方法的比較
傳統的批次處理解決方案通常需要管理基礎架構、設定排程器,以及手動處理擴展。這樣可以提高複雜性和營運負荷。不過, OCI 批次可提供自動處理排程、執行和資源佈建的受管理環境,以消除這些挑戰。如此一來,在沒有深度基礎架構專業知識的情況下,能夠更輕鬆地執行大規模的工作負載。
最佳作法
若要有效地使用 OCI 批次,工作負載的設計必須具備擴展性。將大型工作細分為較小的工作,可獲得更好的平行執行並提升效能。定義適當的任務設定檔也十分重要,以便有效率地配置資源。應啟用適當的記錄和監控,以確保工作執行的可見性。使用工作集區和優先順序可協助確保準時執行重要工作負載,特別是在共用環境中。
結論
OCI 批次服務提供簡化的可擴充方式,可在雲端執行批次工作負載。透過在單一服務內處理工作協調、排程和運算佈建,降低營運複雜性並提高效率。對於處理大規模、需要大量運算的工作負載的組織,OCI Batch 提供可靠且彈性的解決方案,讓團隊能夠專注於提供結果而非管理基礎架構。
相關連結
確認
- 作者:Payal Sharma (資深雲端架構師)、Matthew McDaniel (員工雲端工程師)
其他學習資源
您可以在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Deploy Cloud Native Batch Workloads Using Oracle Cloud Infrastructure Batch Service
G56477-01