溫馨提示×

溫馨提示×

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

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

go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)

發(fā)布時間:2020-07-09 01:08:07 來源:網(wǎng)絡(luò) 閱讀:1455 作者:梁十八 欄目:編程語言

crontab是單機(jī)工具
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
(所有worker都在調(diào)度,如果有1000個任務(wù),所有worker都在調(diào)用者1000個任務(wù)。對于編譯型語言來說,排序一個一千萬的數(shù)組只需要一秒,對于一千一萬的調(diào)度,無需擔(dān)心性能)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
(相當(dāng)于完成一個到worker集群的通知,通知它們殺死任務(wù))
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
(
1.etcd中的任務(wù)會實時同步給worker,worker的調(diào)度協(xié)程會更新內(nèi)存中維護(hù)的任務(wù)列表。etcd在內(nèi)存中會鏡像一份和etcd完全一樣的任務(wù)清單,通過監(jiān)聽機(jī)制實現(xiàn)。
2.調(diào)度協(xié)程會周期性檢查所有任務(wù)的cron任務(wù)表達(dá)式,掃描到期任務(wù),到期任務(wù)會交給執(zhí)行協(xié)程去執(zhí)行。
3.同時,調(diào)度協(xié)程還會監(jiān)聽一個任務(wù)控制事件(想要殺死某個任務(wù)),收到后,多個協(xié)程會強(qiáng)制中斷執(zhí)行中的子進(jìn)程(shell命令)。
4.執(zhí)行協(xié)程返回結(jié)果給調(diào)度協(xié)程,調(diào)度協(xié)程可以更新內(nèi)存中任務(wù)狀態(tài),當(dāng)任務(wù)調(diào)度給執(zhí)行協(xié)程的時候,任務(wù)的狀態(tài)就被更新為執(zhí)行中了。任務(wù)結(jié)果返回就將狀態(tài)改為執(zhí)行完成。然后將執(zhí)行結(jié)果投遞給日志協(xié)程。
)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
(worker是個集群,每個workder任務(wù)清單都是從etcd中全量同步的,所以大家都按照每個任務(wù)的調(diào)度周期,在同時調(diào)度,對于同一個任務(wù),比如每秒執(zhí)行的任務(wù),所有worker每隔一秒都會去執(zhí)行這個任務(wù)。如果不做并發(fā)控制,所有worker會同一時刻全部執(zhí)行一次這個任務(wù)。我們希望一個任務(wù)同一時刻只被執(zhí)行一次,不允許任務(wù)并發(fā)調(diào)度。如何防止并發(fā)呢?去etcd中搶鎖,大家都要調(diào)度,誰搶到誰調(diào)度,其他人等待下次過期,下次接著搶,搶到我就執(zhí)行。這種很依賴各個時間節(jié)點的同步,校時不同會讓有些機(jī)器老是先搶到鎖。我們需要時間校準(zhǔn)保障一致,還可以做些小策略,比如隨機(jī)睡眠n-m毫秒)
go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)

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

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

AI