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