使用 Oracle Cloud Infrastructure 批次服務部署雲端原生批次工作負載

簡介

現代應用程式仰賴背景處理來處理資料轉換、報告產生、媒體處理和大規模模擬等工作。這些工作負載通常需要大量運算,並以非同步方式執行,而且規模和頻率的變化非常大。使用傳統方法管理這類工作負載可能相當複雜,需要團隊佈建基礎架構、建置排程系統,以及手動處理擴展。

Oracle Cloud Infrastructure (OCI) 批次服務旨在簡化此流程。它提供完全託管的方式來大規模執行批次工作負載,讓您專注於在平台處理執行和資源管理時定義工作。

在本教學課程中,我們將探討 OCI Batch 的運作方式、架構,以及如何在實際案例中有效使用。

OCI 批次會解決什麼問題?

傳統上執行批次工作負載涉及多層的複雜性。團隊通常需要事先佈建運算資源、導入自己的工作排程機制,並建立處理重試、失敗及調整規模的邏輯。即使使用 Kubernetes 等平台,設定和維護環境也需要大幅努力。這可增加營運負荷並減緩開發速度。

OCI Batch 提供管理批次工作負載生命週期的統一服務來解決這些挑戰。無需建立自訂排程器或管理基礎架構,讓團隊能夠以更有效率且更少的營運工作,執行大規模的工作。

OCI 批次服務總覽

OCI Batch 是管理和執行批次工作負載的集中式服務。送出工作時,該工作會排入佇列,並根據排程決策與資源可用性進行處理。此服務會評估工作需求,並動態佈建運算能力以執行工作。每個任務都會在容器化環境中執行,以確保一致性和隔離性。執行完成後,會儲存輸出並產生日誌以進行監控和疑難排解。

此方法提供簡化的工作流程,讓工作提交、排程、執行及可觀察性在單一託管服務中處理。

架構深入探索

OCI 批次的架構遵循從工作提交到執行與輸出的明確流程,如圖表所示。

OCIBatch 存檔

當使用者使用 OCI 主控台、CLI 或 API 送出工作時,程序便會開始。此要求與作為基礎組態層的 Batch Context 相關聯。內容定義重要設定值,例如網路、運算機組及記錄日誌,以確保所有工作都能在一致的環境內執行。

接著,工作會組織成 Job Pools,以提供邏輯分組並協助控制排程行為。這在管理不同團隊或環境的工作負載時特別有用,因為它允許優先順序和隔離。每個提交的工作代表一個完整的工作單位,並且可以包含一或多個任務。作業是最小可執行單位,並使用定義的作業環境來執行。這樣可以根據定義的相依性,將工作細分為可獨立或依序執行的較小片段。

提交後,工作會放入 Queue 中,等待資源可用。排程器會持續評估佇列,並根據優先順序和容量選取工作。這樣可確保在不使系統混亂的情況下有效率地處理工作負載。

為了執行這些任務,OCI Batch 使用 Compute Fleets 來代表基礎運算能力。這些機組會根據工作負載需求動態佈建。送出更多工作時,會配置額外的容量;當需求減少時,會縮減資源。這可確保使用效率,無須手動介入。

執行後,結果會儲存在 OCI storage services 中,並擷取日誌和指標以供檢視。這提供工作執行和系統效能的完整檢視。

此架構的重要性

OCI 批次的關鍵優勢在於其在工作提交與執行之間的分隔。系統不會立即執行所有工作,而是使用佇列和排程邏輯來有效管理工作負載。此設計可讓 OCI 批次在無需預先佈建的基礎架構的情況下,處理需求突然激增的情況。它也可確保優先執行更高優先順序的工作,從而提高共用環境中的可預測性。

透過動態管理資源配置並透過佇列控制執行,此服務在效能、擴展性及成本效率之間取得平衡。

OCI 批次的核心元件

OCI 批次以一組核心元件為基礎,可搭配運作以提供批次處理功能。

真實世界範例:視訊處理業績預測

請考慮需要處理數千個影片的案例。例如,轉換格式、產生縮圖或套用篩選。

使用 OCI 批次,每個影片都可視為工作中的個別任務。這些任務可平行執行多個運算資源,大幅縮短總處理時間。隨著工作負載需求增加,OCI Batch 會自動佈建額外的運算能力來處理任務。處理完成後,會儲存結果並產生日誌以進行監督。此模式可套用至許多其他使用案例,包括資料管線、機器學習工作負載和工程模擬。

