亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

程序調(diào)度和執(zhí)行的方法、系統(tǒng)以及調(diào)度器和執(zhí)行器與流程

文檔序號(hào):11807694閱讀:585來(lái)源:國(guó)知局
程序調(diào)度和執(zhí)行的方法、系統(tǒng)以及調(diào)度器和執(zhí)行器與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種程序調(diào)度和執(zhí)行的方法、系統(tǒng)以及調(diào)度器和執(zhí)行器。



背景技術(shù):

在各個(gè)業(yè)務(wù)系統(tǒng)中,存在大量的不同類(lèi)型的程序。這些程序的執(zhí)行方式及執(zhí)行時(shí)間各不相同,例如,程序之間存在依賴(lài)關(guān)系,一些程序的執(zhí)行需要依賴(lài)其他程序的執(zhí)行完成。

對(duì)此,現(xiàn)有的程序調(diào)度和執(zhí)行方法是將有依賴(lài)關(guān)系的程序串行地寫(xiě)入腳本中,通過(guò)運(yùn)行腳本來(lái)控制各個(gè)程序的執(zhí)行。這種串行執(zhí)行程序的方式會(huì)增加程序執(zhí)行的整體時(shí)間窗口,不能有效地利用服務(wù)器資源。

另外,各個(gè)業(yè)務(wù)節(jié)點(diǎn)部署的操作系統(tǒng)可能是不同的,例如,操作系統(tǒng)可能包括Windows、Linux、Unix等。部署不同操作系統(tǒng)的業(yè)務(wù)節(jié)點(diǎn)執(zhí)行的程序之間,也可能存在依賴(lài)關(guān)系?,F(xiàn)有技術(shù)中對(duì)這種跨系統(tǒng)的依賴(lài)關(guān)系的處理十分復(fù)雜。



技術(shù)實(shí)現(xiàn)要素:

鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的程序調(diào)度和執(zhí)行的方法、系統(tǒng)以及調(diào)度器和執(zhí)行器。

根據(jù)本發(fā)明的一個(gè)方面的實(shí)施例,提供了一種程序調(diào)度方法,包括:根據(jù)多個(gè)程序間的依賴(lài)關(guān)系以及數(shù)據(jù)庫(kù)中的所述多個(gè)程序的執(zhí)行狀態(tài)確定待執(zhí)行程序;根據(jù)所述待執(zhí)行程序的信息為所述待執(zhí)行程序分配執(zhí)行器;將所述待執(zhí)行程序的信息和為所述待執(zhí)行程序分配的執(zhí)行器的信息相關(guān)聯(lián)地寫(xiě)入所述數(shù)據(jù)庫(kù)中,以供所述執(zhí)行器訪問(wèn)。

根據(jù)本發(fā)明另一個(gè)方面的實(shí)施例,提供了一種程序執(zhí)行方法,包括:訪問(wèn)數(shù)據(jù)庫(kù),以從所述數(shù)據(jù)庫(kù)中獲取分配的待執(zhí)行程序的信息;根據(jù)所述待執(zhí) 行程序的信息,執(zhí)行對(duì)應(yīng)的待執(zhí)行程序;將所述待執(zhí)行程序的執(zhí)行狀態(tài)寫(xiě)入所述數(shù)據(jù)庫(kù)中,以供調(diào)度器訪問(wèn)。

根據(jù)本發(fā)明另一個(gè)方面的實(shí)施例,提供了一種調(diào)度器,包括:確定模塊,適于根據(jù)多個(gè)程序間的依賴(lài)關(guān)系以及數(shù)據(jù)庫(kù)中的所述多個(gè)程序的執(zhí)行狀態(tài)確定待執(zhí)行程序;分配模塊,適于根據(jù)所述待執(zhí)行程序的信息為所述待執(zhí)行程序分配執(zhí)行器;數(shù)據(jù)庫(kù)管理模塊,適于將所述待執(zhí)行程序的信息和為所述待執(zhí)行程序分配的執(zhí)行器的信息相關(guān)聯(lián)地寫(xiě)入所述數(shù)據(jù)庫(kù)中,以供所述執(zhí)行器訪問(wèn)。

根據(jù)本發(fā)明另一個(gè)方面的實(shí)施例,提供了一種執(zhí)行器,包括:訪問(wèn)模塊,適于訪問(wèn)數(shù)據(jù)庫(kù),以從所述數(shù)據(jù)庫(kù)中獲取分配的待執(zhí)行程序的信息,以及將所述待執(zhí)行程序的執(zhí)行狀態(tài)寫(xiě)入所述數(shù)據(jù)庫(kù)中;執(zhí)行模塊,適于根據(jù)所述待執(zhí)行程序的信息,執(zhí)行對(duì)應(yīng)的待執(zhí)行程序。

