如何通過標簽路由做任務灰度
您可以使用標簽路由的方式實現任務的灰度調度,通過指定標簽來指定每個任務調度到哪個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增強(不需要修改代碼)
敬請期待
步驟二:驗證接入成功
在左側導航欄的應用管理頁面,查看執行器數量,可以看到接入的機器的標簽,代表接入成功。
步驟三:配置標簽路由
在左側導航欄的任務管理頁面,單擊目標任務操作列下
,指定類型選擇標簽,則該任務只會運行在指定的標簽上。