SchedulerX可以對多重任務進行調度(定時、編排、重刷歷史資料等),提供Java、Python、Shell和Go等多語言分區模型,協助您處理巨量資料業務需求。
背景資訊
分區模型主要包含靜態分區和動態分區。
靜態分區:主要情境是處理固定的分區數,例如分庫分表中固定1024張表,需要若干台機器分布式去處理。
動態分區:主要情境是分散式處理未知資料量的資料,例如一張大表在不停變更,需要分布式跑批。主流的架構為SchedulerX提供的MapReduce模型,目前還沒有對外開源。
功能特性
多語言版本分區模型還具有以下特性。
相容elastic-job的靜態分區模型。
支援Java、Python、Shell、Go四種語言。
高可用:分區模型基於MapReduce模型開發,可以繼承MapReduce模型高可用特性,即某台worker執行過程中發生異常,master worker會把分區failover到其它slave節點執行。
流量控制:分區模型基於MapReduce模型開發,可以繼承MapReduce模型流量控制特性,即可以控制單機子任務並發度。例如有1000個分區,一共10台機器,可以控制最多5個分區並發跑,其它在隊列中等待。
分區自動失敗重試:分區模型基於MapReduce模型開發,可以繼承MapReduce模型子任務失敗自動重試的特性。
可用性和流量控制可以在建立任務時的進階配置中設定,詳情請參見建立調度任務和任務管理進階配置參數說明。
只有1.1.0及以上版本用戶端才支援多語言版本的分區模型。
Java分區任務
- 登入分布式任務調度平台。
- 在頂部功能表列選擇地區。
在左側導覽列,選擇任務管理。
在任務管理頁面,選擇目標命名空間,在頁面左上方單擊建立任務。
在建立任務面板的基本配置頁簽,執行模式設定為分區運行,並配置分區參數,然後單擊下一步。
分區參數之間以半形逗號(,)或換行分隔,例如
分區號1=分區參數1,分區號2=分區參數2,...。
在應用程式代碼中繼承
JavaProcessor,通過JobContext.getShardingId()擷取分區號,通過JobContext.getShardingParameter()擷取分區參數。樣本:
@Component public class HelloWorldProcessor extends JavaProcessor { @Override public ProcessResult process(JobContext context) throws Exception { System.out.println("分區id=" + context.getShardingId() + ", 分區參數=" + context.getShardingParameter()); return new ProcessResult(true); } }在執行列表頁面,單擊目標任務操作列的詳情,查看分區詳情。

Python分區任務
Python應用想使用分布式跑批,只需要安裝Agent。指令碼可以由SchedulerX維護。
下載SchedulerX的Agent,並通過Agent部署指令碼任務。
在SchedulerX中建立Python分區任務,更多資訊,請參見建立調度任務。
sys.argv[1]為分區號,sys.argv[2]為分區參數。分區參數之間以半形逗號(,)或換行分隔,例如
分區號1=分區參數1,分區號2=分區參數2,...。
在執行列表頁面,單擊目標任務操作列的詳情,查看分區詳情。

Shell和Go分區任務
Shell和Go版本的分區任務和Python類似,建立步驟,請參見Python分區任務。