根據(jù)本發(fā)明另一個(gè)方面的實(shí)施例,提供了一種調(diào)度系統(tǒng),包括調(diào)度器、執(zhí)行器、以及數(shù)據(jù)庫(kù);其中所述調(diào)度器被配置為:根據(jù)多個(gè)程序間的依賴(lài)關(guān)系以及所述多個(gè)程序的執(zhí)行狀態(tài)確定待執(zhí)行程序,以及根據(jù)所述待執(zhí)行程序的信息為所述待執(zhí)行程序分配執(zhí)行器;所述執(zhí)行器被配置為:根據(jù)待執(zhí)行程序的信息執(zhí)行對(duì)應(yīng)的待執(zhí)行程序,以及獲取所述待執(zhí)行程序的執(zhí)行狀態(tài);所述數(shù)據(jù)庫(kù)存儲(chǔ)所述待執(zhí)行程序的信息、為所述待執(zhí)行程序分配的執(zhí)行器的信息、以及待執(zhí)行程序的執(zhí)行狀態(tài)。。

根據(jù)本發(fā)明上述各實(shí)施例,調(diào)度器和執(zhí)行器之間通過(guò)數(shù)據(jù)庫(kù)交換程序信息,調(diào)度器將待執(zhí)行程序的信息寫(xiě)入數(shù)據(jù)庫(kù)中,執(zhí)行器根據(jù)數(shù)據(jù)庫(kù)中待執(zhí)行程序的信息執(zhí)行待執(zhí)行程序,將執(zhí)行狀態(tài)寫(xiě)入數(shù)據(jù)庫(kù)中,調(diào)度器根據(jù)程序間的依賴(lài)關(guān)系以及數(shù)據(jù)庫(kù)中的執(zhí)行狀態(tài)確定之后的待執(zhí)行程序。通過(guò)該方案,簡(jiǎn)化了對(duì)不同類(lèi)型、不同操作系統(tǒng)平臺(tái)的業(yè)務(wù)節(jié)點(diǎn)之間的程序依賴(lài)關(guān)系處理。

附圖說(shuō)明

本發(fā)明的其它特征、特點(diǎn)、優(yōu)點(diǎn)和益處通過(guò)以下結(jié)合附圖的詳細(xì)描述將變得更加顯而易見(jiàn)。

圖1示出了示例性的不同業(yè)務(wù)系統(tǒng)上的程序相互依賴(lài)的示意圖;

圖2示出了本發(fā)明實(shí)施例的一種實(shí)施方式的示意圖;

圖3示出了本發(fā)明實(shí)施例的另一種實(shí)施方式的示意圖;

圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的程序調(diào)度方法的流程圖;

圖5示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的程序調(diào)度方法的流程圖;

圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的程序執(zhí)行方法的流程圖;

圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的程序調(diào)度的流程圖;

圖8示出了本發(fā)明實(shí)施例中的一種示例性的程序依賴(lài)關(guān)系的示意圖;

圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的調(diào)度器的結(jié)構(gòu)框圖;

圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的執(zhí)行器的結(jié)構(gòu)框圖;

圖11示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的調(diào)度系統(tǒng)的結(jié)構(gòu)框圖;

圖12示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的調(diào)度器的結(jié)構(gòu)示意圖;

圖13示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的執(zhí)行器的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更充分地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

本發(fā)明中的各實(shí)施例可以適用于多個(gè)服務(wù)器構(gòu)成的服務(wù)器集群。在這種情況下,下文中所述的調(diào)度器可以是該服務(wù)器集群中的一個(gè)程序調(diào)度節(jié)點(diǎn),所述的執(zhí)行器可以是該服務(wù)器的集群中的一個(gè)或多個(gè)程序執(zhí)行節(jié)點(diǎn),所述程序可以是由各個(gè)程序執(zhí)行節(jié)點(diǎn)執(zhí)行的程序。