必備條件

請依照 IAM 原則範例,允許 OCI 批次服務存取所需的 OCI 服務。

若要使用 OCI CLI 建立工作,您也需要下載 OCI CLI

作業 1。建立批次內容

「批次內容」是批次工作負載的最上層組態層。包括網路、機組、權益、工作優先順序設定值,以及記錄日誌組態。

若要建立批次內容,請前往「批次」服務並選取批次內容,然後選取建立批次內容。根據您的環境填寫下列詳細資訊。

  1. 名稱
  2. 區間
  3. 描述
  4. VCN
  5. 子網路
  6. 機組
  7. 權益 (選擇性)
  8. 工作優先順序組態 (選擇性)
  9. 記錄組態

    建立批次內容

作業 2。建立工作集區

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

  1. 名稱
  2. 描述
  3. 區間

    建立工作集區

作業 3。建立作業設定檔

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

  1. 名稱
  2. 描述
  3. 最小 OCPU - 您可以將此範例設為 1
  4. 最小記憶體 (GB) - 您可以將此範例設為 8

    建立作業設定檔

作業 4。設定本機環境和植入容器映像檔

  1. 從 GitHub 提取程式碼,然後移至正確的目錄。

     git clone https://github.com/oracle-devrel/technology-engineering.git
     cd technology-engineering/app-dev/developer-tools-and-lowcode/batch/video-transcoding/ 
    
  2. 在 OCI 容器登錄 (OCIR) 中建立儲存區域。

    建立容器註冊

  3. 將容器映像檔推送到 OCIR。影像路徑應符合您的區域、租用戶命名空間、儲存區域名稱以及影像標記,亦即 iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latest

     docker build -t <image>:<tag> .
     docker push <image>:<tag>
    

    將容器推送至 OCIR

  4. 建立用於輸入和輸出影片的 Object Storage 貯體。

    建立輸入儲存桶

    建立輸出儲存桶

  5. 將影片檔案上傳至物件儲存

作業 5。建立任務環境

「工作環境」是您工作的程式實際執行組態。若要設定工作環境,您需要:

  1. 名稱
  2. 描述
  3. 安全相關資訊環境:
    1. 使用者 ID:設為 1
    2. 群組 ID:設為 1
    3. 檔案系統群組 ID:設為 1
  4. 工作目錄:將此設為 /video

    建立任務環境

作業 6。送出工作

有多種方法可將工作提交至「批次」服務。在本教學課程中,我們將使用 OCI CLI。

  1. 建立一個名為 video_conversion_job.json 的檔案
  2. 將下列項目複製並貼到 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
  3. 執行下列命令:

     oci batch batch-job create --from-json file://video_conversion_job.json
    

    完成此工作最多需要 10 分鐘。觀察 OCI 主控台中的工作,以查看工作所在的階段。

作業 7。驗證結果

  1. 在 OCI 主控台中,前往物件儲存。
  2. 尋找輸出儲存桶並驗證是否有轉碼的視訊。

OCI 批次與傳統方法的比較

傳統的批次處理解決方案通常需要管理基礎架構、設定排程器,以及手動處理擴展。這樣可以提高複雜性和營運負荷。不過, OCI 批次可提供自動處理排程、執行和資源佈建的受管理環境,以消除這些挑戰。如此一來,在沒有深度基礎架構專業知識的情況下,能夠更輕鬆地執行大規模的工作負載。

最佳作法

若要有效地使用 OCI 批次,工作負載的設計必須具備擴展性。將大型工作細分為較小的工作,可獲得更好的平行執行並提升效能。定義適當的任務設定檔也十分重要,以便有效率地配置資源。應啟用適當的記錄和監控,以確保工作執行的可見性。使用工作集區和優先順序可協助確保準時執行重要工作負載,特別是在共用環境中。

結論

OCI 批次服務提供簡化的可擴充方式,可在雲端執行批次工作負載。透過在單一服務內處理工作協調、排程和運算佈建,降低營運複雜性並提高效率。對於處理大規模、需要大量運算的工作負載的組織,OCI Batch 提供可靠且彈性的解決方案,讓團隊能夠專注於提供結果而非管理基礎架構。

相關連結

確認

其他學習資源

您可以在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center