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

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

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、遼中ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的遼中網(wǎng)站制作公司

網(wǎng)頁(yè)題目:go任務(wù)調(diào)度11(分布式crontab架構(gòu)分析)
文章來(lái)源:http://muchs.cn/article12/piecdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、商城網(wǎng)站品牌網(wǎng)站建設(shè)、App開(kāi)發(fā)、App設(shè)計(jì)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)