您可以使用標籤路由的方式實現任務的灰階調度,通過指定標籤來指定每個任務調度到哪個label的Executor上。本文將介紹標籤路由的架構原理、任務灰階的最佳實務和標籤路由配置步驟詳情。
基於標籤路由的架構原理
任務調度XXL-JOB版支援基於label的路由策略,在Executor向Server心跳彙報時,可以附加當前Executor的label資訊,每個任務通過指定標籤來配置標籤路由,指定每個任務調度到哪個label的Executor上。
任務灰階最佳實務
如何做任務灰階
比如我們想灰階userId=2xx開頭的資料,我們可以複製一個任務,比如一個叫jobA-base,一個叫jobA-gray。分別給兩個任務配置任務參數,jobA-base的任務參數是userId=-2xx,jobA-gray的任務參數是userId=2xx。jobA-gray執行任務的時候,拿到任務參數,只會去處理userId=2xx開頭的資料,jobA-base執行任務的時候去處理userId不等於2xx開頭的資料。
如何進行全鏈路灰階
通過標籤路由可以做到單跳灰階,即可以把灰階任務調度到label=gray的機器上,如果該任務還需要調用下遊的微服務或訊息等服務,並且也希望調用灰階的節點,則可以使用MSE微服務治理把所有服務加入到灰階泳道裡,會自動進行全鏈路的灰階。
標籤路由配置步驟
步驟一:使用者側節點如何配置label
通過SDK外掛程式增強(需要修改代碼)
在pom檔案中添加以下依賴,並將其置於
xxl-job-core之上,具體版本號碼詳情,請參見外掛程式版本說明。<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx3-plugin-xxljob</artifactId> <version>${最新版本號碼}</version> </dependency>應用程式啟動時,添加jvm參數
-Dxxl.job.executor.label來設定標籤。例如:通過如下樣本命令啟動配置標籤。java -Dxxl.job.admin.addresses=http://xxljob-xxxx -Dxxl.job.executor.appname=app1 -Dxxl.job.accessToken=xxx -Dxxl.job.executor.label=gray app.jar
通過MSE服務治理Agent增強(不需要修改代碼)
步驟二:驗證接入成功
在左側導覽列的應用管理頁面,查看執行器數量,可以看到接入的機器的標籤,代表接入成功。
步驟三:配置標籤路由
在左側導覽列的任務管理頁面,單擊目標任務操作列下,指定類型選擇標籤,則該任務只會運行在指定的標籤上。