国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

云原生離線工作流編排利器 -- 分布式工作流 Argo 集群

這篇具有很好參考價值的文章主要介紹了云原生離線工作流編排利器 -- 分布式工作流 Argo 集群。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者:莊宇

在現代的軟件開發(fā)和數據處理領域,批處理作業(yè)(Batch)扮演著重要的角色。它們通常用于數據處理,仿真計算,科學計算等領域,往往需要大規(guī)模的計算資源。隨著云計算的興起,阿里云批量計算和 AWS Batch 等云服務提供了管理和運行這些批處理作業(yè)的平臺。

隨著云原生和 Kubernetes 生態(tài)的發(fā)展,越來越多的應用運行在 Kubernetes 之上,例如在線應用,中間件,數據庫。那對離線任務和批量計算是否可以在 Kubernetes 這個統(tǒng)一平臺之上運行,答案是肯定的,分布式工作流 Argo 集群 [ 1] ,基于開源?Argo Workflows [ 2] 項目,完全符合開源工作流標準,可以編排和運行離線任務和批量計算,并使用 Serverless 方式運行,降低運維復雜度,節(jié)省運行成本。

通過分布式工作流 Argo 集群,您可以輕松編排工作流,每個工作流步驟使用容器運行,可以在短時間內輕松運行大規(guī)模機器學習、仿真計算和數據處理等計算密集型作業(yè),也可以快速運行 CI/CD 流水線。

云原生離線工作流編排利器 -- 分布式工作流 Argo 集群,云原生,分布式

本文介紹主流 Batch 批量計算系統(tǒng)和分布式工作流 Argo 集群的區(qū)別,并討論如何將離線任務和批量計算遷移到分布式工作流 Argo 集群。

Batch?批量計算的相關概念

云原生離線工作流編排利器 -- 分布式工作流 Argo 集群,云原生,分布式

作業(yè)(Jobs)

一個任務單元(例如 shell 腳本、Linux 可執(zhí)行文件或 Docker 容器鏡像),可以提交給 Batch 批量計算系統(tǒng),批量計算系統(tǒng)會在計算環(huán)境中分配計算資源并運行作業(yè)。

Array Jobs

Array Job 是指一系列相似或相同的作業(yè)(Jobs),這些作業(yè)作為一個數組批量提交并運行。每一個作業(yè)都有相同的作業(yè)定義,但可以通過索引來區(qū)分,每個作業(yè)實例處理不同的數據集或執(zhí)行稍有差異的任務。

作業(yè)定義(Job Definitions)

作業(yè)定義指定了作業(yè)的運行方式。運行作業(yè)前需要先創(chuàng)建作業(yè)定義。作業(yè)定義一般包含:作業(yè)運行所使用的鏡像,具體命令與參數,需要的 CPU/Memory 資源,環(huán)境變量,磁盤存儲等。

作業(yè)隊列(Job Queues)

向 Batch 批量計算系統(tǒng)提交作業(yè)時,會提交到指定的作業(yè)隊列中排隊,直到被調度運行。作業(yè)隊列可以設置優(yōu)先級,并指定關聯(lián)的計算環(huán)境。

計算環(huán)境(Compute Environment)

計算環(huán)境是一組計算資源,可以運行作業(yè)。對計算環(huán)境需要指定虛擬機的機型,環(huán)境的最小、最大 vCPU 數量,以及 Spot 競價實例的價格。

總結

  1. 用戶需要學習 Batch 批量計算作業(yè)定義規(guī)范與用法,有廠商綁定風險;

  2. 還需要管理計算環(huán)境,設置機型和規(guī)模等,非 Serverless 方式,運維高;

  3. 由于計算環(huán)境規(guī)模的限制,需要管理作業(yè)隊列以設置作業(yè)的優(yōu)先級,復雜度高。

分布式工作流 Argo 集群的相關概念

云原生離線工作流編排利器 -- 分布式工作流 Argo 集群,云原生,分布式

模版(Templates)

