多語(yǔ)言版本分片模型
SchedulerX可以對(duì)多重任務(wù)進(jìn)行調(diào)度(定時(shí)、編排、重刷歷史數(shù)據(jù)等),提供Java、Python、Shell和Go等多語(yǔ)言分片模型,幫助您處理大數(shù)據(jù)業(yè)務(wù)需求。
背景信息
分片模型主要包含靜態(tài)分片和動(dòng)態(tài)分片。
靜態(tài)分片:主要場(chǎng)景是處理固定的分片數(shù),例如分庫(kù)分表中固定1024張表,需要若干臺(tái)機(jī)器分布式去處理。
動(dòng)態(tài)分片:主要場(chǎng)景是分布式處理未知數(shù)據(jù)量的數(shù)據(jù),例如一張大表在不停變更,需要分布式跑批。主流的框架為SchedulerX提供的MapReduce模型,目前還沒(méi)有對(duì)外開(kāi)源。
功能特性
多語(yǔ)言版本分片模型還具有以下特性。
兼容elastic-job的靜態(tài)分片模型。
支持Java、Python、Shell、Go四種語(yǔ)言。
高可用:分片模型基于MapReduce模型開(kāi)發(fā),可以繼承MapReduce模型高可用特性,即某臺(tái)worker執(zhí)行過(guò)程中發(fā)生異常,master worker會(huì)把分片failover到其它slave節(jié)點(diǎn)執(zhí)行。
流量控制:分片模型基于MapReduce模型開(kāi)發(fā),可以繼承MapReduce模型流量控制特性,即可以控制單機(jī)子任務(wù)并發(fā)度。例如有1000個(gè)分片,一共10臺(tái)機(jī)器,可以控制最多5個(gè)分片并發(fā)跑,其它在隊(duì)列中等待。
分片自動(dòng)失敗重試:分片模型基于MapReduce模型開(kāi)發(fā),可以繼承MapReduce模型子任務(wù)失敗自動(dòng)重試的特性。
可用性和流量控制可以在創(chuàng)建任務(wù)時(shí)的高級(jí)配置中設(shè)置,詳情請(qǐng)參見(jiàn)創(chuàng)建調(diào)度任務(wù)和任務(wù)管理高級(jí)配置參數(shù)說(shuō)明。
只有1.1.0及以上版本客戶(hù)端才支持多語(yǔ)言版本的分片模型。
Java分片任務(wù)
- 登錄分布式任務(wù)調(diào)度平臺(tái)。
- 在頂部菜單欄選擇地域。
在左側(cè)導(dǎo)航欄,選擇任務(wù)管理。
在任務(wù)管理頁(yè)面,選擇目標(biāo)命名空間,在頁(yè)面左上角單擊創(chuàng)建任務(wù)。
在創(chuàng)建任務(wù)面板的基本配置頁(yè)簽,執(zhí)行模式設(shè)置為分片運(yùn)行,并配置分片參數(shù),然后單擊下一步。
分片參數(shù)之間以半角逗號(hào)(,)或換行分隔,例如
分片號(hào)1=分片參數(shù)1,分片號(hào)2=分片參數(shù)2,...
。在應(yīng)用程序代碼中繼承
JavaProcessor
,通過(guò)JobContext.getShardingId()
獲取分片號(hào),通過(guò)JobContext.getShardingParameter()
獲取分片參數(shù)。示例:
@Component public class HelloWorldProcessor extends JavaProcessor { @Override public ProcessResult process(JobContext context) throws Exception { System.out.println("分片id=" + context.getShardingId() + ", 分片參數(shù)=" + context.getShardingParameter()); return new ProcessResult(true); } }
在執(zhí)行列表頁(yè)面,單擊目標(biāo)任務(wù)操作列的詳情,查看分片詳情。
Python分片任務(wù)
Python應(yīng)用想使用分布式跑批,只需要安裝Agent。腳本可以由SchedulerX維護(hù)。
下載SchedulerX的Agent,并通過(guò)Agent部署腳本任務(wù)。
在SchedulerX中創(chuàng)建Python分片任務(wù),更多信息,請(qǐng)參見(jiàn)創(chuàng)建調(diào)度任務(wù)。
sys.argv[1]
為分片號(hào),sys.argv[2]
為分片參數(shù)。分片參數(shù)之間以半角逗號(hào)(,)或換行分隔,例如
分片號(hào)1=分片參數(shù)1,分片號(hào)2=分片參數(shù)2,...
。在執(zhí)行列表頁(yè)面,單擊目標(biāo)任務(wù)操作列的詳情,查看分片詳情。
Shell和Go分片任務(wù)
Shell和Go版本的分片任務(wù)和Python類(lèi)似,創(chuàng)建步驟,請(qǐng)參見(jiàn)Python分片任務(wù)。