本發(fā)明涉及分布式調(diào)度系統(tǒng),尤其涉及一種分布式任務(wù)調(diào)度方法、裝置及系統(tǒng)。
背景技術(shù):
調(diào)度系統(tǒng)一般是指以時(shí)間觸發(fā)或者事件觸發(fā)的方式在計(jì)算機(jī)上執(zhí)行相應(yīng)任務(wù)的系統(tǒng)。分布式主要是指將任務(wù)分布到不同計(jì)算機(jī),任務(wù)執(zhí)行有上下游,需要協(xié)同完成任務(wù)的工作方式。調(diào)度系統(tǒng)經(jīng)常以分布式的方式實(shí)現(xiàn),即形成分布式調(diào)度系統(tǒng),主要用于在計(jì)算機(jī)集群之間執(zhí)行定時(shí)或者被事件觸發(fā)的任務(wù),上游例如可以是調(diào)度服務(wù)器,下游例如可以是work(工作)服務(wù)器。
作為示例,一種場景是:有一項(xiàng)任務(wù)需要每天定時(shí)執(zhí)行(例如在每天的13:00給商家打款),則調(diào)度服務(wù)器需要每次選擇一臺工作服務(wù)器來執(zhí)行一次該任務(wù)。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),這類任務(wù)的要求非常高,例如因?yàn)樯婕暗劫Y金等敏感環(huán)節(jié),所以需要特別高的可靠性,任務(wù)每次都必須按時(shí)執(zhí)行,并且任務(wù)每次執(zhí)行時(shí)只能執(zhí)行一次,否則就會帶來嚴(yán)重后果。然而在現(xiàn)有技術(shù)中,由調(diào)度服務(wù)器每次選擇一臺工作服務(wù)器來執(zhí)行一次該任務(wù)的工作方式卻無法確保高可靠性,這是因?yàn)椋?/p>
在這種工作方式下,調(diào)度服務(wù)器需要承擔(dān)喚醒工作服務(wù)器的責(zé)任,當(dāng)任務(wù)繁多時(shí)會導(dǎo)致調(diào)度服務(wù)器工作壓力非常大;同時(shí),調(diào)度服務(wù)器需要事先確定哪些工作服務(wù)器正常,這樣有任務(wù)時(shí)才能從中選擇一臺去執(zhí)行,但是無法確保先前認(rèn)為是正常的工作服務(wù)器當(dāng)?shù)搅朔峙淙蝿?wù)時(shí)仍是正常的;此外,調(diào)度服務(wù)器定時(shí)下達(dá)任務(wù)并令工作服務(wù)器執(zhí)行,而工作服務(wù)器接收任務(wù)是需要一定的時(shí)間的(因?yàn)楹芏鄷r(shí)候一項(xiàng)任務(wù)可能涉及到文件等數(shù)據(jù)),這就導(dǎo)致該任務(wù)執(zhí)行時(shí)間會比預(yù)定時(shí)間靠后,造成任務(wù)執(zhí)行的延遲。這些都使得現(xiàn)有技術(shù)無法滿足高可靠性的需求。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種分布式任務(wù)調(diào)度方法、裝置及系統(tǒng),以滿足高可靠性的需求。
根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種分布式任務(wù)調(diào)度方法,所述方法用于調(diào)度設(shè)備,所述方法包括:
向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;
根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
可選的,向所述第一工作設(shè)備發(fā)送允許執(zhí)行所述任務(wù)的指示之后,所述方法還包括:
如果在第一預(yù)設(shè)時(shí)長內(nèi)未接收到所述第一工作設(shè)備反饋的所述任務(wù)的執(zhí)行狀態(tài)信息,則通知所述第一工作設(shè)備不再執(zhí)行所述任務(wù),以及,
在候選的其他工作設(shè)備中按照第二預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
可選的,向候選工作設(shè)備下發(fā)任務(wù)信息之后,所述方法還包括:
如果當(dāng)需要執(zhí)行所述任務(wù)時(shí)在第二預(yù)設(shè)時(shí)長內(nèi)未收到任何工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,則在候選工作設(shè)備中按照第三預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
根據(jù)本發(fā)明實(shí)施例的第二方面,提供一種分布式任務(wù)調(diào)度方法,所述方法用于第一工作設(shè)備,所述方法包括:
接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);
當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;
根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
可選的,所述方法還包括:
在執(zhí)行所述任務(wù)的過程中,按照第四預(yù)設(shè)策略向所述調(diào)度設(shè)備反饋所述任務(wù)的執(zhí)行狀態(tài)信息。
根據(jù)本發(fā)明實(shí)施例的第三方面,提供一種分布式任務(wù)調(diào)度裝置,所述裝置包括:
任務(wù)預(yù)下發(fā)模塊,用于向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
啟動(dòng)消息接收模塊,用于接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;
任務(wù)調(diào)度模塊,用于根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
可選的,所述任務(wù)調(diào)度模塊還用于:
如果在第一預(yù)設(shè)時(shí)長內(nèi)未接收到所述第一工作設(shè)備反饋的所述任務(wù)的執(zhí)行狀態(tài)信息,則通知所述第一工作設(shè)備不再執(zhí)行所述任務(wù),以及,在候選的其他工作設(shè)備中按照第二預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
可選的,所述任務(wù)調(diào)度模塊還用于:
如果當(dāng)需要執(zhí)行所述任務(wù)時(shí)在第二預(yù)設(shè)時(shí)長內(nèi)未收到任何工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,則在候選工作設(shè)備中按照第三預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
根據(jù)本發(fā)明實(shí)施例的第四方面,提供一種分布式任務(wù)調(diào)度裝置,所述裝置包括:
任務(wù)預(yù)接收模塊,用于接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
任務(wù)搶占模塊,用于當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);
啟動(dòng)消息發(fā)送模塊,用于當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;
任務(wù)處理模塊,用于根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
根據(jù)本發(fā)明實(shí)施例的第五方面,提供、一種分布式任務(wù)調(diào)度系統(tǒng),所述系統(tǒng)包括調(diào)度設(shè)備和第一工作設(shè)備;
所述調(diào)度設(shè)備用于:向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示;
所述第一工作設(shè)備用于:接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
本發(fā)明實(shí)施例還提供了在一種調(diào)度設(shè)備,所述調(diào)度設(shè)備的結(jié)構(gòu)中包括處理器和存儲器,所述存儲器用于存儲支持調(diào)度設(shè)備執(zhí)行上述第一方面中分布式任務(wù)調(diào)度方法的程序,所述處理器被配置為用于執(zhí)行所述存儲器中存儲的程序。所述調(diào)度設(shè)備還可以包括通信接口,用于調(diào)度設(shè)備與其他設(shè)備或通信網(wǎng)絡(luò)通信。
本發(fā)明實(shí)施例還提供了在一種工作設(shè)備,所述工作設(shè)備的結(jié)構(gòu)中包括處理器和存儲器,所述存儲器用于存儲支持工作設(shè)備執(zhí)行上述第一方面中分布式任務(wù)調(diào)度方法的程序,所述處理器被配置為用于執(zhí)行所述存儲器中存儲的程序。所述工作設(shè)備還可以包括通信接口,用于工作設(shè)備與其他設(shè)備或通信網(wǎng)絡(luò)通信。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲介質(zhì),用于儲存分布式任務(wù)調(diào)度裝置所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述第一方面中分布式任務(wù)調(diào)度的方法為分布式任務(wù)調(diào)度裝置所涉及的程序。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲介質(zhì),用于儲存分布式任務(wù)調(diào)度裝置所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述第二方面中分布式任務(wù)調(diào)度的方法為分布式任務(wù)調(diào)度裝置所涉及的程序。
在本發(fā)明實(shí)施例中,調(diào)度設(shè)備預(yù)先向各候選工作設(shè)備下發(fā)任務(wù)信息,其中任務(wù)信息中至少包括了任務(wù)內(nèi)容和執(zhí)行時(shí)間,到了需要執(zhí)行該任務(wù)時(shí),各候選工作設(shè)備通過競爭的方式爭奪該任務(wù)的執(zhí)行權(quán),當(dāng)一個(gè)工作設(shè)備搶占到了執(zhí)行權(quán)后,才能向調(diào)度設(shè)備發(fā)送啟動(dòng)該任務(wù)的信息。這樣,因?yàn)楣ぷ髟O(shè)備可根據(jù)任務(wù)信息中的執(zhí)行時(shí)間自動(dòng)喚醒自己去搶占、執(zhí)行任務(wù),無需調(diào)度設(shè)備喚醒工作設(shè)備,也無需調(diào)度設(shè)備對工作設(shè)備進(jìn)行選擇,所以減輕了調(diào)度設(shè)備的壓力;并且,由于任務(wù)信息是提前發(fā)送的,所以避免了需要執(zhí)行任務(wù)時(shí)因接收任務(wù)信息而造成的延遲;同時(shí),由于通常只有工作正常的工作設(shè)備才能參與競爭,所以也就確保了最終執(zhí)行任務(wù)的工作設(shè)備是正常設(shè)備。綜上,本發(fā)明實(shí)施例可以很好的滿足對高可靠性的需求。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度方法的流程圖;
圖2是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度方法的流程圖;
圖3是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度方法的流程圖;
圖4是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種場景示意圖;
圖5是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度裝置的框圖;
圖6是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度裝置的框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
在本發(fā)明的說明書和權(quán)利要求書及上述附圖中的描述的一些流程中,包含了按照特定順序出現(xiàn)的多個(gè)操作,但是應(yīng)該清楚了解,這些操作可以不按照其在本文中出現(xiàn)的順序來執(zhí)行或并行執(zhí)行,操作的序號如101、102等,僅僅是用于區(qū)分開各個(gè)不同的操作,序號本身不代表任何的執(zhí)行順序。另外,這些流程可以包括更多或更少的操作,并且這些操作可以按順序執(zhí)行或并行執(zhí)行。需要說明的是,本文中的“第一”、“第二”等描述,是用于區(qū)分不同的消息、設(shè)備、模塊等,不代表先后順序,也不限定“第一”和“第二”是不同的類型。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度方法的流程圖。作為示例,該方法可用于調(diào)度設(shè)備,例如調(diào)度服務(wù)器、中央服務(wù)器等。
參見圖1所示,該方法可以包括以下步驟:
步驟s101,向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間。
作為示例工作設(shè)備可以為work(工作)服務(wù)器。為了避免當(dāng)需要執(zhí)行任務(wù)時(shí)因接收任務(wù)信息而造成延遲,在本發(fā)明實(shí)施例中,任務(wù)信息由調(diào)度設(shè)備提前下發(fā)給各候選工作設(shè)備。
任務(wù)內(nèi)容可以是執(zhí)行一個(gè)腳本、執(zhí)行一條sql語句或者是更復(fù)雜內(nèi)容等,對此本實(shí)施例并不進(jìn)行限制。
此外任務(wù)信息中除了可以包含任務(wù)內(nèi)容和執(zhí)行時(shí)間,還可以進(jìn)一步包含其他信息,對此本實(shí)施例也并不進(jìn)行限制。
作為示例,任務(wù)信息具體可以包含以下內(nèi)容:
執(zhí)行時(shí)間,比如每天的13點(diǎn)23分;
具體執(zhí)行的任務(wù)內(nèi)容,可以稱為算子e,具體可以是執(zhí)行一條sql語句;
任務(wù)執(zhí)行前和執(zhí)行后(或者異常時(shí))匯報(bào)日志的目的地,例如目的地可以就是調(diào)度服務(wù)器;
重試次數(shù),報(bào)警接收人等;
搶占任務(wù)執(zhí)行權(quán)的相關(guān)參數(shù),以zookeeper(簡稱zk)技術(shù)為例,可以是搶占zk的znode路徑,比如是/task/work/113等。
步驟s102,接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備。
在本實(shí)施例中不再由調(diào)度設(shè)備指定或選擇哪臺工作設(shè)備去執(zhí)行任務(wù),而是由各工作設(shè)備以競爭、搶占的方式確定任務(wù)執(zhí)行權(quán),各工作設(shè)備可根據(jù)任務(wù)信息中的執(zhí)行時(shí)間自動(dòng)喚醒自己去搶占、執(zhí)行任務(wù),而無需調(diào)度設(shè)備喚醒工作設(shè)備,也無需調(diào)度設(shè)備對工作設(shè)備進(jìn)行選擇,從而減輕了調(diào)度設(shè)備的壓力;同時(shí),由于通常只有工作正常的工作設(shè)備才能參與競爭,所以也就確保了最終執(zhí)行任務(wù)的工作設(shè)備是正常設(shè)備。
以候選工作設(shè)備是三臺工作服務(wù)器b、c、d為例,工作服務(wù)器b、c、d接收到任務(wù)信息之后,可以在本地形成定時(shí)任務(wù)(如crontab定時(shí)任務(wù)),然后在每天的13點(diǎn)23分,三臺工作服務(wù)器b、c、d上的crontab會準(zhǔn)時(shí)啟動(dòng)zkclient命令,client通過getchildren獲取所有的/task/work/下znode列表,并且設(shè)置一個(gè)watcher等待通知,返回值有多少個(gè)znode數(shù)量就對應(yīng)client來競選。返回的節(jié)點(diǎn)列表進(jìn)行排序,找到最小的worker編號,如果是和zk服務(wù)器分配的一致,那么就代表自己的編號是最小的,自己就是需要執(zhí)行命令的工作服務(wù)器。如果發(fā)現(xiàn)自己的編號不是最小,那就退出本次任務(wù)搶占。
對于成功搶占了任務(wù)執(zhí)行權(quán)的工作設(shè)備,即第一工作設(shè)備,會立即向調(diào)度設(shè)備發(fā)送一條啟動(dòng)任務(wù)的消息,以通知調(diào)度設(shè)備自己搶到了任務(wù)執(zhí)行權(quán)。此外第一工作設(shè)備還可告知調(diào)度設(shè)備該任務(wù)已經(jīng)具備開始執(zhí)行的時(shí)間、執(zhí)行的是哪條任務(wù)、第一工作設(shè)備是哪臺設(shè)備等信息。
步驟s103,根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
作為示例可參見圖2所示,在本實(shí)施例或本發(fā)明其他某些實(shí)施例中,根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示,可以包括:
步驟s1031,判斷所述任務(wù)是否已由其他工作設(shè)備執(zhí)行;
步驟s1032,如果所述任務(wù)未由其他工作設(shè)備執(zhí)行,則向所述第一工作設(shè)備發(fā)送允許執(zhí)行所述任務(wù)的指示;
步驟s1033,如果所述任務(wù)已由其他工作設(shè)備執(zhí)行,則向所述第一工作設(shè)備發(fā)送禁止執(zhí)行所述任務(wù)的指示。
在大部分正常情況下,調(diào)度設(shè)備將允許搶占到執(zhí)行權(quán)的工作設(shè)備執(zhí)行該任務(wù)。而在一些特殊情況下:
例如一種情況下,其他工作設(shè)備在第一工作設(shè)備之前已經(jīng)搶先發(fā)送了啟動(dòng)所述任務(wù)的信息,而由于一些異常導(dǎo)致第一工作設(shè)備也發(fā)送了啟動(dòng)所述任務(wù)的消息,則第一工作設(shè)備將被禁止執(zhí)行所述任務(wù)。
例如再一種情況下,雖然第一工作設(shè)備搶占成功,即搶到了該任務(wù)的執(zhí)行權(quán),但是由于出現(xiàn)異常,啟動(dòng)所述任務(wù)的消息并未發(fā)送成功,那么過了一段時(shí)間之后,即使啟動(dòng)所述任務(wù)的消息最終發(fā)送成功,但此時(shí)調(diào)度設(shè)備通常已經(jīng)指定其他工作設(shè)備來執(zhí)行該任務(wù),所以第一工作設(shè)備仍將被禁止執(zhí)行該任務(wù)。
在本實(shí)施例或本發(fā)明其他某些實(shí)施例中,向所述第一工作設(shè)備發(fā)送允許執(zhí)行所述任務(wù)的指示之后,所述方法還可以包括:
如果在第一預(yù)設(shè)時(shí)長內(nèi)未接收到所述第一工作設(shè)備反饋的所述任務(wù)的執(zhí)行狀態(tài)信息,則通知所述第一工作設(shè)備不再執(zhí)行所述任務(wù),以及,
在候選的其他工作設(shè)備中按照第二預(yù)設(shè)策略(例如隨機(jī))選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
為例保證任務(wù)的正常執(zhí)行,第一工作設(shè)備在被允許執(zhí)行任務(wù)后應(yīng)繼續(xù)向調(diào)度設(shè)備上報(bào)該任務(wù)的執(zhí)行情況,也即應(yīng)上報(bào)執(zhí)行狀態(tài)信息。如果調(diào)度設(shè)備在第一預(yù)設(shè)時(shí)長內(nèi)未收到執(zhí)行狀態(tài)信息,出現(xiàn)超時(shí),則調(diào)度設(shè)備可認(rèn)為出現(xiàn)了異常,然后采取措施,例如:
通知第一工作設(shè)備不再執(zhí)行所述任務(wù),即命令其對執(zhí)行該任務(wù)的進(jìn)程進(jìn)行關(guān)閉(kill);
在候選的其他工作設(shè)備中隨機(jī)選擇一臺執(zhí)行該任務(wù);
此外,還可以給用戶發(fā)送第一工作設(shè)備執(zhí)行任務(wù)超時(shí)或異常的報(bào)警。
在本實(shí)施例或本發(fā)明其他某些實(shí)施例中,向候選工作設(shè)備下發(fā)任務(wù)信息之后,所述方法還包括:
如果當(dāng)需要執(zhí)行所述任務(wù)時(shí)在第二預(yù)設(shè)時(shí)長(例如5s)內(nèi)未收到任何工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,則在候選工作設(shè)備中按照第三預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
例如,搶到了任務(wù)執(zhí)行權(quán)的第一工作設(shè)備可能出現(xiàn)了異常,所以未成功發(fā)送啟動(dòng)所述任務(wù)的消息,致使調(diào)度設(shè)備未收到任務(wù)工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息。此時(shí)調(diào)度設(shè)備可以在候選工作設(shè)備中按照第三預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。其中第三預(yù)設(shè)策略可以是隨機(jī)選擇,或者是選擇最近正常執(zhí)行過任務(wù)的工作設(shè)備,等等,對此本實(shí)施例并不進(jìn)行限制。另外過了一段時(shí)間之后,即使第一工作設(shè)備最終成功發(fā)送了啟動(dòng)所述任務(wù)的消息,但此時(shí)因?yàn)檎{(diào)度設(shè)備已經(jīng)選擇其他設(shè)備來執(zhí)行該任務(wù),所以第一工作設(shè)備仍將被禁止執(zhí)行該任務(wù)。
在本實(shí)施例中,調(diào)度設(shè)備預(yù)先向各候選工作設(shè)備下發(fā)任務(wù)信息,其中任務(wù)信息中至少包括了任務(wù)內(nèi)容和執(zhí)行時(shí)間,到了需要執(zhí)行該任務(wù)時(shí),各候選工作設(shè)備通過競爭的方式爭奪該任務(wù)的執(zhí)行權(quán),當(dāng)一個(gè)工作設(shè)備搶占到了執(zhí)行權(quán)后,才能向調(diào)度設(shè)備發(fā)送啟動(dòng)該任務(wù)的信息。這樣,因?yàn)楣ぷ髟O(shè)備可根據(jù)任務(wù)信息中的執(zhí)行時(shí)間自動(dòng)喚醒自己去搶占、執(zhí)行任務(wù),無需調(diào)度設(shè)備喚醒工作設(shè)備,也無需調(diào)度設(shè)備對工作設(shè)備進(jìn)行選擇,所以減輕了調(diào)度設(shè)備的壓力;并且,由于任務(wù)信息是提前發(fā)送的,所以避免了需要執(zhí)行任務(wù)時(shí)因接收任務(wù)信息而造成的延遲;同時(shí),由于通常只有工作正常的工作設(shè)備才能參與競爭,所以也就確保了最終執(zhí)行任務(wù)的工作設(shè)備是正常設(shè)備。綜上,本實(shí)施例可以很好的滿足對高可靠性的需求。
圖3是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度方法的流程圖。作為示例,該方法可用于工作設(shè)備,例如工作服務(wù)器等。
參見圖3所示,該方法可以包括以下步驟:
步驟s301,接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間。
為了避免當(dāng)需要執(zhí)行任務(wù)時(shí)因接收任務(wù)信息而造成的延遲,在本發(fā)明實(shí)施例中任務(wù)信息由調(diào)度設(shè)備提前下發(fā)給各候選工作設(shè)備。任務(wù)內(nèi)容可以是執(zhí)行一個(gè)腳本、執(zhí)行一條sql語句或者是更復(fù)雜內(nèi)容等,對此本實(shí)施例并不進(jìn)行限制。任務(wù)信息中除了可以包含任務(wù)內(nèi)容和執(zhí)行時(shí)間,還可以進(jìn)一步包含其他信息,對此本實(shí)施例也并不進(jìn)行限制。
步驟s302,當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán)。
下面以zookeeper應(yīng)用場景為例,對如何競爭所述任務(wù)的執(zhí)行權(quán)進(jìn)行進(jìn)一步的說明:
zookeeper應(yīng)用場景中提出了對于服務(wù)器集群中節(jié)點(diǎn)管理的問題,對于服務(wù)器集群中正在承擔(dān)任務(wù)的工作服務(wù)器可稱為master服務(wù)器(也即第一工作設(shè)備),其他工作服務(wù)器稱為slave服務(wù)器。zookeeper可保證集群中master可用性和唯一性。圖4為本發(fā)明實(shí)施例中zookeeper應(yīng)用場景的一個(gè)示意圖,在圖4中調(diào)度設(shè)備為調(diào)度服務(wù)器a,工作設(shè)備分別是工作服務(wù)器b、c、d。
工作服務(wù)器設(shè)置zkclient連接到zk上,判斷znode的路徑/roles/workers是否存在,如果不存在則建立該路徑,znode的類型是persistent類型,保證不會隨著client的session斷開而消失。
client(客戶端)在/roles/workers下面建立一個(gè)sequence|ephemeral類型的znode,前綴可以是worker,由zk保證znode編號是遞增而且是暫時(shí)的,一旦session斷開,創(chuàng)建的znode也會消失。這個(gè)時(shí)候就會返回給client一個(gè)znode編號。
client通過getchildren獲取所有的/roles/workers下znode列表,并且設(shè)置一個(gè)watcher等待通知,返回值有多少個(gè)znode數(shù)量就對應(yīng)client來競選。
對于返回的節(jié)點(diǎn)列表進(jìn)行排序,找到最小的worker編號,如果是和zk服務(wù)器分配的一致,那么就代表自己的編號是最小的,自己就是master。如果發(fā)現(xiàn)自己的編號不是最小,那么就等待通知,一旦watcher觸發(fā),就在watcher回到上一步。
上面的機(jī)制主要利用了zk的幾個(gè)特性:
對于n個(gè)客戶端同時(shí)請求創(chuàng)建一個(gè)znode,zk能保證順序的一致性,并且保證每個(gè)客戶端創(chuàng)建的znode節(jié)點(diǎn)是遞增并且唯一;
因?yàn)閯?chuàng)建的znode是臨時(shí)的,一旦session斷開,那么znode就會從zk上消失,從而給每個(gè)設(shè)置watcher的客戶端發(fā)送通知,讓每個(gè)客戶端重新競選master,編號小的肯定是master,保證了唯一性。
步驟s303,當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息。
步驟s304,根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
此外,為例保證任務(wù)的正常執(zhí)行,工作設(shè)備在被允許執(zhí)行任務(wù)后應(yīng)繼續(xù)向調(diào)度設(shè)備上報(bào)該任務(wù)的執(zhí)行情況,也即應(yīng)上報(bào)執(zhí)行狀態(tài)信息,所以所述方法還可以包括:
在執(zhí)行所述任務(wù)的過程中,按照第四預(yù)設(shè)策略向所述調(diào)度設(shè)備反饋所述任務(wù)的執(zhí)行狀態(tài)信息。
例如可以定時(shí)反饋所述任務(wù)的執(zhí)行狀態(tài)信息,以使調(diào)度設(shè)備掌握任務(wù)的執(zhí)行情況。
在本實(shí)施例中,調(diào)度設(shè)備預(yù)先向各候選工作設(shè)備下發(fā)任務(wù)信息,其中任務(wù)信息中至少包括了任務(wù)內(nèi)容和執(zhí)行時(shí)間,到了需要執(zhí)行該任務(wù)時(shí),各候選工作設(shè)備通過競爭的方式爭奪該任務(wù)的執(zhí)行權(quán),當(dāng)一個(gè)工作設(shè)備搶占到了執(zhí)行權(quán)后,才能向調(diào)度設(shè)備發(fā)送啟動(dòng)該任務(wù)的信息。這樣,因?yàn)楣ぷ髟O(shè)備可根據(jù)任務(wù)信息中的執(zhí)行時(shí)間自動(dòng)喚醒自己去搶占、執(zhí)行任務(wù),無需調(diào)度設(shè)備喚醒工作設(shè)備,也無需調(diào)度設(shè)備對工作設(shè)備進(jìn)行選擇,所以減輕了調(diào)度設(shè)備的壓力;并且,由于任務(wù)信息是提前發(fā)送的,所以避免了需要執(zhí)行任務(wù)時(shí)因接收任務(wù)信息而造成的延遲;同時(shí),由于通常只有工作正常的工作設(shè)備才能參與競爭,所以也就確保了最終執(zhí)行任務(wù)的工作設(shè)備是正常設(shè)備。綜上,本實(shí)施例可以很好的滿足對高可靠性的需求。
下述為本發(fā)明裝置實(shí)施例,可以用于執(zhí)行本發(fā)明方法實(shí)施例。對于本發(fā)明裝置實(shí)施例中未披露的細(xì)節(jié),請參照本發(fā)明方法實(shí)施例。
圖5是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度裝置的框圖。參見圖5所示,該裝置可以包括:
任務(wù)預(yù)下發(fā)模塊501,用于向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
啟動(dòng)消息接收模塊502,用于接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;
任務(wù)調(diào)度模塊503,用于根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
在本實(shí)施例或本發(fā)明其他某些實(shí)施例中,所述任務(wù)調(diào)度模塊503還可以用于:
如果在第一預(yù)設(shè)時(shí)長內(nèi)未接收到所述第一工作設(shè)備反饋的所述任務(wù)的執(zhí)行狀態(tài)信息,則通知所述第一工作設(shè)備不再執(zhí)行所述任務(wù),以及,在候選的其他工作設(shè)備中按照第二預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
在本實(shí)施例或本發(fā)明其他某些實(shí)施例中,所述任務(wù)調(diào)度模塊503還可以用于:
如果當(dāng)需要執(zhí)行所述任務(wù)時(shí)在第二預(yù)設(shè)時(shí)長內(nèi)未收到任何工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,則在候選工作設(shè)備中按照第三預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
圖6是根據(jù)本發(fā)明一示例性實(shí)施例示出的一種分布式任務(wù)調(diào)度裝置的框圖。參見圖6所示,該裝置包括:
任務(wù)預(yù)接收模塊601,用于接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
任務(wù)搶占模塊602,用于當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);
啟動(dòng)消息發(fā)送模塊603,用于當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;
任務(wù)處理模塊604,用于根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
在本發(fā)明實(shí)施例中,調(diào)度設(shè)備預(yù)先向各候選工作設(shè)備下發(fā)任務(wù)信息,其中任務(wù)信息中至少包括了任務(wù)內(nèi)容和執(zhí)行時(shí)間,到了需要執(zhí)行該任務(wù)時(shí),各候選工作設(shè)備通過競爭的方式爭奪該任務(wù)的執(zhí)行權(quán),當(dāng)一個(gè)工作設(shè)備搶占到了執(zhí)行權(quán)后,才能向調(diào)度設(shè)備發(fā)送啟動(dòng)該任務(wù)的信息。這樣,因?yàn)楣ぷ髟O(shè)備可根據(jù)任務(wù)信息中的執(zhí)行時(shí)間自動(dòng)喚醒自己去搶占、執(zhí)行任務(wù),無需調(diào)度設(shè)備喚醒工作設(shè)備,也無需調(diào)度設(shè)備對工作設(shè)備進(jìn)行選擇,所以減輕了調(diào)度設(shè)備的壓力;并且,由于任務(wù)信息是提前發(fā)送的,所以避免了需要執(zhí)行任務(wù)時(shí)因接收任務(wù)信息而造成的延遲;同時(shí),由于通常只有工作正常的工作設(shè)備才能參與競爭,所以也就確保了最終執(zhí)行任務(wù)的工作設(shè)備是正常設(shè)備。綜上,本實(shí)施例可以很好的滿足對高可靠性的需求。
關(guān)于上述實(shí)施例中的裝置,其中各個(gè)單元\模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
本發(fā)明實(shí)施例還公開了一種分布式任務(wù)調(diào)度系統(tǒng),所述系統(tǒng)包括調(diào)度設(shè)備和第一工作設(shè)備;
所述調(diào)度設(shè)備用于:向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示;
所述第一工作設(shè)備用于:接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
本發(fā)明實(shí)施例還提供了一種調(diào)度設(shè)備,所述調(diào)度設(shè)備的結(jié)構(gòu)中包括處理器和存儲器,所述存儲器用于存儲支持調(diào)度設(shè)備執(zhí)行上述第一方面中分布式任務(wù)調(diào)度的程序,所述處理器被配置為用于執(zhí)行所述存儲器中存儲的程序。
所述程序包括一條或多條計(jì)算機(jī)指令,其中,所述一條或多條計(jì)算機(jī)指令供所述處理器調(diào)用執(zhí)行。
所述處理器用于:
向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;
根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
本發(fā)明實(shí)施例還提供了一種工作設(shè)備,所述工作設(shè)備的結(jié)構(gòu)中包括處理器和存儲器,所述存儲器用于存儲支持工作設(shè)備執(zhí)行上述第二方面中分布式任務(wù)調(diào)度的程序,所述處理器被配置為用于執(zhí)行所述存儲器中存儲的程序。
所述程序包括一條或多條計(jì)算機(jī)指令,其中,所述一條或多條計(jì)算機(jī)指令供所述處理器調(diào)用執(zhí)行。
所述處理器用于:
接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);
當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;
根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲介質(zhì),用于儲存分布式任務(wù)調(diào)度裝置所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述第一方面中分布式任務(wù)調(diào)度方法為分布式任務(wù)調(diào)度裝置所涉及的程序。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲介質(zhì),用于儲存分布式任務(wù)調(diào)度裝置所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述第二方面中分布式任務(wù)調(diào)度方法為分布式任務(wù)調(diào)度裝置所涉及的程序。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在計(jì)算機(jī)可讀存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
本發(fā)明實(shí)施例公開了a1、一種分布式任務(wù)調(diào)度方法,所述方法用于調(diào)度設(shè)備,所述方法包括:
向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;
根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
a2、根據(jù)a1所述的方法,向所述第一工作設(shè)備發(fā)送允許執(zhí)行所述任務(wù)的指示之后,所述方法還包括:
如果在第一預(yù)設(shè)時(shí)長內(nèi)未接收到所述第一工作設(shè)備反饋的所述任務(wù)的執(zhí)行狀態(tài)信息,則通知所述第一工作設(shè)備不再執(zhí)行所述任務(wù),以及,
在候選的其他工作設(shè)備中按照第二預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
a3、根據(jù)a1所述的方法,向候選工作設(shè)備下發(fā)任務(wù)信息之后,所述方法還包括:
如果當(dāng)需要執(zhí)行所述任務(wù)時(shí)在第二預(yù)設(shè)時(shí)長內(nèi)未收到任何工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,則在候選工作設(shè)備中按照第三預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
本發(fā)明實(shí)施例公開了b4、一種分布式任務(wù)調(diào)度方法,所述方法用于第一工作設(shè)備,所述方法包括:
接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);
當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;
根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
b5、根據(jù)b4所述的方法,所述方法還包括:
在執(zhí)行所述任務(wù)的過程中,按照第四預(yù)設(shè)策略向所述調(diào)度設(shè)備反饋所述任務(wù)的執(zhí)行狀態(tài)信息。
本發(fā)明實(shí)施例公開了c6、一種分布式任務(wù)調(diào)度裝置,所述裝置包括:
任務(wù)預(yù)下發(fā)模塊,用于向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
啟動(dòng)消息接收模塊,用于接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;
任務(wù)調(diào)度模塊,用于根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
c7、根據(jù)c6所述的裝置,所述任務(wù)調(diào)度模塊還用于:
如果在第一預(yù)設(shè)時(shí)長內(nèi)未接收到所述第一工作設(shè)備反饋的所述任務(wù)的執(zhí)行狀態(tài)信息,則通知所述第一工作設(shè)備不再執(zhí)行所述任務(wù),以及,在候選的其他工作設(shè)備中按照第二預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
c8、根據(jù)c6所述的裝置,所述任務(wù)調(diào)度模塊還用于:
如果當(dāng)需要執(zhí)行所述任務(wù)時(shí)在第二預(yù)設(shè)時(shí)長內(nèi)未收到任何工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,則在候選工作設(shè)備中按照第三預(yù)設(shè)策略選擇一臺工作設(shè)備執(zhí)行所述任務(wù)。
本發(fā)明實(shí)施例公開了d9、一種分布式任務(wù)調(diào)度裝置,所述裝置包括:
任務(wù)預(yù)接收模塊,用于接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
任務(wù)搶占模塊,用于當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);
啟動(dòng)消息發(fā)送模塊,用于當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;
任務(wù)處理模塊,用于根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
本發(fā)明實(shí)施例公開了e10、一種分布式任務(wù)調(diào)度系統(tǒng),所述系統(tǒng)包括調(diào)度設(shè)備和第一工作設(shè)備;
所述調(diào)度設(shè)備用于:向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示;
所述第一工作設(shè)備用于:接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。
本發(fā)明實(shí)施例還公開了f11、一種調(diào)度設(shè)備,包括存儲器和處理器;其中,
所述存儲器用于存儲一條或多條計(jì)算機(jī)指令,其中,所述一條或多條計(jì)算機(jī)指令供所述處理器調(diào)用執(zhí)行;
所述處理器用于:
向候選工作設(shè)備下發(fā)任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
接收第一工作設(shè)備發(fā)來的啟動(dòng)所述任務(wù)的消息,其中所述第一工作設(shè)備是在需要執(zhí)行所述任務(wù)時(shí)所述候選工作設(shè)備中搶占到所述任務(wù)執(zhí)行權(quán)的工作設(shè)備;
根據(jù)第一預(yù)設(shè)策略向所述第一工作設(shè)備發(fā)送是否允許執(zhí)行所述任務(wù)的指示。
本發(fā)明實(shí)施例還公開了g12、一種工作設(shè)備,包括存儲器和處理器;其中,
所述存儲器用于存儲一條或多條計(jì)算機(jī)指令,其中,所述一條或多條計(jì)算機(jī)指令供所述處理器調(diào)用執(zhí)行;
所述處理器用于:
接收調(diào)度設(shè)備發(fā)來的任務(wù)信息,其中所述任務(wù)信息包括任務(wù)內(nèi)容和執(zhí)行時(shí)間;
當(dāng)需要執(zhí)行所述任務(wù)時(shí),與其他工作設(shè)備按照預(yù)設(shè)規(guī)則競爭所述任務(wù)的執(zhí)行權(quán);
當(dāng)搶占到所述任務(wù)的執(zhí)行權(quán)后,向所述調(diào)度設(shè)備發(fā)送啟動(dòng)所述任務(wù)的消息;
根據(jù)所述調(diào)度設(shè)備返回的指示執(zhí)行或不執(zhí)行所述任務(wù)。