全部產品
Search
文件中心

Microservices Engine:如何進行任務調度限流

更新時間:Apr 24, 2025

在任務調度XXLJOB版中,您可通過任務層級和應用層級的限流,合理分配系統資源,避免任務過多導致系統負載過大,資源過度消耗。

任務層級限流

  • 開源XXLJOB有堵塞處理策略進行任務限流,但該堵塞處理策略是用戶端層級的限流,只能保證該任務在該執行器上是串列執行。如果執行器有多個,無法保證任務全域等冪執行。

  • 阿里雲XXLJOB支援服務端層級任務限流。登入XXL-JOB控制台,進入指定XXL-JOB執行個體。在左側導覽列的任務管理頁面,單擊目標任務操作列的編輯,在進階配置中,通過任務並發數控制任務同時跑的並發數。

    image

    當任務並發數設定為1,表示任務等冪執行。若上一次沒跑完,下一次調度時間到了直接跳過執行。

應用層級限流

如果您的應用下有多個任務,同時執行會導致後端壓力太大,可以設定應用層級限流。

例如,一個資料平台的應用,每天夜間處理上一天的離線資料,這些任務只需要每天早上9:30前跑完即可,但是業務方把任務調度時間都設定為00:30:00跑,同時跑會導致後端負載過高而崩潰。

阿里雲XXLJOB支援可搶佔任務優先順序隊列。

  1. 登入XXL-JOB控制台,在應用管理頁面對目標應用進行編輯,在進階配置中,開啟流控開關,並設定任務隊列執行大小

    image

    如上圖所示,設定任務執行隊列大小為10,表示該應用下同時跑的任務數會限制在10個,超過了會在隊列中等待。

  2. 在建立任務時,可以為不同的任務分配不同的優先順序。高優先順序任務會搶佔低優先順序任務優先調度。即隊列中等待的任務,高優先順序任務會排在隊列的前面。