模版定義了一個任務(作業(yè)),是工作流的組成部分,一個工作流至少要包含一個模版。模版中包含要運行的 Kubernetes 容器和相應的輸入輸出參數。

工作流(Workflows)

工作流包含一個或者多個任務(模版),并可以編排多個任務,支持定義復雜的任務流程,如序列化、并行化任務,以及在條件滿足時執(zhí)行特定的任務。創(chuàng)建工作流后,工作流中的任務,會在 Kubernetes 集群中以 Pod 形式運行。

工作流模版(Workflow Templates)

工作流模版是可復用的工作流的靜態(tài)定義,類似于函數,可以在多個工作流中被引用并運行。在定義復雜工作流時可以復用已有的工作流模版,減少重復性定義。

無服務器 Kubernetes 集群

分布式工作流 Argo 集群自帶計算環(huán)境,不需要手工創(chuàng)建和管理。提交工作流后,使用阿里云彈性容器 ECI,以 Serverless 方式運行工作流中的任務,不需要維護 Kubernetes 節(jié)點。利用阿里云的彈性能力,可以運行大規(guī)模工作流(數萬任務 Pod),同時使用數十萬核 CPU 的算力資源,在工作流運行完成后自動釋放資源。加快工作流運行速度,并節(jié)省計算成本。

總結

  1. 基于 Kubernetes 集群和開源 Argo Workflows 構建,以云原生的方式編排運行工作流,無廠商綁定風險;

  2. 復雜工作流任務的編排,可以應對數據處理、仿真計算,科學計算的復雜業(yè)務場景;

  3. 計算環(huán)境采用阿里云彈性容器 ECI,不需要維護節(jié)點;

  4. 大規(guī)模算力的按需使用,按量計費,避免工作流排隊等待,提高效率,節(jié)省計算成本。

Batch 批量計算和 Argo 工作流功能映射

能力分類描述 Batch批量計算 Argo Workflows
用戶體驗 批量計算CLI Argo Workflows CLI
Json定義作業(yè) Yaml定義作業(yè)
SDK SDK
核心能力 作業(yè)(Jobs) 工作流(Workflows)
Array jobs 工作流(Workflows)Loops
Job dependencies 工作流(Workflows)DAG
Job Environments Variables 工作流(Workflows)Parameters
Automated Job retries 工作流(Workflows)Retrying
Job timeouts 工作流(Workflows)Timeouts
工作流(Workflows)Artifacts
工作流(Workflows)Conditions
工作流(Workflows)Recursion
工作流(Workflows)Suspending/Resuming
GPU jobs 工作流(Workflows)指定GPU機型運行工作流
Volumes Volumes
Job priority 工作流(Workflows)Priority
作業(yè)定義(JobDefinition) 工作流模版(Workflows Templates)
計算環(huán)境 Job queues 無,云上Serverless彈性,作業(yè)無需排隊
計算環(huán)境(Compute Environment) 無服務器Kubernetes集群
生態(tài)集成 事件驅動 事件驅動
可觀察性 可觀測性

Argo 工作流示例

簡單工作流

cat > helloworld.yaml << EOF
apiVersion: argoproj.io/v1alpha1
kind: Workflow                  # new type of k8s spec
metadata:
  generateName: hello-world-    # name of the workflow spec
spec:
  entrypoint: main         # invoke the main template
  templates:
    - name: main              # name of the template
      container:
        image: registry.cn-hangzhou.aliyuncs.com/acs/alpine:3.18-update
        command: [ "sh", "-c" ]
        args: [ "echo helloworld" ]
EOF
argo submit helloworld.yaml

在這個實例中,我們啟動了一個任務 Pod,使用 alpine 鏡像,運行 shell 命令 echo helloworld。在這個工作流基礎上,可以在 args 中,指定多個 shell 命令并執(zhí)行,也可以使用自定義鏡像運行鏡像中的命令。

Loops 工作流

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: loops-
spec:
  entrypoint: loop-example
  templates:
  - name: loop-example
    steps:
    - - name: print-pet
        template: print-pet
        arguments:
          parameters:
          - name: job-index
            value: "{{item}}"
        withSequence:  # loop to run print-pet template with parameter job-index 1 ~ 5 respectively.
          start: "1"
          end: "5"
  - name: print-pet
    inputs:
      parameters:
      - name: job-index
    container:
      image: acr-multiple-clusters-registry.cn-hangzhou.cr.aliyuncs.com/ack-multiple-clusters/print-pet
      command: [/tmp/print-pet.sh]
      args: ["{{inputs.parameters.job-index}}"] # input parameter job-index as args of container

在示例中,鏡像 print-pet 中打包了 pets.input 文本文件和 print-pet.sh 腳本文件,print-pet.sh 以 job-index 為輸入參數,打印 pets.input 文件行號為 job-index 的 pet。具體文件內容請訪問?GitHub 倉庫 [ 3] 。

在工作流中,會同時啟動 5 個 Pod,并分別傳入參數 job-index 1~5,每個 pod 根據輸入的 job-index 的值,打印相應行的 pet。通過 Loops 工作流可以實現數據分片和并行處理,加快海量數據的處理速度。更多 Loops 示例可以參考工作流(Workflows)Loops [ 4]

DAG 工作流(MapReduce)

真實的批處理場景中,往往需要多個 Job 配合完成,所以需要指定 Job 間的依賴關系,DAG 是指定依賴關系的最佳方式。但主流的 Batch 批處理系統(tǒng),需要通過 Job ID 指定 Job 依賴,由于 Job ID 需要在 Job 提交后才能獲取,因此需要編寫腳本實現 Job 間依賴(偽代碼如下),Job 較多時依賴關系不直觀維護代價高。

//Batch批處理系統(tǒng)Job間依賴,JobB 依賴 JobA,在JobA完成后運行。
batch submit JobA | get job-id
batch submit JobB --dependency job-id (JobA)

Argo 工作流可以通過 DAG 定義子任務間的依賴關系,示例如下:

云原生離線工作流編排利器 -- 分布式工作流 Argo 集群,云原生,分布式

# The following workflow executes a diamond workflow
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: dag-diamond-
spec:
  entrypoint: diamond
  templates:
  - name: diamond
    dag:
      tasks:
      - name: A
        template: echo
        arguments:
          parameters: [{name: message, value: A}]
      - name: B
        depends: "A"
        template: echo
        arguments:
          parameters: [{name: message, value: B}]
      - name: C
        depends: "A"
        template: echo
        arguments:
          parameters: [{name: message, value: C}]
      - name: D
        depends: "B && C"
        template: echo
        arguments:
          parameters: [{name: message, value: D}]
  - name: echo
    inputs:
      parameters:
      - name: message
    container:
      image: alpine:3.7
      command: [echo, "{{inputs.parameters.message}}"]

在?Git 倉庫 [ 5] 中,提供了一個 MapReduce 工作流示例,分片處理數據,并聚合計算結果。

如何遷移 Batch?批處理系統(tǒng)到?Argo 工作流

1. 評估與規(guī)劃

評估現有 Batch 批處理作業(yè),包括依賴關系,資源需求,參數配置等。了解 Argo Workflows 的特性和最佳實踐,并根據本文選擇 Argo workflows 的功能以替代 Batch 批處理作業(yè)。另外,由于分布式工作流 Argo 集群的 Serverless ECI 能力,您可以跳過規(guī)劃 Compute Environment 和管理優(yōu)先級隊列。

2. 創(chuàng)建分布式工作流 Argo 集群

參考文檔:工作流集群快速入門 [ 6]

3. 轉換作業(yè)定義

根據 Batch 批量計算到 Argo 工作流的功能映射,重寫 Batch 批量計算作業(yè)為 Argo 工作流,也可以通過調用 Argo 工作流?SDK [ 7] ,以自動化方式創(chuàng)建工作流,并接入業(yè)務系統(tǒng)。