上述的多個(gè)執(zhí)行器可能被部署在不同的業(yè)務(wù)系統(tǒng)中,這些業(yè)務(wù)系統(tǒng)可能運(yùn)行在不同的操作系統(tǒng)上,并且相互依賴(lài)。圖1示出了不同業(yè)務(wù)系統(tǒng)之間的程序依賴(lài)關(guān)系的示意圖,如圖1所示,在3個(gè)示例性的業(yè)務(wù)系統(tǒng)110、120、130中,業(yè)務(wù)系統(tǒng)110上部署Windows操作系統(tǒng),其上可執(zhí)行exe、Java等類(lèi)型的多個(gè)程序;業(yè)務(wù)系統(tǒng)120上部署Linux操作系統(tǒng),其上可執(zhí)行MR、Hive等類(lèi)型的程序;業(yè)務(wù)系統(tǒng)130上部署Unix系統(tǒng),其上可執(zhí)行Python等類(lèi)型的程序。圖1還示出了一種示例性的依賴(lài)關(guān)系,業(yè)務(wù)系統(tǒng)130中的程序C1依賴(lài)于業(yè)務(wù)系統(tǒng)110中的程序A7和業(yè)務(wù)系統(tǒng)120中的程序B5。

具體地,如果第一程序的執(zhí)行依賴(lài)于第二程序(例如,圖1中的C1依賴(lài)于A7),則該第一程序可以稱(chēng)為第二程序的子程序,相應(yīng)地,第二程序即 是第一程序的父程序。應(yīng)該理解的是,父程序和子程序是相對(duì)的,例如上述的第二程序還可能是另一程序的子程序。本發(fā)明實(shí)施例中,依賴(lài)關(guān)系即是指多個(gè)這樣的第一程序和第二程序共同形成的程序以及程序之間的關(guān)聯(lián)的集合。如上文所述,這樣的依賴(lài)關(guān)系通常是根據(jù)具體的業(yè)務(wù)需求而預(yù)先確定的。

在本發(fā)明的實(shí)施例中,調(diào)度器通過(guò)數(shù)據(jù)庫(kù)來(lái)對(duì)有依賴(lài)關(guān)系的多個(gè)程序進(jìn)行調(diào)度。圖2示出了本發(fā)明實(shí)施例的一種實(shí)施方式的示意圖,如圖2所示,系統(tǒng)包括服務(wù)器210、220、230以及240,其中,調(diào)度器和各個(gè)執(zhí)行器可以分別被包含在在獨(dú)立的服務(wù)器上。具體地,調(diào)度器可以在服務(wù)器210上實(shí)現(xiàn),執(zhí)行器可以分別在服務(wù)器220、230、240中實(shí)現(xiàn),服務(wù)器220、230、240分別對(duì)應(yīng)與圖1中的3個(gè)業(yè)務(wù)系統(tǒng)。

圖3示出了本發(fā)明實(shí)施例的另一種實(shí)施方式的示意圖,如圖3所示,調(diào)度器和執(zhí)行器1在服務(wù)器310上實(shí)現(xiàn),執(zhí)行器2和執(zhí)行器3分別在服務(wù)器320和服務(wù)器330上實(shí)現(xiàn),數(shù)據(jù)庫(kù)在服務(wù)器310的存儲(chǔ)設(shè)備中,所述存儲(chǔ)設(shè)備例如是服務(wù)器的磁盤(pán)。

圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的程序調(diào)度方法的流程圖。該方法可以由上述的調(diào)度器來(lái)執(zhí)行。如圖4所示,方法開(kāi)始于步驟S410,其中,根據(jù)多個(gè)程序間的依賴(lài)關(guān)系確定待執(zhí)行程序。

具體地,多個(gè)程序間的依賴(lài)關(guān)系可能取決于根據(jù)業(yè)務(wù)需求預(yù)定的程序調(diào)度計(jì)劃,例如,圖1中的程序C1要完成的數(shù)據(jù)計(jì)算必須等待程序A4產(chǎn)生的數(shù)據(jù)結(jié)果,則程序C1依賴(lài)于A4。

多個(gè)程序間的依賴(lài)關(guān)系可以保存在調(diào)度器所在節(jié)點(diǎn)的存儲(chǔ)設(shè)備中,或者保存在單獨(dú)的數(shù)據(jù)庫(kù)服務(wù)器中,或從其他來(lái)源導(dǎo)入,本發(fā)明對(duì)此不做限定。

在確定待執(zhí)行程序之后,方法進(jìn)入步驟S420,其中,根據(jù)待執(zhí)行程序的信息為待執(zhí)行程序分配執(zhí)行器。

