什么是分布式任务调度
當(dāng)前軟件的架構(gòu)已經(jīng)開始向分布式架構(gòu)轉(zhuǎn)變,將單體結(jié)構(gòu)拆分為若干服務(wù),服務(wù)之間通過網(wǎng)絡(luò)交互來完成業(yè)務(wù)處理。在分布式架構(gòu)下,一個(gè)服務(wù)往往會(huì)部署多個(gè)實(shí)例來運(yùn)行我們的業(yè)務(wù),如果在這種分布式系統(tǒng)環(huán)境下運(yùn)行任務(wù)調(diào)度,我們稱之為分布式任務(wù)調(diào)度。
將任務(wù)調(diào)度程序分布式構(gòu)建,這樣就可以具有分布式系統(tǒng)的特點(diǎn),并且提高任務(wù)的調(diào)度處理能力:
1、并行任務(wù)調(diào)度
并行任務(wù)調(diào)度實(shí)現(xiàn)靠多線程,如果有大量任務(wù)需要調(diào)度,此時(shí)光靠多線程就會(huì)有瓶頸了,因?yàn)橐慌_(tái)計(jì)算機(jī)CPU的處理能力是有限的。
如果將任務(wù)調(diào)度程序分布式部署,每個(gè)結(jié)點(diǎn)還可以部署為集群,這樣就可以讓多臺(tái)計(jì)算機(jī)共同去完成任務(wù)調(diào)度,我們可以將任務(wù)分割為若干個(gè)分片,由不同的實(shí)例并行執(zhí)行,來提高任務(wù)調(diào)度的處理效率。
2、高可用
若某一個(gè)實(shí)例宕機(jī),不影響其他實(shí)例來執(zhí)行任務(wù)。
3、彈性擴(kuò)容
當(dāng)集群中增加實(shí)例就可以提高并執(zhí)行任務(wù)的處理效率。
4、任務(wù)管理與監(jiān)測
對系統(tǒng)中存在的所有定時(shí)任務(wù)進(jìn)行統(tǒng)一的管理及監(jiān)測。讓開發(fā)人員及運(yùn)維人員能夠時(shí)刻了解任務(wù)執(zhí)行情況,從而做出快速的應(yīng)急處理響應(yīng)。
分布式任務(wù)調(diào)度面臨的問題:
當(dāng)任務(wù)調(diào)度以集群方式部署,同一個(gè)任務(wù)調(diào)度可能會(huì)執(zhí)行多次,例如:電商系統(tǒng)定期發(fā)放優(yōu)惠券,就可能重復(fù)發(fā)放優(yōu)惠券,對公司造成損失,信用卡還款提醒就會(huì)重復(fù)執(zhí)行多次,給用戶造成煩惱,所以我們需要控制相同的任務(wù)在多個(gè)運(yùn)行實(shí)例上只執(zhí)行一次。常見解決方案:
-
分布式鎖,多個(gè)實(shí)例在任務(wù)執(zhí)行前首先需要獲取鎖,如果獲取失敗那么就證明有其他服務(wù)已經(jīng)在運(yùn)行,如果獲取成功那么證明沒有服務(wù)在運(yùn)行定時(shí)任務(wù),那么就可以執(zhí)行。
-
ZooKeeper選舉,利用ZooKeeper對Leader實(shí)例執(zhí)行定時(shí)任務(wù),執(zhí)行定時(shí)任務(wù)的時(shí)候判斷自己是否是Leader,如果不是則不執(zhí)行,如果是則執(zhí)行業(yè)務(wù)邏輯,這樣也能達(dá)到目的。
總結(jié)
以上是生活随笔為你收集整理的什么是分布式任务调度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是任务调度
- 下一篇: Elastic-Job简介