4. 數據存儲

確保分布式工作流 Argo 集群可以訪問工作流運行所需要的數據,工作流集群可以掛在訪問阿里云 OSS,NAS,CPNS,云盤等存儲資源。參考使用存儲卷 [ 8] 。

5. 測試驗證

驗證工作流運行正常,數據訪問,結果輸出正常,資源用量符合預期。

6. 運維:監(jiān)控和日志

開啟分布式工作流 Argo 集群可觀察能力 [ 9] ,查看工作流運行狀態(tài)和日志。

總結

  1. 在用戶體驗、核心能力、計算環(huán)境和生態(tài)集成方面,Argo 工作流可以覆蓋主流 Batch 批處理系統(tǒng)的功能,同時在復雜工作流編排和計算環(huán)境管理方面強于 Batch 批處理系統(tǒng)。

  2. 分布式工作流 Argo 集群基于 Kubernetes 構建,工作流定義符合 Kubernetes Yaml 規(guī)范,子任務定義符合 Kubernetes Container 規(guī)范。如果您已經在使用 Kubernetes 運行在線應用,可以快速上手編排工作流集群,統(tǒng)一使用 Kubernetes 作為在線應用和離線應用的技術底座。

  3. 計算環(huán)境采用阿里云彈性容器 ECI,不需要維護節(jié)點,同時提供大規(guī)模算力的按需使用,按量計費,避免工作流排隊等待,提高運行效率,節(jié)省計算成本。

  4. 結合使用阿里云 Spot 示例,可以大幅降低計算成本。

  5. 分布式工作流適合 CICD,數據處理、仿真計算,科學計算等業(yè)務場景。

相關鏈接:

[1]?分布式工作流 Argo 集群

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/overview-12?spm=a2c4g.11186623.0.0.3b33309fEXoH3j

[2]?Argo Workflows

https://argoproj.github.io/argo-workflows/

[3]?GitHub 倉庫

https://github.com/AliyunContainerService/argo-workflow-examples/tree/main/loops

[4]?工作流(Workflows)Loops

https://argo-workflows.readthedocs.io/en/latest/walk-through/loops/

[5]?Git 倉庫

https://github.com/AliyunContainerService/argo-workflow-examples/tree/main/map-reduce

[6]?工作流集群快速入門

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/workflow-cluster-quickstart?spm=a2c4g.11186623.0.0.20555492DR5MCM

[7]?SDK

https://argoproj.github.io/argo-workflows/client-libraries/

[8]?使用存儲卷

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/use-volumes?spm=a2c4g.11186623.0.0.12011428eDYQH1

[9]?可觀察能力

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/observability/文章來源地址http://www.zghlxwxcb.cn/news/detail-820383.html

到了這里,關于云原生離線工作流編排利器 -- 分布式工作流 Argo 集群的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • GitFlow工作流

    GitFlow工作流

    基于 Git 這一版本控制系統(tǒng),通過定義不同的分支,探索合適的工作流程來完成開發(fā)、測試、修改等方面的需求。 例如:在開發(fā)階段,創(chuàng)建 feature 分支,完成需求后,將此分支合并到 develop 分支上;在發(fā)布階段,創(chuàng)建 release 分支,完成階段開發(fā)任務后,將分支合并到 develop 和

    2024年02月22日
    瀏覽(22)
  • Git工作流

    Git工作流

    main:生產環(huán)境,也就是你們在網上可以下載到的版本,是經過了很多輪測試得到的穩(wěn)定版本。 release: 開發(fā)內部發(fā)版,也就是測試環(huán)境。 dev:所有的feature都要從dev上checkout。 feature:每個需求新創(chuàng)建的分支。 下面介紹一下一個新需求過來的git操作流程: 1.從dev分支上checkou

    2024年02月10日
    瀏覽(41)
  • 云計算工作流調度

    云計算工作流調度

    閱讀筆記 首先,我們提出了一個更實用的混合云服務流程成本驅動調度模型,該模型在不降低VM部署彈性的情況下更精確地定義資源約束,并考慮了基于間隔的綜合收費,包括計費周期和持續(xù)使用折扣。 其次,提出了一種改進的基于FWA(煙花算法)的方法來解決這一問題。在

    2024年02月02日
    瀏覽(49)
  • Activity工作流引擎

    Activity工作流引擎

    目錄 一、了解工作流 1、什么是工作流 2、工作流引擎 3、常見工作流引擎 4、Activiti7概述 4.1、Activiti介紹 4.2、建模語言BPMN 4.3、Activiti使用流程 二、Activiti7 1、Activiti使用 1.1、數據庫支持 1.2、Activiti環(huán)境 1.3、Activiti常用Service服務接口 1.4、流程設計工具 2、Activiti流程操作 2.1、

    2024年02月13日
    瀏覽(22)
  • 工作流引擎Flowable

    工作流引擎Flowable

    官方手冊 一、依賴 二、demo 三、日志文件 在resources中添加日志文件log4j.properties Flowable流程圖 Eclipse Designer, 一款Eclipse插件, 用于圖形化建模, 測試與部署B(yǎng)PMN2.0流程 FlowableUI Flowable BPMN visualizer, 一款idea插件 從官網下載flowable-6.7.2.zip解壓后, 可以看到如下兩個文件 將這兩個文件

    2024年02月09日
    瀏覽(28)
  • Docker工作流

    Docker工作流

    開發(fā)應用 編寫Dockerfile 構建Docker鏡像 運行Docker容器 測試應用 發(fā)布鏡像到Hub 迭代更新鏡像 首先你需要創(chuàng)建一個應用,這個應用可以是后端應用或者前端應用,任何語言都可以。 比如:我使用IDEA 創(chuàng)建一個Java后端應用,基于Maven構建,工程結構如下: 基于自己的工程來編寫

    2024年04月29日
    瀏覽(23)
  • Git工作流(隨筆)

    Git工作流(隨筆)

    目錄 前言 一、工作流概述 1、概念 2、分類 二、集中式工作流 1、概述 2、介紹 3、操作過程 三、功能分支工作流 1、概述 2、介紹 3、操作過程 1)創(chuàng)建遠程分支 2)刪除遠程分支 四、GitFlow工作流 1、概述 2、介紹 ? 3、操作過程 五、Forking工作流 1、概述 2、介紹 3、操作過程

    2024年02月09日
    瀏覽(22)
  • Activiti 工作流簡介

    Activiti 工作流簡介

    1、什么是工作流 ????????工作流(Workflow),就是通過計算機對業(yè)務流程自動化執(zhí)行管理。它主要解決的是“使在多個參與者之間按照某種預定義的規(guī)則自動進行傳遞文檔、信息或任務的過程,從而實現某個預期的業(yè)務目標,或者促使此目標的實現”。 1.2、工作流系統(tǒng) ??

    2024年02月04日
    瀏覽(21)
  • 工作流flowable實現撤回

    Flowable是一個開源的工作流引擎,可以實現工作流程的自動化管理,包括任務分配、流轉、審批等。如果需要實現撤回功能,可以考慮以下方案: 在流程定義中添加一個撤回節(jié)點,允許任務的發(fā)起人在任務未被處理前撤回任務。當發(fā)起人選擇撤回任務時,任務將被撤回至撤回

    2024年02月09日
    瀏覽(28)
  • 什么是開源工作流平臺?

    什么是開源工作流平臺?

    在辦公職場中,有沒有一款軟件是實現提質增效的平臺?如果讓辦公實現流程化管理,引用什么平臺產品較為合適?低代碼開發(fā)平臺是近些年較為流行的辦公軟件平臺,可以有效管理數據資源,制作表格可視化操作更簡便,其中的開源工作流平臺也因為其拖拽式設計、可視化

    2024年02月10日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包