具體地,該步驟包括根據(jù)待執(zhí)行程序的類(lèi)型信息為待執(zhí)行程序分配執(zhí)行器。例如,待執(zhí)行程序?yàn)閑xe類(lèi)型程序,則將其分配給部署了Windows操作系統(tǒng)的執(zhí)行器。

當(dāng)然,除此之外,調(diào)度器還可以根據(jù)用戶(hù)指定的分配規(guī)則來(lái)進(jìn)行分配,例如,用戶(hù)對(duì)程序調(diào)度進(jìn)行配置時(shí)就指定了該程序由哪個(gè)執(zhí)行器執(zhí)行,則調(diào)度器直接將該程序分配給指定的執(zhí)行器。或者,調(diào)度器根據(jù)執(zhí)行器的資源使用、空閑情況、健康狀態(tài)等進(jìn)行分配。

之后,方法進(jìn)入步驟S430,其中,將待執(zhí)行程序的信息和為待執(zhí)行程序分配的執(zhí)行器的信息相關(guān)聯(lián)地寫(xiě)入數(shù)據(jù)庫(kù)中。

本發(fā)明實(shí)施例中,待執(zhí)行程序的信息可以包括程序名稱(chēng)、程序的ID,程序路徑等;執(zhí)行器的信息包括:執(zhí)行器所在的主機(jī)名、IP、執(zhí)行器的標(biāo)識(shí)等。執(zhí)行器從數(shù)據(jù)庫(kù)中讀取上述執(zhí)行程序的信息時(shí),能夠確定是否需要由其執(zhí)行的程序。

其中,數(shù)據(jù)庫(kù)可以是任何類(lèi)型的數(shù)據(jù)庫(kù),例如關(guān)系型數(shù)據(jù)庫(kù)或非關(guān)系型數(shù)據(jù)庫(kù),磁盤(pán)數(shù)據(jù)庫(kù)或內(nèi)存數(shù)據(jù)庫(kù)等,本發(fā)明在此方面不受限制。

根據(jù)本發(fā)明上述實(shí)施例提供的方法,調(diào)度器通過(guò)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)對(duì)由依賴(lài)關(guān)系的多個(gè)程序的調(diào)度。由此,對(duì)部署在不同業(yè)務(wù)平臺(tái)或操作系統(tǒng)的執(zhí)行器而言,不需要進(jìn)行復(fù)雜的跨平臺(tái)調(diào)度方案。同時(shí),與傳統(tǒng)的串行腳本調(diào)度方式相比,依賴(lài)于同一程序的多個(gè)程序可以在多個(gè)執(zhí)行器中并行執(zhí)行,更加高效。

圖5示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的程序調(diào)度方法的流程圖,該方法可以由上述的調(diào)度器來(lái)執(zhí)行。如圖5所示,方法包括如下步驟:

步驟S510,對(duì)數(shù)據(jù)庫(kù)中的多個(gè)程序的執(zhí)行狀態(tài)和依賴(lài)關(guān)系進(jìn)行監(jiān)控。

在本發(fā)明實(shí)施例的一種實(shí)施方式中,上述的多個(gè)程序間的依賴(lài)關(guān)系也保存在數(shù)據(jù)庫(kù)中。

具體地,可以通過(guò)調(diào)度器將依賴(lài)關(guān)系保存在數(shù)據(jù)庫(kù)中。例如,提供到調(diào)度器的用戶(hù)交互接口,以供用戶(hù),例如管理員,經(jīng)由該交互接口,通過(guò)調(diào)度器對(duì)數(shù)據(jù)庫(kù)中的依賴(lài)關(guān)系進(jìn)行操作,操作可以包括添加、刪除、修改等。此外,用戶(hù)還可以通過(guò)交互接口和調(diào)度器修改其他配置信息,例如,為某個(gè)程序指定執(zhí)行器、手動(dòng)觸發(fā)程序執(zhí)行等。

此外,數(shù)據(jù)庫(kù)中還可以保存有多個(gè)執(zhí)行器的狀態(tài)信息。具體地,執(zhí)行器的狀態(tài)信息可以包括以下中的一個(gè)或多個(gè):執(zhí)行器所在主機(jī)的主機(jī)名/IP地址、執(zhí)行器可執(zhí)行的程序類(lèi)型、執(zhí)行器上部署的操作系統(tǒng)類(lèi)型、執(zhí)行器的可執(zhí)行的最大程序數(shù)量、以及執(zhí)行器的資源和健康狀態(tài)等。上述狀態(tài)信息可供調(diào)度器讀取,以在本發(fā)明實(shí)施例方法的后續(xù)步驟用于待執(zhí)行程序的分配。

