1. 簡介
任務排程系統可以對多種任務進行排程(定時、編排、重刷曆史資料等),有些任務排程系統還提供了分布式任務,幫助使用者解決大資料處理的難題。分布式任務主要分為靜态分片和動态分片。
1.1 靜态分片
主要場景是處理固定的分片數,比如分庫分表固定1024張表,需要若幹台機器分布式去處理。
主流的架構,開源有elastic-job。
1.2 動态分片
主要場景是分布式處理未知資料量的資料,比如一張大表不停在變更,想要分布式跑批。
主流的架構是schedulerx2.0提供的MapReduce模型,暫時還沒有對外開源。
2. 多語言版本的分片模型
Schedulerx2.0目前支援多語言版本的分片模型,還具有高可用、流控、失敗重試等特性,需要用戶端版本1.1.0以上。
2.1 Java版本
- 控制台建立任務的時候,執行方式選擇"分片運作",分片參數格式如下
Schedulerx2.0支援多語言版本的分片模型1. 簡介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);
}
}
- 執行清單可以檢視分片詳情
Schedulerx2.0支援多語言版本的分片模型1. 簡介2. 多語言版本的分片模型
2.2 python版本
python使用者想使用分布式跑批的福音來了,隻需要安裝一個agent,腳本都可以由schedulerx2.0維護:
- 下載下傳schedulerx-agent包接入。
- 直接在控制台寫python腳本和分片參數即可,腳本裡sys.argv[1]是分片号,sys.argv[2]是分片參數
Schedulerx2.0支援多語言版本的分片模型1. 簡介2. 多語言版本的分片模型 -
Schedulerx2.0支援多語言版本的分片模型1. 簡介2. 多語言版本的分片模型
2.3 其他腳本語言
shell和go腳本語言,和python類似,第一個系統參數是分片号,第二個是分片參數,就不一一demo了。
2.4 高可用
分片模型基于Map模型開發,可以繼承Map模型高可用的特性,即某台worker執行過程中挂了,master worker會把分片failover到其他slave節點執行。
2.5 流控
分片模型基于Map模型開發,可以繼承Map模型流控的特性,即可以控制單機子任務并發度。比如有1000個分片,一共10台機器,可以控制最多5個分片并發跑,其他在隊列等待
2.6 分片自動失敗重試
分片模型基于Map模型開發,可以繼承Map模型子任務失敗自動重試的特性