如何保證調(diào)度中心的HA(高可用)?
xxl-job-admin(調(diào)度中心)可以部署多臺(tái)機(jī)器,只需要客戶端配置的調(diào)度中心地址用,隔開配置多個(gè)即可??蛻舳藭?huì)在每一個(gè)調(diào)度中心進(jìn)行注冊
3、調(diào)度中心HA(中心式):調(diào)度采用中心式設(shè)計(jì),“調(diào)度中心”自研調(diào)度組件并支持集群部署,可保證調(diào)度中心HA;
如何保證任務(wù)執(zhí)行HA?
一個(gè)執(zhí)行器可以由多個(gè)機(jī)器注冊上來,這樣調(diào)度就可以從多個(gè)機(jī)器中取選擇,具體有第一個(gè)、最后一個(gè)、輪詢、隨機(jī)、一致性HASH、最不經(jīng)常使用、最近最久未使用、故障轉(zhuǎn)移、忙碌轉(zhuǎn)移等策略來執(zhí)行任務(wù)
4、執(zhí)行器HA(分布式):任務(wù)分布式執(zhí)行,任務(wù)”執(zhí)行器”支持集群部署,可保證任務(wù)執(zhí)行HA;
如何分片執(zhí)行任務(wù)?
執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇”分片廣播”情況下,一次任務(wù)調(diào)度將會(huì)廣播觸發(fā)對(duì)應(yīng)集群中所有執(zhí)行器執(zhí)行一次任務(wù),同時(shí)系統(tǒng)自動(dòng)傳遞分片參數(shù);可根據(jù)分片參數(shù)開發(fā)分片任務(wù);
“分片廣播” 以執(zhí)行器為維度進(jìn)行分片,支持動(dòng)態(tài)擴(kuò)容執(zhí)行器集群從而動(dòng)態(tài)增加分片數(shù)量,協(xié)同進(jìn)行業(yè)務(wù)處理;在進(jìn)行大數(shù)據(jù)量業(yè)務(wù)操作時(shí)可顯著提升任務(wù)處理能力和速度。
“分片廣播” 和普通任務(wù)開發(fā)流程一致,不同之處在于可以獲取分片參數(shù),獲取分片參數(shù)進(jìn)行分片業(yè)務(wù)處理。
1、分片任務(wù)場景:10個(gè)執(zhí)行器的集群來處理10w條數(shù)據(jù),每臺(tái)機(jī)器只需要處理1w條數(shù)據(jù),耗時(shí)降低10倍;
2、廣播任務(wù)場景:廣播執(zhí)行器機(jī)器運(yùn)行shell腳本、廣播集群節(jié)點(diǎn)進(jìn)行緩存更新等
那是如何實(shí)現(xiàn)的呢?其實(shí)是看目前這個(gè)執(zhí)行器有多少個(gè)機(jī)器注冊上來,然后每個(gè)機(jī)器給一個(gè)固定的分片序號(hào),業(yè)務(wù)根據(jù)每個(gè)機(jī)器拿到序號(hào)進(jìn)行分片。
e.g. 現(xiàn)在有一個(gè)用戶手機(jī)號(hào)加密任務(wù),目前用戶有40W,有四臺(tái)機(jī)器注冊上去了,那么第一臺(tái)機(jī)器拿到的分片index就是0,第二臺(tái)就是1,以此類推。這樣在代碼里就可以寫邏輯,如果分片參數(shù) index = 0 則查詢id在0~10W的用戶進(jìn)行處理。