除了上述的多個(gè)程序的執(zhí)行狀態(tài)之外,數(shù)據(jù)庫(kù)中還可以保存多個(gè)程序的其他信息,例如,程序名稱(chēng)、創(chuàng)建時(shí)間、程序路徑以及程序執(zhí)行日志等中的一個(gè)或多個(gè),以供用戶(hù)通過(guò)交互接口查看。

步驟S520,在監(jiān)控到有程序執(zhí)行完成時(shí),根據(jù)依賴(lài)關(guān)系獲取該執(zhí)行完成的程序的子程序的信息。

在本發(fā)明實(shí)施例中,結(jié)合程序依賴(lài)關(guān)系以及程序的執(zhí)行狀態(tài)來(lái)確定待執(zhí)行的子程序。程序的執(zhí)行狀態(tài)例如包括:待執(zhí)行、執(zhí)行中、執(zhí)行完成、執(zhí)行失敗等。在程序依賴(lài)關(guān)系中,如果第一程序的執(zhí)行依賴(lài)于第二程序的執(zhí)行狀態(tài)(例如,執(zhí)行完成或執(zhí)行失敗)則該第一程序可以稱(chēng)為第二程序的子程序,相應(yīng)地,第二程序即是第一程序的父程序。應(yīng)該理解的是,單個(gè)的父程序可能具有多個(gè)子程序,單個(gè)的子程序也可能具有多個(gè)父程序。

步驟S510和S520的一種具體實(shí)現(xiàn)方式是,調(diào)度器在啟動(dòng)時(shí),從數(shù)據(jù)庫(kù)中讀取其中保存的依賴(lài)關(guān)系以及多個(gè)程序的執(zhí)行狀態(tài)并且將依賴(lài)關(guān)系和執(zhí)行狀態(tài)維護(hù)至自身的內(nèi)存中。上述的依賴(lài)關(guān)系和執(zhí)行狀態(tài)通常是隨時(shí)間變化的,之后,調(diào)度器實(shí)時(shí)地監(jiān)控?cái)?shù)據(jù)庫(kù)中的依賴(lài)關(guān)系以及多個(gè)程序的執(zhí)行狀態(tài),并更新內(nèi)存中的信息,并根據(jù)更新后的依賴(lài)關(guān)系和執(zhí)行狀態(tài)確定待執(zhí)行程序。

步驟S530,判斷子程序的所有父程序是否執(zhí)行完成,若所有父程序執(zhí)行完成,執(zhí)行步驟S540,否則重復(fù)步驟S530。

當(dāng)子程序依賴(lài)于多個(gè)父程序時(shí),只有在多個(gè)父程序都執(zhí)行完成后,才允許該子程序的執(zhí)行。

步驟S540,將該子程序確定為待執(zhí)行程序。

步驟S550,根據(jù)待執(zhí)行程序的類(lèi)型為待執(zhí)行程序分配執(zhí)行器。

作為示例,將exe類(lèi)型的待執(zhí)行程序分配給部署Windows系統(tǒng)的執(zhí)行器,將python、shell等腳本程序分配給對(duì)應(yīng)于Linux系統(tǒng)的執(zhí)行器。

步驟S560,將待執(zhí)行程序的信息和為待執(zhí)行程序分配的執(zhí)行器的信息相關(guān)聯(lián)地寫(xiě)入數(shù)據(jù)庫(kù)中。

此外,在本發(fā)明的一些其他實(shí)施例中,調(diào)度器可以是多個(gè),包括主調(diào)度器和備調(diào)度器,正常情況下由主調(diào)度器進(jìn)行程序調(diào)度,當(dāng)主調(diào)度器發(fā)生異常時(shí),由備調(diào)度器接替主調(diào)度器。

此外,在本發(fā)明的一些其他實(shí)施例中,調(diào)度器還可以使用告警機(jī)制,在程序執(zhí)行超時(shí)、執(zhí)行器異常時(shí)發(fā)出告警,例如,向管理員發(fā)送告警郵件、短信等。

圖6示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的程序執(zhí)行方法的流程圖,該方法 可以由圖2所示的執(zhí)行器來(lái)執(zhí)行。如圖6所示,方法包括如下步驟:

步驟S610,訪問(wèn)數(shù)據(jù)庫(kù),以從數(shù)據(jù)庫(kù)中獲取分配的待執(zhí)行程序的信息。

在執(zhí)行器啟動(dòng)時(shí),從數(shù)據(jù)庫(kù)中獲取對(duì)應(yīng)的待執(zhí)行程序的信息,例如,待執(zhí)行程序的列表,將該程序列表維護(hù)在自身內(nèi)存中。之后,執(zhí)行器實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)庫(kù),根據(jù)數(shù)據(jù)庫(kù)中待執(zhí)行程序的更新來(lái)調(diào)整內(nèi)存中維護(hù)的程序列表。

步驟S620,根據(jù)待執(zhí)行程序的信息,執(zhí)行對(duì)應(yīng)的待執(zhí)行程序。

例如,待執(zhí)行程序的信息是程序名稱(chēng)、路徑等。

步驟S630,將待執(zhí)行程序的執(zhí)行狀態(tài)寫(xiě)入數(shù)據(jù)庫(kù)中,以供調(diào)度器訪問(wèn)。

本發(fā)明實(shí)施例中的執(zhí)行狀態(tài)包括:執(zhí)行完成、執(zhí)行失敗等

進(jìn)一步地,執(zhí)行器還可以向數(shù)據(jù)庫(kù)中寫(xiě)入執(zhí)行器的類(lèi)型信息和狀態(tài)信息等。具體地,包括以下中的一個(gè)或多個(gè):執(zhí)行器所在主機(jī)的主機(jī)名/IP地址、執(zhí)行器可執(zhí)行的程序類(lèi)型、執(zhí)行器上部署的操作系統(tǒng)類(lèi)型、執(zhí)行器的可執(zhí)行的最大程序數(shù)量、以及執(zhí)行器的資源和健康狀態(tài)等,以供調(diào)度器根據(jù)資源情況進(jìn)行程序的分配。此外,執(zhí)行器還可以向數(shù)據(jù)庫(kù)中寫(xiě)入程序執(zhí)行日志等內(nèi)容。

進(jìn)一步地,執(zhí)行器還可以包括重試機(jī)制,在程序執(zhí)行失敗時(shí)進(jìn)行重試,避免因短暫異常引起的調(diào)度失敗。

圖7示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的程序調(diào)度方法的流程圖,該方法涉及上述的調(diào)度器和執(zhí)行器。

下面針對(duì)圖8中示出的示例性的程序依賴(lài)關(guān)系對(duì)圖7所示的實(shí)施例進(jìn)行說(shuō)明。在圖8中,將程序A1、A2、A3、A4之間的依賴(lài)關(guān)系示出為一個(gè)帶箭頭的圖,其中,節(jié)點(diǎn)表示程序,例如,A1是shell類(lèi)型的程序,A2是Java類(lèi)型的程序,A3是exe類(lèi)型的程序,A4是perl程序;節(jié)點(diǎn)之間的箭頭表示兩個(gè)程序之間存在依賴(lài),對(duì)圖中的每個(gè)箭頭而言,其所指向的程序是該箭頭的起點(diǎn)處的程序的子程序。

本發(fā)明實(shí)施例中,還包括定時(shí)觸發(fā)或手工觸發(fā)的程序調(diào)度。調(diào)度器可以通過(guò)Task Scheduler、Crontab等工具實(shí)現(xiàn)程序的定時(shí)觸發(fā)。與上文實(shí)施例類(lèi)似地,調(diào)度器為定時(shí)或手工觸發(fā)的程序分配執(zhí)行器并且寫(xiě)入數(shù)據(jù)庫(kù)中。

假設(shè)在圖8中,A1是定時(shí)觸發(fā)程序,并且在當(dāng)前時(shí)間已經(jīng)被執(zhí)行器執(zhí)行,其余程序都是依賴(lài)觸發(fā)程序,則在圖7對(duì)應(yīng)的實(shí)施例中,調(diào)度器和執(zhí)行器重復(fù)執(zhí)行以下步驟:

步驟S710,執(zhí)行器將執(zhí)行狀態(tài)寫(xiě)入數(shù)據(jù)庫(kù)。

執(zhí)行器執(zhí)行程序A1后,將執(zhí)行完成的狀態(tài)寫(xiě)入數(shù)據(jù)庫(kù)中。

步驟S720,調(diào)度器從數(shù)據(jù)庫(kù)中獲取程序的狀態(tài)。

調(diào)度器獲取程序A1的執(zhí)行狀態(tài)。

步驟S730,調(diào)度器根據(jù)依賴(lài)關(guān)系和執(zhí)行狀態(tài)確定待執(zhí)行程序。

程序A2和程序A3的父程序A1已執(zhí)行完成,因此,將程序A2和程序A3確定為待執(zhí)行程序。

步驟S740,調(diào)度器為待執(zhí)行程序分配執(zhí)行器。

作為示例,根據(jù)程序類(lèi)型,將程序A2分配給對(duì)應(yīng)Linux系統(tǒng)的執(zhí)行器,將程序A3分配給對(duì)應(yīng)于Windows系統(tǒng)的執(zhí)行器。

步驟S750,調(diào)度器將待執(zhí)行程序的信息和分配的執(zhí)行器的信息寫(xiě)入數(shù)據(jù)庫(kù)。

步驟S760,執(zhí)行器從數(shù)據(jù)庫(kù)中獲取分配的待執(zhí)行程序的信息。

步驟S770,執(zhí)行器執(zhí)行待執(zhí)行程序。

之后,方法回到步驟S710,執(zhí)行器將程序A2和A3的執(zhí)行狀態(tài)寫(xiě)入數(shù)據(jù)庫(kù)中。

方法繼續(xù)進(jìn)行到步驟S720,調(diào)度器獲取程序A2和A3的狀態(tài)。

作為示例,以下針對(duì)兩種可能的情況進(jìn)行描述。其中,在第一種情況中,A2和A3都執(zhí)行完成;在第二種情況中,A2執(zhí)行完成,A3未執(zhí)行完成。

方法繼續(xù)進(jìn)行到步驟S730,其中,獲取A2或A3的子程序A4,判斷A4的所有父程序是否執(zhí)行完成,對(duì)上述第一種情況,A4的父程序都執(zhí)行完成,則將A4確定為待執(zhí)行的程序;對(duì)上述第二種情況,A4的父程序A3未執(zhí)行完成,調(diào)度器周期性地監(jiān)控?cái)?shù)據(jù)庫(kù),直到A3執(zhí)行完成,將A4確定為待執(zhí)行程序。

步驟S740-S770的具體實(shí)施過(guò)程與上文類(lèi)似,此處不再贅述。

圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的調(diào)度器的結(jié)構(gòu)框圖,如圖9所示,調(diào)度器900包括:確定模塊910,分配模塊920以及數(shù)據(jù)庫(kù)管理模塊930。其中,確定模塊910適于根據(jù)多個(gè)程序間的依賴(lài)關(guān)系以及數(shù)據(jù)庫(kù)中的多個(gè)程序的執(zhí)行狀態(tài)確定待執(zhí)行程序。分配模塊920適于根據(jù)待執(zhí)行程序的信息為待執(zhí)行程序分配執(zhí)行器。數(shù)據(jù)庫(kù)管理模塊930適于將待執(zhí)行程序的信息和為待執(zhí)行程序分配的執(zhí)行器的信息相關(guān)聯(lián)地寫(xiě)入數(shù)據(jù)庫(kù)中。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,數(shù)據(jù)庫(kù)管理模塊930還適于:將多個(gè)程序間的依賴(lài)關(guān)系保存在自身存儲(chǔ)設(shè)備或數(shù)據(jù)庫(kù)中。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,確定模塊910進(jìn)一步適于:對(duì)數(shù)據(jù)庫(kù)中的多個(gè)程序的執(zhí)行狀態(tài)進(jìn)行監(jiān)控;在監(jiān)控到有程序執(zhí)行完成時(shí),根據(jù)依賴(lài)關(guān)系獲取該執(zhí)行完成的程序的子程序;判斷子程序的所有父程序是否執(zhí)行完成;若該子程序的所有父程序都執(zhí)行完成,則將該子程序確定為待執(zhí)行程序。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,分配模塊920進(jìn)一步適于根據(jù)待執(zhí)行程序的類(lèi)型和/或執(zhí)行器的狀態(tài)信息為待執(zhí)行程序分配執(zhí)行器。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,確定模塊910還適于:根據(jù)多個(gè)程序的定時(shí)觸發(fā)和/或用戶(hù)操作觸發(fā)來(lái)確定待執(zhí)行程序。

圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的執(zhí)行器的結(jié)構(gòu)框圖,如圖10所示,執(zhí)行器100包括:訪問(wèn)模塊1010以及執(zhí)行模塊1020。其中,訪問(wèn)模塊1010適于訪問(wèn)數(shù)據(jù)庫(kù),以從數(shù)據(jù)庫(kù)中獲取分配的待執(zhí)行程序的信息,以及將待執(zhí)行程序的執(zhí)行狀態(tài)寫(xiě)入數(shù)據(jù)庫(kù)中;執(zhí)行模塊1020適于根據(jù)待執(zhí)行程序的信息,執(zhí)行對(duì)應(yīng)的待執(zhí)行程序。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,訪問(wèn)模塊1010還適于向數(shù)據(jù)庫(kù)中寫(xiě)入執(zhí)行器的類(lèi)型信息和狀態(tài)信息。

圖11示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的調(diào)度系統(tǒng)的結(jié)構(gòu)框圖,如圖11所示,調(diào)度系統(tǒng)1100包括上述的調(diào)度器900和執(zhí)行器1000,以及數(shù)據(jù)庫(kù)1101。

其中,調(diào)度器900被配置為:根據(jù)多個(gè)程序間的依賴(lài)關(guān)系以及多個(gè)程序的執(zhí)行狀態(tài)確定待執(zhí)行程序,以及根據(jù)待執(zhí)行程序的信息為所述待執(zhí)行程序分配執(zhí)行器;執(zhí)行器1000被配置為:根據(jù)待執(zhí)行程序的信息執(zhí)行對(duì)應(yīng)的待執(zhí)行程序,以及獲取待執(zhí)行程序的執(zhí)行狀態(tài);數(shù)據(jù)庫(kù)1101存儲(chǔ)待執(zhí)行程序的信息、為待執(zhí)行程序分配的執(zhí)行器的信息、以及待執(zhí)行程序的執(zhí)行狀態(tài)。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,調(diào)度器900進(jìn)一步被配置為:根據(jù)待執(zhí)行程序的類(lèi)型和/或執(zhí)行器的狀態(tài)信息為待執(zhí)行程序分配執(zhí)行器。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,數(shù)據(jù)庫(kù)1101還存儲(chǔ)多個(gè)程序之間的依賴(lài)關(guān)系。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,調(diào)度器900進(jìn)一步被配置為:對(duì)多個(gè)程序的執(zhí)行狀態(tài)進(jìn)行監(jiān)控;在監(jiān)控到有程序執(zhí)行完成時(shí),根據(jù)依賴(lài)關(guān) 系獲取該執(zhí)行完成的程序的子程序,判斷該子程序的所有父程序是否執(zhí)行完成;若該子程序的所有父程序都執(zhí)行完成,則將該子程序確定為待執(zhí)行程序。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,調(diào)度器900進(jìn)一步被配置為:根據(jù)多個(gè)程序的定時(shí)觸發(fā)和/或用戶(hù)操作觸發(fā)來(lái)確定待執(zhí)行程序。

在本發(fā)明實(shí)施例的一種具體實(shí)施方式中,執(zhí)行器1000進(jìn)一步被配置為:獲取自身的類(lèi)型信息和狀態(tài)信息,則數(shù)據(jù)庫(kù)1101還存儲(chǔ)有執(zhí)行器1000的類(lèi)型信息和狀態(tài)信息。

圖12示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的調(diào)度器的結(jié)構(gòu)示意圖,如圖12所示,調(diào)度器1200包括:

存儲(chǔ)器1210,用于存儲(chǔ)可執(zhí)行程序指令;通信接口1220,用于與數(shù)據(jù)庫(kù)進(jìn)行通信;以及處理器1230,與存儲(chǔ)器1210和通信接口1220相連的,處理器1230執(zhí)行存儲(chǔ)器1210中的可執(zhí)行程序指令,使得所述調(diào)度器1200執(zhí)行前述調(diào)度器900的各個(gè)模塊所執(zhí)行的操作。

圖13示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的執(zhí)行器的結(jié)構(gòu)示意圖,如圖13所示,執(zhí)行器1300包括:

存儲(chǔ)器1310,用于存儲(chǔ)可執(zhí)行程序指令;通信接口1320,用于與數(shù)據(jù)庫(kù)進(jìn)行通信;以及處理器1330,與存儲(chǔ)器1310和通信接口1320相連,處理器1330執(zhí)行存儲(chǔ)器1310中的可執(zhí)行程序指令,使得執(zhí)行器執(zhí)行前述執(zhí)行器1000的各個(gè)模塊所執(zhí)行的操作。

本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,上面公開(kāi)的各個(gè)實(shí)施例可以在不偏離發(fā)明實(shí)質(zhì)的情況下做出各種變形和修改。因此,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)由所附的權(quán)利要求書(shū)來(lái)限定。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1