溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

分布式調(diào)度框架xxl-job的作用是什么

發(fā)布時(shí)間:2021-06-24 10:05:25 來(lái)源:億速云 閱讀:1585 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“分布式調(diào)度框架xxl-job的作用是什么”,在日常操作中,相信很多人在分布式調(diào)度框架xxl-job的作用是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”分布式調(diào)度框架xxl-job的作用是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1、定時(shí)任務(wù)使用場(chǎng)景
定時(shí)備份數(shù)據(jù),訂單超時(shí)自動(dòng)取消,按時(shí)間段統(tǒng)計(jì)信息,優(yōu)惠券要過(guò)期給用戶發(fā)送一個(gè)提醒等等。

2、定時(shí)任務(wù)的基本概念
執(zhí)行器:負(fù)責(zé)執(zhí)行任務(wù)。
調(diào)度器:根據(jù)配置(cron表達(dá)式)詳情,告知執(zhí)行器去執(zhí)行任務(wù)
任務(wù):自己的業(yè)務(wù)實(shí)現(xiàn),比如優(yōu)惠券要過(guò)期給用戶發(fā)送一個(gè)提醒。

3、spring中使用定時(shí)任務(wù)。

@Slf4j
@Component //使spring管理
@EnableScheduling //定時(shí)任務(wù)注解
public class Timer {
    @Autowired
    IPayRecordService iPayRecordService;

    @Scheduled(cron = "0/10 * * * * ?")
    public void notifyOrder(){
        log.info("timer notifyOrder ....");
        try {
            iPayRecordService.notifyOrder();
        }catch (Exception e){
            log.error("notifyOrder error:",e);
        }

    }


}

4、spring定時(shí)任務(wù)存在的問(wèn)題
不支持集群部署:比如你啟動(dòng)三個(gè)實(shí)例,每個(gè)實(shí)例都會(huì)去觸發(fā)執(zhí)行器去執(zhí)行“優(yōu)惠券要過(guò)期給用戶發(fā)送一個(gè)提醒”這個(gè)任務(wù),這時(shí)候就產(chǎn)生了重復(fù)執(zhí)行的問(wèn)題。 通常是單機(jī)部署的,單機(jī)就存在掛掉的風(fēng)險(xiǎn)。
不支持失敗重試:出現(xiàn)異常后任務(wù)終結(jié),不能根據(jù)執(zhí)行狀態(tài),控制任務(wù)重新執(zhí)行
不支持動(dòng)態(tài)管理:不支持不重啟任務(wù)情況下,關(guān)閉和啟動(dòng)任務(wù),修改cron表達(dá)式等。
無(wú)報(bào)警:任務(wù)失敗后不能發(fā)送報(bào)警通知
不支持分片任務(wù)
等等。

5、分布式定時(shí)任務(wù)框架的實(shí)現(xiàn)思路

分布式調(diào)度框架xxl-job的作用是什么

調(diào)度中心會(huì)配置 cron表達(dá)式,路由策略,處理類(lèi)的bean實(shí)例,比如demoHandler。

路由策略意思就是如何選擇執(zhí)行器,比如隨機(jī)選擇一個(gè),輪訓(xùn)等。調(diào)度中心通過(guò)RPC 通知執(zhí)行器去執(zhí)行任務(wù),會(huì)帶上處理bean的名字(demoHandler),進(jìn)入執(zhí)行器的任務(wù)隊(duì)列,執(zhí)行器的執(zhí)行引擎會(huì)從任務(wù)隊(duì)列里取出任務(wù),根據(jù)bean 的名字獲取對(duì)應(yīng)的bean實(shí)例進(jìn)行執(zhí)行。

執(zhí)行器需要向調(diào)度中心發(fā)生心跳,對(duì)于長(zhǎng)時(shí)間沒(méi)有收到心跳的執(zhí)行器,調(diào)度中心會(huì)將其剔除。

6、為什么要用XXL-JOB?
XXL-JOB是一個(gè)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展。現(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。
目前已有多家公司接入xxl-job,包括比較知名的大眾點(diǎn)評(píng),京東,優(yōu)信二手車(chē),北京尚德,360金融 (360),聯(lián)想集團(tuán) (聯(lián)想),易信 (網(wǎng)易)等等....

7、為什么不用quartz?
Quartz存在一些問(wèn)題:

問(wèn)題一:調(diào)用API的的方式操作任務(wù),不人性化;
問(wèn)題二:需要持久化業(yè)務(wù)QuartzJobBean到底層數(shù)據(jù)表中,系統(tǒng)侵入性相當(dāng)嚴(yán)重。
問(wèn)題三:調(diào)度邏輯和QuartzJobBean耦合在同一個(gè)項(xiàng)目中,這將導(dǎo)致一個(gè)問(wèn)題,在調(diào)度任務(wù)數(shù)量逐漸增多,同時(shí)調(diào)度任務(wù)邏輯逐漸加重的情況下,此時(shí)調(diào)度系統(tǒng)的性能將大大受限于業(yè)務(wù);
問(wèn)題四:quartz底層以“搶占式”獲取DB鎖并由搶占成功節(jié)點(diǎn)負(fù)責(zé)運(yùn)行任務(wù),會(huì)導(dǎo)致節(jié)點(diǎn)負(fù)載懸殊非常大;而XXL-JOB通過(guò)執(zhí)行器實(shí)現(xiàn)“協(xié)同分配式”運(yùn)行任務(wù),充分發(fā)揮集群優(yōu)勢(shì),負(fù)載各節(jié)點(diǎn)均衡。
XXL-JOB彌補(bǔ)了quartz的上述不足之處。

8、XXL-JOB高可用調(diào)度中心會(huì)部署多臺(tái)xxl-job-admin,如何保證多個(gè)調(diào)度中心分發(fā)任務(wù)只分發(fā)一次?(版本V2.0.1)

調(diào)度采用中心式設(shè)計(jì),“調(diào)度中心”基于集群Quartz實(shí)現(xiàn)并支持集群部署,可保證調(diào)度中心HA;并通過(guò)數(shù)據(jù)庫(kù)悲觀鎖來(lái)實(shí)現(xiàn)任務(wù)在集群的多臺(tái)機(jī)器中只執(zhí)行一次

分布式調(diào)度框架xxl-job的作用是什么

到此,關(guān)于“分布式調(diào)度框架xxl-job的作用是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI