本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種程序分布式運(yùn)行方法、裝置及系統(tǒng)。
背景技術(shù):
在現(xiàn)有技術(shù)中,程序的編譯和運(yùn)行一般都在同一臺(tái)計(jì)算機(jī)或者服務(wù)器中完成,或者程序的編譯在一臺(tái)計(jì)算機(jī)/服務(wù)器中完成,而運(yùn)行則在另一臺(tái)計(jì)算機(jī)/服務(wù)器中完成。不管是哪一種程序編譯運(yùn)行方法,當(dāng)程序的規(guī)模很大時(shí),由于計(jì)算機(jī)/服務(wù)器系統(tǒng)資源的限制,編譯和運(yùn)行的過(guò)程十分漫長(zhǎng),因此會(huì)帶來(lái)軟件開(kāi)發(fā)周期過(guò)長(zhǎng)、應(yīng)用功能可擴(kuò)展能力較差的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提出一種程序分布式運(yùn)行方法、裝置及系統(tǒng),能夠提高程序編譯和運(yùn)行的速度。
本發(fā)明實(shí)施例提供的一種程序分布式運(yùn)行方法,具體包括:
獲得待運(yùn)行程序;
根據(jù)預(yù)先設(shè)置的程序劃分邏輯,將所述待運(yùn)行程序劃分為至少一個(gè)待運(yùn)行子程序;
獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
將每個(gè)所述待運(yùn)行子程序發(fā)送至對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,以使每個(gè)所述子程序運(yùn)行設(shè)備編譯和運(yùn)行對(duì)應(yīng)的所述待運(yùn)行子程序;
接收每個(gè)所述子程序運(yùn)行設(shè)備返回的子程序運(yùn)行結(jié)果,并根據(jù)所有所述子程序運(yùn)行結(jié)果獲得相應(yīng)的程序運(yùn)行結(jié)果。
進(jìn)一步地,所述獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,具體包括:
對(duì)所有與本地相連接的設(shè)備的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;其中,所述子程序運(yùn)行設(shè)備為所有所述與本地相連接的設(shè)備中運(yùn)行狀態(tài)為空閑的設(shè)備;
對(duì)每個(gè)所述待運(yùn)行子程序進(jìn)行檢測(cè),獲得每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源;
根據(jù)每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源,為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備。
進(jìn)一步地,所述獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,具體包括:
查詢預(yù)先配置的注冊(cè)設(shè)備信息列表,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;
為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
所述程序分布式運(yùn)行方法,還包括:
每隔預(yù)設(shè)的時(shí)間間隔查詢所述注冊(cè)設(shè)備信息列表,向所述注冊(cè)設(shè)備信息列表中的每個(gè)設(shè)備信息所對(duì)應(yīng)的設(shè)備發(fā)送設(shè)備驗(yàn)證請(qǐng)求,并接收每個(gè)所述設(shè)備的反饋信息,獲得所有所述設(shè)備中的至少一個(gè)連續(xù)n次無(wú)所述反饋信息的失聯(lián)設(shè)備;其中,所述注冊(cè)設(shè)備信息列表用于記錄所有與本地相連接的設(shè)備的設(shè)備信息;n≥1;
將所述注冊(cè)設(shè)備信息列表中的每個(gè)所述失聯(lián)設(shè)備所對(duì)應(yīng)的所述設(shè)備信息刪除。
進(jìn)一步地,所述根據(jù)預(yù)先設(shè)置的程序劃分邏輯,將所述待運(yùn)行程序劃分為至少一個(gè)待運(yùn)行子程序,具體包括:
對(duì)所述待運(yùn)行程序進(jìn)行預(yù)編譯;
根據(jù)所述程序劃分邏輯,對(duì)經(jīng)過(guò)所述預(yù)編譯的所述待運(yùn)行程序進(jìn)行劃分,獲得至少一個(gè)所述待運(yùn)行子程序。
相應(yīng)地,本發(fā)明實(shí)施例還提供了一種程序分布式運(yùn)行裝置,具體包括:
待運(yùn)行程序獲得模塊,用于獲得待運(yùn)行程序;
待運(yùn)行程序劃分模塊,用于根據(jù)預(yù)先設(shè)置的程序劃分邏輯,將所述待運(yùn)行程序劃分為至少一個(gè)待運(yùn)行子程序;
子程序運(yùn)行設(shè)備分配模塊,用于獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
子程序編譯運(yùn)行模塊,用于將每個(gè)所述待運(yùn)行子程序發(fā)送至對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,以使每個(gè)所述子程序運(yùn)行設(shè)備編譯和運(yùn)行對(duì)應(yīng)的所述待運(yùn)行子程序;以及,
程序運(yùn)行結(jié)果獲得模塊,用于接收每個(gè)所述子程序運(yùn)行設(shè)備返回的子程序運(yùn)行結(jié)果,并根據(jù)所有所述子程序運(yùn)行結(jié)果獲得相應(yīng)的程序運(yùn)行結(jié)果。
進(jìn)一步地,所述子程序運(yùn)行設(shè)備分配模塊,具體包括:
第一子程序運(yùn)行設(shè)備獲得單元,用于對(duì)所有與本地相連接的設(shè)備的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;其中,所述子程序運(yùn)行設(shè)備為所有所述與本地相連接的設(shè)備中運(yùn)行狀態(tài)為空閑的設(shè)備;
子程序所需資源檢測(cè)單元,用于對(duì)每個(gè)所述待運(yùn)行子程序進(jìn)行檢測(cè),獲得每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源;以及,
第一子程序運(yùn)行設(shè)備分配單元,用于根據(jù)每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源,為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備。
進(jìn)一步地,所述子程序運(yùn)行設(shè)備分配模塊,具體包括:
第二子程序運(yùn)行設(shè)備獲得單元,用于查詢預(yù)先配置的注冊(cè)設(shè)備信息列表,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;以及,
第二子程序運(yùn)行設(shè)備分配單元,用于為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
所述程序分布式運(yùn)行裝置,還包括:
失聯(lián)設(shè)備檢測(cè)模塊,用于每隔預(yù)設(shè)的時(shí)間間隔查詢所述注冊(cè)設(shè)備信息列表,向所述注冊(cè)設(shè)備信息列表中的每個(gè)設(shè)備信息所對(duì)應(yīng)的設(shè)備發(fā)送設(shè)備驗(yàn)證請(qǐng)求,并接收每個(gè)所述設(shè)備的反饋信息,獲得所有所述設(shè)備中的至少一個(gè)連續(xù)n次無(wú)所述反饋信息的失聯(lián)設(shè)備;其中,所述注冊(cè)設(shè)備信息列表用于記錄所有與本地相連接的設(shè)備的設(shè)備信息;n≥1;以及,
失聯(lián)設(shè)備刪除模塊,用于將所述注冊(cè)設(shè)備信息列表中的每個(gè)所述失聯(lián)設(shè)備所對(duì)應(yīng)的所述設(shè)備信息刪除。
進(jìn)一步地,所述待運(yùn)行程序劃分模塊,具體包括:
程序預(yù)編譯單元,用于對(duì)所述待運(yùn)行程序進(jìn)行預(yù)編譯;以及,
程序劃分單元,用于根據(jù)所述程序劃分邏輯,對(duì)經(jīng)過(guò)所述預(yù)編譯的所述待運(yùn)行程序進(jìn)行劃分,獲得至少一個(gè)所述待運(yùn)行子程序。
相應(yīng)地,本發(fā)明實(shí)施例還提供了一種程序分布式運(yùn)行系統(tǒng),具體包括程序運(yùn)行設(shè)備和至少一個(gè)子程序運(yùn)行設(shè)備;
所述程序運(yùn)行設(shè)備,為上述的程序分布式運(yùn)行裝置;
所述子程序運(yùn)行設(shè)備,用于運(yùn)行所述程序運(yùn)行設(shè)備發(fā)送的待運(yùn)行子程序,生成相應(yīng)的子程序運(yùn)行結(jié)果,并將所述子程序運(yùn)行結(jié)果返回至所述程序運(yùn)行設(shè)備。
進(jìn)一步地,所述程序分布式運(yùn)行系統(tǒng)還包括程序運(yùn)行一體機(jī);
所述程序運(yùn)行一體機(jī)中包括所述程序運(yùn)行設(shè)備和一個(gè)所述子程序運(yùn)行設(shè)備。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
本發(fā)明實(shí)施例提供的程序分布式運(yùn)行方法、裝置及系統(tǒng),通過(guò)將待運(yùn)行的程序劃分為若干子程序,并將這些待運(yùn)行的子程序分發(fā)至不同的子程序運(yùn)行設(shè)備中分別進(jìn)行編譯和運(yùn)行,從而利用多個(gè)設(shè)備的系統(tǒng)資源來(lái)編譯和運(yùn)行同一程序,實(shí)現(xiàn)程序的分布式運(yùn)行,因此能夠大大提高程序編譯和運(yùn)行的速度。
附圖說(shuō)明
圖1是本發(fā)明提供的程序分布式運(yùn)行方法的一個(gè)優(yōu)選的實(shí)施例的流程示意圖;
圖2是本發(fā)明提供的程序分布式運(yùn)行裝置的一個(gè)優(yōu)選的實(shí)施例的結(jié)構(gòu)示意圖;
圖3是本發(fā)明提供的程序分布式運(yùn)行系統(tǒng)的一個(gè)優(yōu)選的實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明通過(guò)將待運(yùn)行的程序劃分為若干子程序,并將這些待運(yùn)行的子程序分發(fā)至不同的子程序運(yùn)行設(shè)備中分別進(jìn)行編譯和運(yùn)行,從而利用多個(gè)設(shè)備的系統(tǒng)資源來(lái)編譯和運(yùn)行同一程序,實(shí)現(xiàn)程序的分布式運(yùn)行,因此能夠大大提高程序編譯和運(yùn)行的速度,進(jìn)而能夠縮短軟件或者應(yīng)用等的開(kāi)發(fā)周期,提高應(yīng)用功能的可擴(kuò)展能力。
如圖1所示,為本發(fā)明提供的程序分布式運(yùn)行方法的一個(gè)優(yōu)選的實(shí)施例的流程示意圖,包括步驟s11至s15,具體如下:
s11:獲得待運(yùn)行程序;
s12:根據(jù)預(yù)先設(shè)置的程序劃分邏輯,將所述待運(yùn)行程序劃分為至少一個(gè)待運(yùn)行子程序;
s13:獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
s14:將每個(gè)所述待運(yùn)行子程序發(fā)送至對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,以使每個(gè)所述子程序運(yùn)行設(shè)備編譯和運(yùn)行對(duì)應(yīng)的所述待運(yùn)行子程序;
s15:接收每個(gè)所述子程序運(yùn)行設(shè)備返回的子程序運(yùn)行結(jié)果,并根據(jù)所有所述子程序運(yùn)行結(jié)果獲得相應(yīng)的程序運(yùn)行結(jié)果。
需要說(shuō)明的是,本發(fā)明實(shí)施例由整個(gè)程序分布式運(yùn)行系統(tǒng)中的程序運(yùn)行設(shè)備執(zhí)行。該程序分布式運(yùn)行系統(tǒng)中包括一個(gè)或者多個(gè)程序運(yùn)行設(shè)備和一個(gè)或者多個(gè)子程序運(yùn)行設(shè)備,其中,程序運(yùn)行設(shè)備用于對(duì)待運(yùn)行程序進(jìn)行劃分,從而將該待運(yùn)行程序劃分為若干待運(yùn)行子程序,而子程序運(yùn)行設(shè)備則用于運(yùn)行各個(gè)待運(yùn)行子程序。可以理解的是,該程序分布式運(yùn)行系統(tǒng)中還可以包括一種程序運(yùn)行一體機(jī),該程序運(yùn)行一體機(jī)中既包括上述程序運(yùn)行設(shè)備,又包括上述子程序運(yùn)行設(shè)備。該程序運(yùn)行一體機(jī)在運(yùn)行時(shí),其中的程序運(yùn)行設(shè)備在將待運(yùn)行程序劃分為若干待運(yùn)行子程序之后,會(huì)將其中的一個(gè)或者多個(gè)待運(yùn)行子程序發(fā)送至所在的程序運(yùn)行一體機(jī)中的子程序運(yùn)行設(shè)備中進(jìn)行編譯和運(yùn)行,從而充分利用程序運(yùn)行一體機(jī)的本地系統(tǒng)資源。
以下以該程序分布式運(yùn)行系統(tǒng)中的一個(gè)程序運(yùn)行設(shè)備為例進(jìn)行描述。程序分布式運(yùn)行系統(tǒng)中的程序運(yùn)行設(shè)備通過(guò)人機(jī)交互裝置(如,顯示屏、觸控屏等)獲得用戶的程序運(yùn)行指令之后,根據(jù)該程序運(yùn)行指令,從本地存儲(chǔ)裝置中讀取相應(yīng)的待運(yùn)行程序,并按照預(yù)先設(shè)置的程序劃分邏輯,將該待運(yùn)行程序劃分為一個(gè)或者多個(gè)待運(yùn)行子程序。隨后,該程序運(yùn)行設(shè)備通過(guò)監(jiān)控相連接的各個(gè)設(shè)備的運(yùn)行狀態(tài),從而獲得其中較為空閑的設(shè)備作為子程序運(yùn)行設(shè)備,并為每個(gè)上述待運(yùn)行子程序分配相應(yīng)的子程序運(yùn)行設(shè)備。在完成子程序運(yùn)行設(shè)備的分配之后,該程序運(yùn)行設(shè)備將各個(gè)待運(yùn)行子程序發(fā)送至對(duì)應(yīng)的子程序運(yùn)行設(shè)備中。子程序運(yùn)行設(shè)備在接收到程序運(yùn)行設(shè)備發(fā)送的待運(yùn)行子程序之后,對(duì)接收到的待運(yùn)行子程序進(jìn)行編譯和運(yùn)行,從而生成相應(yīng)的子程序運(yùn)行結(jié)果,并將所生成的子程序運(yùn)行結(jié)果返回至上述程序運(yùn)行設(shè)備。該程序運(yùn)行設(shè)備在接收到各個(gè)子程序運(yùn)行設(shè)備返回的子程序運(yùn)行結(jié)果之后,對(duì)各個(gè)子程序運(yùn)行結(jié)果進(jìn)行整合和分析,從而獲得相應(yīng)的程序運(yùn)行結(jié)果。
需要進(jìn)一步說(shuō)明的是,本發(fā)明實(shí)施例還可以應(yīng)用于軟件、應(yīng)用、指令、系統(tǒng)等的分布式運(yùn)行。
本發(fā)明實(shí)施例通過(guò)將待運(yùn)行的程序劃分為若干子程序,并將這些待運(yùn)行的子程序分發(fā)至不同的子程序運(yùn)行設(shè)備中分別進(jìn)行編譯和運(yùn)行,從而利用多個(gè)設(shè)備的系統(tǒng)資源來(lái)編譯和運(yùn)行同一程序,實(shí)現(xiàn)程序的分布式運(yùn)行,因此能夠大大提高程序編譯和運(yùn)行的速度,進(jìn)而能夠縮短軟件或者應(yīng)用等的開(kāi)發(fā)周期,提高應(yīng)用功能的可擴(kuò)展能力。
進(jìn)一步地,所述根據(jù)預(yù)先設(shè)置的程序劃分邏輯,將所述待運(yùn)行程序劃分為至少一個(gè)待運(yùn)行子程序,具體包括:
對(duì)所述待運(yùn)行程序進(jìn)行預(yù)編譯;
根據(jù)所述程序劃分邏輯,對(duì)經(jīng)過(guò)所述預(yù)編譯的所述待運(yùn)行程序進(jìn)行劃分,獲得至少一個(gè)所述待運(yùn)行子程序。
需要說(shuō)明的是,程序運(yùn)行設(shè)備在對(duì)待運(yùn)行程序進(jìn)行劃分之前,還可以預(yù)先對(duì)該待運(yùn)行程序進(jìn)行預(yù)編譯。
本發(fā)明實(shí)施例通過(guò)在對(duì)待運(yùn)行程序進(jìn)行劃分之前,對(duì)該待運(yùn)行程序進(jìn)行預(yù)編譯,簡(jiǎn)化了各個(gè)待運(yùn)行子程序在各個(gè)子程序運(yùn)行設(shè)備中的編譯過(guò)程,因此能夠進(jìn)一步提高程序編譯和運(yùn)行的速度。
更優(yōu)選地,所述獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,具體包括:
對(duì)所有與本地相連接的設(shè)備的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;其中,所述子程序運(yùn)行設(shè)備為所有所述與本地相連接的設(shè)備中運(yùn)行狀態(tài)為空閑的設(shè)備;
對(duì)每個(gè)所述待運(yùn)行子程序進(jìn)行檢測(cè),獲得每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源;
根據(jù)每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源,為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備。
需要說(shuō)明的是,程序運(yùn)行設(shè)備在將待運(yùn)行程序劃分為一個(gè)或者多個(gè)待運(yùn)行子程序之后,對(duì)與本地相連接的各個(gè)設(shè)備的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,從而獲得其中較為空閑的設(shè)備作為子程序運(yùn)行設(shè)備。隨后,該程序運(yùn)行設(shè)備對(duì)各個(gè)待運(yùn)行子程序進(jìn)行檢測(cè),從而獲得各個(gè)待運(yùn)行子程序運(yùn)行所需的設(shè)備資源,并根據(jù)每個(gè)待運(yùn)行子程序運(yùn)行所需的設(shè)備資源,為每個(gè)待運(yùn)行子程序分配相應(yīng)的擁有該待運(yùn)行子程序所需的設(shè)備資源的子程序運(yùn)行設(shè)備。最后,在完成子程序運(yùn)行設(shè)備的分配之后,該程序運(yùn)行設(shè)備將各個(gè)待運(yùn)行子程序發(fā)送至對(duì)應(yīng)的子程序運(yùn)行設(shè)備中進(jìn)行編譯和運(yùn)行。
在另一個(gè)優(yōu)選的實(shí)施例中,在上述實(shí)施例的基礎(chǔ)之上,所述獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,具體包括:
查詢預(yù)先配置的注冊(cè)設(shè)備信息列表,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;
為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
所述程序分布式運(yùn)行方法,還包括:
每隔預(yù)設(shè)的時(shí)間間隔查詢所述注冊(cè)設(shè)備信息列表,向所述注冊(cè)設(shè)備信息列表中的每個(gè)設(shè)備信息所對(duì)應(yīng)的設(shè)備發(fā)送設(shè)備驗(yàn)證請(qǐng)求,并接收每個(gè)所述設(shè)備的反饋信息,獲得所有所述設(shè)備中的至少一個(gè)連續(xù)n次無(wú)所述反饋信息的失聯(lián)設(shè)備;其中,所述注冊(cè)設(shè)備信息列表用于記錄所有與本地相連接的設(shè)備的設(shè)備信息;n≥1;
將所述注冊(cè)設(shè)備信息列表中的每個(gè)所述失聯(lián)設(shè)備所對(duì)應(yīng)的所述設(shè)備信息刪除。
需要說(shuō)明的是,上述程序運(yùn)行設(shè)備中預(yù)先配置有注冊(cè)設(shè)備信息列表,用于記錄所有與本地相連接的設(shè)備的設(shè)備信息??梢岳斫獾氖牵摮绦蜻\(yùn)行設(shè)備在接收到一個(gè)設(shè)備發(fā)送的注冊(cè)請(qǐng)求,并根據(jù)該注冊(cè)請(qǐng)求將該設(shè)備的相關(guān)設(shè)備信息載入該注冊(cè)設(shè)備信息列表之后,該設(shè)備即在該程序運(yùn)行設(shè)備中完成注冊(cè),且該設(shè)備即與該程序運(yùn)行設(shè)備完成連接。
該程序運(yùn)行設(shè)備需要每隔一段時(shí)間對(duì)該注冊(cè)設(shè)備信息列表中所記錄的各個(gè)設(shè)備的連接狀態(tài)進(jìn)行檢測(cè),從而將其中已經(jīng)與本地?cái)嚅_(kāi)連接的設(shè)備的相關(guān)設(shè)備信息刪除。具體地,該程序運(yùn)行設(shè)備每隔一段時(shí)間查詢?cè)撟?cè)設(shè)備信息列表,并向該注冊(cè)設(shè)備信息列表中所記載的各個(gè)設(shè)備信息所對(duì)應(yīng)的設(shè)備發(fā)送設(shè)備驗(yàn)證請(qǐng)求。若該程序運(yùn)行設(shè)備能夠接收到某一設(shè)備返回的反饋信息,則說(shuō)明該設(shè)備仍與本地保持著連接關(guān)系,因此不對(duì)注冊(cè)設(shè)備信息列表中所記載的該設(shè)備的設(shè)備信息進(jìn)行處理;若該程序運(yùn)行設(shè)備連續(xù)n(n≥1)次仍接收不到某一設(shè)備返回的反饋信息,則說(shuō)明該設(shè)備已與本地?cái)嚅_(kāi)了連接關(guān)系,因此將注冊(cè)設(shè)備信息列表中所記載的該設(shè)備的設(shè)備信息刪除。
該程序運(yùn)行設(shè)備在為每個(gè)待運(yùn)行子程序分配相應(yīng)的子程序運(yùn)行設(shè)備之前,可以通過(guò)查詢上述注冊(cè)設(shè)備信息列表獲得各個(gè)設(shè)備信息的方式獲得一個(gè)或者多個(gè)子程序運(yùn)行設(shè)備。
本發(fā)明實(shí)施例通過(guò)在程序運(yùn)行設(shè)備中配置注冊(cè)設(shè)備信息列表,并通過(guò)對(duì)注冊(cè)設(shè)備信息列表進(jìn)行定期清理,從而使得程序運(yùn)行設(shè)備能夠根據(jù)該注冊(cè)設(shè)備信息列表獲得準(zhǔn)確的子程序運(yùn)行設(shè)備,減少甚至避免了在獲得子程序運(yùn)行設(shè)備過(guò)程中的不必要的查詢、試探和糾錯(cuò)的時(shí)間,因此能夠進(jìn)一步提高程序編譯和運(yùn)行的速度。
本發(fā)明實(shí)施例提供的程序分布式運(yùn)行方法,通過(guò)將待運(yùn)行的程序劃分為若干子程序,并將這些待運(yùn)行的子程序分發(fā)至不同的子程序運(yùn)行設(shè)備中分別進(jìn)行編譯和運(yùn)行,從而利用多個(gè)設(shè)備的系統(tǒng)資源來(lái)編譯和運(yùn)行同一程序,實(shí)現(xiàn)程序的分布式運(yùn)行,因此能夠大大提高程序編譯和運(yùn)行的速度,進(jìn)而能夠縮短軟件或者應(yīng)用等的開(kāi)發(fā)周期,提高應(yīng)用功能的可擴(kuò)展能力。在一些實(shí)施例中,可以通過(guò)在對(duì)待運(yùn)行程序進(jìn)行劃分之前,對(duì)該待運(yùn)行程序進(jìn)行預(yù)編譯,簡(jiǎn)化各個(gè)待運(yùn)行子程序在各個(gè)子程序運(yùn)行設(shè)備中的編譯過(guò)程,因此能夠進(jìn)一步提高程序編譯和運(yùn)行的速度。在另一些實(shí)施例中,還可以通過(guò)在程序運(yùn)行設(shè)備中配置注冊(cè)設(shè)備信息列表,并通過(guò)對(duì)注冊(cè)設(shè)備信息列表進(jìn)行定期清理,從而使得程序運(yùn)行設(shè)備能夠根據(jù)該注冊(cè)設(shè)備信息列表獲得準(zhǔn)確的子程序運(yùn)行設(shè)備,減少甚至避免了在獲得子程序運(yùn)行設(shè)備過(guò)程中的不必要的查詢、試探和糾錯(cuò)的時(shí)間,因此能夠進(jìn)一步提高程序編譯和運(yùn)行的速度。
相應(yīng)地,本發(fā)明還提供一種程序分布式運(yùn)行裝置,能夠?qū)崿F(xiàn)上述程序分布式運(yùn)行方法的所有流程。
如圖2所示,為本發(fā)明提供的程序分布式運(yùn)行裝置的一個(gè)優(yōu)選的實(shí)施例的結(jié)構(gòu)示意圖,具體如下:
待運(yùn)行程序獲得模塊21,用于獲得待運(yùn)行程序;
待運(yùn)行程序劃分模塊22,用于根據(jù)預(yù)先設(shè)置的程序劃分邏輯,將所述待運(yùn)行程序劃分為至少一個(gè)待運(yùn)行子程序;
子程序運(yùn)行設(shè)備分配模塊23,用于獲得至少一個(gè)子程序運(yùn)行設(shè)備,并為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
子程序編譯運(yùn)行模塊24,用于將每個(gè)所述待運(yùn)行子程序發(fā)送至對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備,以使每個(gè)所述子程序運(yùn)行設(shè)備編譯和運(yùn)行對(duì)應(yīng)的所述待運(yùn)行子程序;以及,
程序運(yùn)行結(jié)果獲得模塊25,用于接收每個(gè)所述子程序運(yùn)行設(shè)備返回的子程序運(yùn)行結(jié)果,并根據(jù)所有所述子程序運(yùn)行結(jié)果獲得相應(yīng)的程序運(yùn)行結(jié)果。
進(jìn)一步地,所述待運(yùn)行程序劃分模塊,具體包括:
程序預(yù)編譯單元,用于對(duì)所述待運(yùn)行程序進(jìn)行預(yù)編譯;以及,
程序劃分單元,用于根據(jù)所述程序劃分邏輯,對(duì)經(jīng)過(guò)所述預(yù)編譯的所述待運(yùn)行程序進(jìn)行劃分,獲得至少一個(gè)所述待運(yùn)行子程序。
更優(yōu)選地,所述子程序運(yùn)行設(shè)備分配模塊,具體包括:
第一子程序運(yùn)行設(shè)備獲得單元,用于對(duì)所有與本地相連接的設(shè)備的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;其中,所述子程序運(yùn)行設(shè)備為所有所述與本地相連接的設(shè)備中運(yùn)行狀態(tài)為空閑的設(shè)備;
子程序所需資源檢測(cè)單元,用于對(duì)每個(gè)所述待運(yùn)行子程序進(jìn)行檢測(cè),獲得每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源;以及,
第一子程序運(yùn)行設(shè)備分配單元,用于根據(jù)每個(gè)所述待運(yùn)行子程序運(yùn)行所需的設(shè)備資源,為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備。
在另一個(gè)優(yōu)選的實(shí)施例中,在上述實(shí)施例的基礎(chǔ)之上,所述子程序運(yùn)行設(shè)備分配模塊,具體包括:
第二子程序運(yùn)行設(shè)備獲得單元,用于查詢預(yù)先配置的注冊(cè)設(shè)備信息列表,獲得至少一個(gè)所述子程序運(yùn)行設(shè)備;以及,
第二子程序運(yùn)行設(shè)備分配單元,用于為每個(gè)所述待運(yùn)行子程序分配對(duì)應(yīng)的所述子程序運(yùn)行設(shè)備;
所述程序分布式運(yùn)行裝置,還包括:
失聯(lián)設(shè)備檢測(cè)模塊,用于每隔預(yù)設(shè)的時(shí)間間隔查詢所述注冊(cè)設(shè)備信息列表,向所述注冊(cè)設(shè)備信息列表中的每個(gè)設(shè)備信息所對(duì)應(yīng)的設(shè)備發(fā)送設(shè)備驗(yàn)證請(qǐng)求,并接收每個(gè)所述設(shè)備的反饋信息,獲得所有所述設(shè)備中的至少一個(gè)連續(xù)n次無(wú)所述反饋信息的失聯(lián)設(shè)備;其中,所述注冊(cè)設(shè)備信息列表用于記錄所有與本地相連接的設(shè)備的設(shè)備信息;n≥1;以及,
失聯(lián)設(shè)備刪除模塊,用于將所述注冊(cè)設(shè)備信息列表中的每個(gè)所述失聯(lián)設(shè)備所對(duì)應(yīng)的所述設(shè)備信息刪除。
如圖3所示,為本發(fā)明提供的程序分布式運(yùn)行系統(tǒng)的一個(gè)優(yōu)選的實(shí)施例的結(jié)構(gòu)示意圖,包括程序運(yùn)行設(shè)備31和至少一個(gè)子程序運(yùn)行設(shè)備32;
所述程序運(yùn)行設(shè)備31,為上述任一項(xiàng)所述的程序分布式運(yùn)行裝置;
所述子程序運(yùn)行設(shè)備32,用于運(yùn)行所述程序運(yùn)行設(shè)備31發(fā)送的待運(yùn)行子程序,生成相應(yīng)的子程序運(yùn)行結(jié)果,并將所述子程序運(yùn)行結(jié)果返回至所述程序運(yùn)行設(shè)備31。
需要說(shuō)明的是,本發(fā)明實(shí)施例僅以程序分布式運(yùn)行系統(tǒng)中包括一個(gè)程序運(yùn)行設(shè)備為例進(jìn)行描述,但在具體實(shí)施當(dāng)中,程序分布式運(yùn)行系統(tǒng)中還可以包括多個(gè)程序運(yùn)行設(shè)備,每個(gè)子程序運(yùn)行設(shè)備也可以同時(shí)與多個(gè)程序運(yùn)行設(shè)備相連接,其數(shù)量可以根據(jù)實(shí)際應(yīng)用來(lái)配置。
在另一個(gè)優(yōu)選的實(shí)施例中,在上述實(shí)施例的基礎(chǔ)之上,所述程序分布式運(yùn)行系統(tǒng)還包括程序運(yùn)行一體機(jī);
所述程序運(yùn)行一體機(jī)中包括所述程序運(yùn)行設(shè)備和一個(gè)所述子程序運(yùn)行設(shè)備。
本發(fā)明實(shí)施例提供的程序分布式運(yùn)行裝置及系統(tǒng),通過(guò)將待運(yùn)行的程序劃分為若干子程序,并將這些待運(yùn)行的子程序分發(fā)至不同的子程序運(yùn)行設(shè)備中分別進(jìn)行編譯和運(yùn)行,從而利用多個(gè)設(shè)備的系統(tǒng)資源來(lái)編譯和運(yùn)行同一程序,實(shí)現(xiàn)程序的分布式運(yùn)行,因此能夠大大提高程序編譯和運(yùn)行的速度,進(jìn)而能夠縮短軟件或者應(yīng)用等的開(kāi)發(fā)周期,提高應(yīng)用功能的可擴(kuò)展能力。在一些實(shí)施例中,可以通過(guò)在對(duì)待運(yùn)行程序進(jìn)行劃分之前,對(duì)該待運(yùn)行程序進(jìn)行預(yù)編譯,簡(jiǎn)化各個(gè)待運(yùn)行子程序在各個(gè)子程序運(yùn)行設(shè)備中的編譯過(guò)程,因此能夠進(jìn)一步提高程序編譯和運(yùn)行的速度。在另一些實(shí)施例中,還可以通過(guò)在程序運(yùn)行設(shè)備中配置注冊(cè)設(shè)備信息列表,并通過(guò)對(duì)注冊(cè)設(shè)備信息列表進(jìn)行定期清理,從而使得程序運(yùn)行設(shè)備能夠根據(jù)該注冊(cè)設(shè)備信息列表獲得準(zhǔn)確的子程序運(yùn)行設(shè)備,減少甚至避免了在獲得子程序運(yùn)行設(shè)備過(guò)程中的不必要的查詢、試探和糾錯(cuò)的時(shí)間,因此能夠進(jìn)一步提高程序編譯和運(yùn)行的速度。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為本發(fā)明的保護(hù)范圍。