欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種實現(xiàn)分布式編譯的方法和分布式編譯系統(tǒng)的制作方法

文檔序號:10724657閱讀:522來源:國知局
一種實現(xiàn)分布式編譯的方法和分布式編譯系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)分布式編譯的方法和分布式編譯系統(tǒng)。其中所述方法包括:通過前端頁面接收用戶提交的編譯任務(wù);每個編譯任務(wù)中包括:待編譯文件在代碼服務(wù)器上的存儲路徑信息;將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上,由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件、對待編譯文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫;接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。該技術(shù)方案實現(xiàn)了文件的分布式編譯,控制了成品質(zhì)量,整體形成了可控、可溯的編譯框架。
【專利說明】
一種實現(xiàn)分布式編譯的方法和分布式編譯系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及編譯領(lǐng)域,具體涉及一種實現(xiàn)分布式編譯的方法和分布式編譯系統(tǒng)。 【背景技術(shù)】
[0002]代碼編譯是將程序員編寫的程序源碼通過編譯程序編譯為機(jī)器可執(zhí)行文件的過程。在軟件開發(fā)公司中,往往不是由個人而是多人負(fù)責(zé)開發(fā)某個軟件,因此在開發(fā)過程中會產(chǎn)生多個版本的代碼,而最終軟件只能由某個最終確定的版本編譯生成,因此許多公司內(nèi)都搭建了代碼服務(wù)器進(jìn)行代碼的管理。然而現(xiàn)有技術(shù)中對于代碼編譯并沒有較為合理的管理方法,由于任一臺開發(fā)機(jī)上都有可能安裝編譯程序,對代碼執(zhí)行編譯,導(dǎo)致最終生成的軟件產(chǎn)品質(zhì)量難以控制。
【發(fā)明內(nèi)容】

[0003]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的實現(xiàn)分布式編譯的方法和分布式編譯系統(tǒng)。
[0004]依據(jù)本發(fā)明的一個方面,提供了一種實現(xiàn)分布式編譯的方法,包括:
[0005]通過前端頁面接收用戶提交的編譯任務(wù);每個編譯任務(wù)中包括:待編譯文件在代碼服務(wù)器上的存儲路徑信息;
[0006]將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上,由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件、對待編譯文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫;
[0007]接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。
[0008]可選地,每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;
[0009]所述將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上包括: 根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)。
[0010]可選地,所述根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)包括:
[0011]將所接收到編譯任務(wù)放入編譯任務(wù)池中;
[0012]每接收到一個虛擬機(jī)的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息確定該虛擬機(jī)的編譯環(huán)境信息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)的編譯環(huán)境信息匹配的編譯任務(wù)分配給該虛擬機(jī);
[0013]其中,空閑的虛擬機(jī)每隔預(yù)設(shè)時間發(fā)送一次任務(wù)查詢信息。
[0014]可選地,每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;
[0015]該方法在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上之前,進(jìn)一步包括:將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器進(jìn)行校驗,在校驗通過后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)的虛擬機(jī)上;
[0016]所述由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件包括:相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器獲取對應(yīng)的待編譯文件。
[0017]可選地,該方法進(jìn)一步包括:
[0018]虛擬機(jī)對待編譯文件進(jìn)行編譯時如果需要編譯公用資源,先到公共數(shù)據(jù)庫中查詢;
[0019]如果公共數(shù)據(jù)庫中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫獲取;
[0020]如果公共數(shù)據(jù)庫中不存在需要的編譯公用資源,則從代碼服務(wù)器獲取該編譯公用資源,并保存到公共數(shù)據(jù)庫中。
[0021]可選地,該方法進(jìn)一步包括:
[0022]生成對公共數(shù)據(jù)庫的訪問賬戶信息;
[0023]接收各虛擬機(jī)在每次啟動時發(fā)送的獲取/更新公共數(shù)據(jù)庫的訪問賬戶信息的請求,將所生成的相應(yīng)訪問賬戶信息發(fā)送給發(fā)送請求的虛擬機(jī)。[〇〇24]可選地,該方法進(jìn)一步包括:
[0025]將虛擬機(jī)反饋的編譯信息,通過前端頁面展示給用戶。[〇〇26]可選地,該方法進(jìn)一步包括:
[0027]通過前端頁面接收用戶提交的查詢信息;
[0028]根據(jù)查詢信息從回溯數(shù)據(jù)庫和/或公共數(shù)據(jù)庫中獲取相應(yīng)的內(nèi)容,并通過前端頁面展示給用戶。
[0029]可選地,所述編譯信息包括如下中的一種或多種:
[0030]虛擬機(jī)在執(zhí)行編譯任務(wù)時的編譯環(huán)境信息;[0031 ]虛擬機(jī)在執(zhí)行編譯任務(wù)時記錄的編譯日志信息;[〇〇32]編譯進(jìn)度信息。[〇〇33]可選地,該方法進(jìn)一步包括:
[0034]將編譯結(jié)果文件發(fā)送到簽名服務(wù)器,由簽名服務(wù)器對編譯結(jié)果文件進(jìn)行簽名操作后輸出簽名后的文件,以及將簽名后的文件發(fā)送到回溯數(shù)據(jù)庫中保存一份。
[0035]依據(jù)本發(fā)明的另一方面,提供了一種分布式編譯系統(tǒng),包括:中心控制器、分布式的虛擬機(jī)集群、代碼服務(wù)器、公共數(shù)據(jù)庫和回溯數(shù)據(jù)庫;
[0036]中心控制器,適于通過前端頁面接收用戶提交的編譯任務(wù),將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上;其中,每個編譯任務(wù)中包括:待編譯文件在代碼服務(wù)器上的存儲路徑信息;
[0037]虛擬機(jī),適于根據(jù)所分配的編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件,對待編譯文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫,以及適于將編譯信息反饋給中心控制器;
[0038]中心控制器,還適于接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。
[0039]可選地,每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;
[0040]所述中心控制器,適于根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)。
[0041]可選地,所述中心控制器,適于將所接收到編譯任務(wù)放入編譯任務(wù)池中;每接收到一個虛擬機(jī)的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息確定該虛擬機(jī)的編譯環(huán)境信息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)的編譯環(huán)境信息匹配的編譯任務(wù)分配給該虛擬機(jī);
[0042]其中,空閑的虛擬機(jī)每隔預(yù)設(shè)時間向中心控制器發(fā)送一次任務(wù)查詢信息。
[0043]可選地,每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;
[0044]所述中心控制器,在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上之前,進(jìn)一步適于將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器進(jìn)行校驗,在校驗通過后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù)調(diào)度到相應(yīng)的虛擬機(jī)上;
[0045]虛擬機(jī)適于根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器獲取對應(yīng)的待編譯文件。
[0046]可選地,虛擬機(jī),進(jìn)一步適于在對待編譯文件進(jìn)行編譯時,如果需要編譯公用資源,先到公共數(shù)據(jù)庫中查詢;如果公共數(shù)據(jù)庫中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫獲取;如果公共數(shù)據(jù)庫中不存在需要的編譯公用資源,則從代碼服務(wù)器獲取該編譯公用資源,并保存到公共數(shù)據(jù)庫中。
[0047]可選地,所述中心控制器,進(jìn)一步適于生成對公共數(shù)據(jù)庫的訪問賬戶信息;接收各虛擬機(jī)在每次啟動時發(fā)送的獲取/更新公共數(shù)據(jù)庫的訪問賬戶信息的請求,將所生成的相應(yīng)訪問賬戶信息發(fā)送給發(fā)送請求的虛擬機(jī)。
[0048]可選地,所述中心控制器,進(jìn)一步適于將虛擬機(jī)反饋的編譯信息,通過前端頁面展示給用戶。
[0049]可選地,該方法進(jìn)一步包括:
[0050]所述中心控制器,進(jìn)一步適于通過前端頁面接收用戶提交的查詢信息;根據(jù)查詢信息從回溯數(shù)據(jù)庫和/或公共數(shù)據(jù)庫中獲取相應(yīng)的內(nèi)容,并通過前端頁面展示給用戶。[0051 ]可選地,所述編譯信息包括如下中的一種或多種:
[0052]虛擬機(jī)在執(zhí)行編譯任務(wù)時的編譯環(huán)境信息;[〇〇53]虛擬機(jī)在執(zhí)行編譯任務(wù)時記錄的編譯日志信息;[〇〇54]編譯進(jìn)度信息。[〇〇55] 可選地,該系統(tǒng)進(jìn)一步包括:
[0056]簽名服務(wù)器,適于從公共數(shù)據(jù)庫獲取編譯結(jié)果文件,對編譯結(jié)果文件進(jìn)行簽名操作后輸出簽名后的文件,以及將簽名后的文件發(fā)送到回溯數(shù)據(jù)庫中保存一份。
[0057]由上述可知,本發(fā)明的技術(shù)方案在多臺虛擬機(jī)中執(zhí)行文件的編譯,這些虛擬機(jī)構(gòu)成了分布式的虛擬機(jī)集群,在通過前端頁面接收到用戶提交的編譯任務(wù)后,從編譯任務(wù)中提取待編譯代碼在代碼服務(wù)器中的存儲路徑信息,將編譯任務(wù)調(diào)度到合適的虛擬機(jī)后便可以根據(jù)存儲路徑信息獲取待編譯文件進(jìn)行編譯,并將結(jié)果文件輸出到公共數(shù)據(jù)庫。各虛擬機(jī)在編譯完成后生成編譯反饋信息,將這些信息和與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。該技術(shù)方案實現(xiàn)了文件的分布式編譯,提供了獨立、統(tǒng)一管理的編譯環(huán)境,控制了成品質(zhì)量;同時編譯的結(jié)果文件保存在公共數(shù)據(jù)庫中方便提取和調(diào)用;回溯數(shù)據(jù)庫中的相關(guān)信息便于日后問題的回溯和復(fù)查,整體形成了可控、可溯的編譯框架。
[0058]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】?!靖綀D說明】
[0059]通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0060]圖1示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)分布式編譯的方法的流程圖;
[0061]圖2示出了根據(jù)本發(fā)明一個實施例的一種分布式編譯系統(tǒng)的結(jié)構(gòu)示意圖。【具體實施方式】
[0062]下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0063]圖1示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)分布式編譯的方法的流程圖,如圖1 所示,該方法包括:
[0064]步驟S110,通過前端頁面接收用戶提交的編譯任務(wù);每個編譯任務(wù)中包括:待編譯文件在代碼服務(wù)器上的存儲路徑信息。
[0065]步驟S120,將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上,由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件、對待編譯文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫。
[0066]步驟S130,接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。
[0067]可見,圖1所示的方法,在多臺虛擬機(jī)中執(zhí)行文件的編譯,這些虛擬機(jī)構(gòu)成了分布式的虛擬機(jī)集群,在通過前端頁面接收到用戶提交的編譯任務(wù)后,從編譯任務(wù)中提取待編譯代碼在代碼服務(wù)器中的存儲路徑信息,將編譯任務(wù)調(diào)度到合適的虛擬機(jī)后便可以根據(jù)存儲路徑信息獲取待編譯文件進(jìn)行編譯,并將結(jié)果文件輸出到公共數(shù)據(jù)庫。各虛擬機(jī)在編譯完成后生成編譯反饋信息,將這些信息和與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。該技術(shù)方案實現(xiàn)了文件的分布式編譯,提供了獨立、統(tǒng)一管理的編譯環(huán)境,控制了成品質(zhì)量;同時編譯的結(jié)果文件保存在公共數(shù)據(jù)庫中方便提取和調(diào)用;回溯數(shù)據(jù)庫中的相關(guān)信息便于日后問題的回溯和復(fù)查,整體形成了可控、可溯的編譯框架。
[0068]在本發(fā)明的一個實施例中,圖1所示的方法中,每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上包括:根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)。
[0069]舉例而言,針對安卓系統(tǒng)、1S系統(tǒng)、Windows系統(tǒng)編寫的代碼文件所要求的編譯環(huán)境是不同的,因此每個待編譯文件都需要特定的編譯環(huán)境,如要求編譯環(huán)境配置有VS2008, VS2010等組件才能實現(xiàn)編譯。又例如,根據(jù)開發(fā)項目的需求不同,編譯過程中可以根據(jù)設(shè)置參數(shù)的不同生成不同的編譯結(jié)果文件,如要求編譯結(jié)果文件包含符號表pdb文件,因此可以在前端頁面上為用戶提供生成的編譯文件包含pdb文件的選項。如果某個開發(fā)項目強(qiáng)制要求編譯輸出該文件,則可以在后臺將該選項設(shè)置為無法在前端頁面進(jìn)行操作的默認(rèn)設(shè)置項。這樣,一方面各虛擬機(jī)可以配置相同或不同的編譯環(huán)境以應(yīng)對不同的編譯需求,另一方面也可以根據(jù)用戶輸入的參數(shù)控制編譯結(jié)果文件的類型。其中虛擬機(jī)的編譯環(huán)境信息可以維護(hù)為一個編譯環(huán)境信息列表供查詢。因此在接收到編譯任務(wù)后,調(diào)取其中的編譯環(huán)境要求信息,在編譯環(huán)境信息列表中匹配滿足要求的虛擬機(jī),再從中選出空閑的虛擬機(jī)進(jìn)行編譯。
[0070]在一優(yōu)選實施例中,空閑的虛擬機(jī)可以主動請求任務(wù)進(jìn)行編譯,具體地,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)包括:將所接收到編譯任務(wù)放入編譯任務(wù)池中;每接收到一個虛擬機(jī)的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息確定該虛擬機(jī)的編譯環(huán)境信息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)的編譯環(huán)境信息匹配的編譯任務(wù)分配給該虛擬機(jī);其中,空閑的虛擬機(jī)每隔預(yù)設(shè)時間發(fā)送一次任務(wù)查詢信息。[0071 ]例如,空閑的虛擬機(jī)A每隔5分鐘發(fā)送一次任務(wù)查詢信息,當(dāng)接收到該信息后,從編譯環(huán)境信息列表中確定該虛擬機(jī)A安裝有JDK(Java Development Kit,Java開發(fā)工具包), 可以編譯安卓apk,因此從編譯任務(wù)池中確定了相應(yīng)任務(wù)并分配給虛擬機(jī)A。
[0072]在本發(fā)明的一個實施例中,圖1所示的方法中,每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;該方法在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上之前,進(jìn)一步包括:將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器進(jìn)行校驗,在校驗通過后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)的虛擬機(jī)上;由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件包括:相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器獲取對應(yīng)的待編譯文件。
[0073]—個開發(fā)項目在代碼服務(wù)器中可能存在多個版本的待編譯文件,同時在代碼服務(wù)器中存在多個開發(fā)項目的待編譯文件,為了安全控制,可以要求每個項目只有權(quán)限較高的用戶可以訪問并提取其中的待編譯文件進(jìn)行編譯。在本實施例中,用戶A通過前端頁面提交編譯任務(wù)時,需要在頁面的相應(yīng)位置輸入用戶代碼權(quán)限信息,例如代碼服務(wù)器的登錄名和密碼,則通過該用戶代碼權(quán)限信息先去代碼服務(wù)器進(jìn)行檢驗,通過后在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,再將編譯任務(wù)調(diào)度至相應(yīng)的虛擬機(jī)上,虛擬機(jī)編譯時通過打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器獲取對應(yīng)的待編譯文件進(jìn)行編譯。
[0074]在本發(fā)明的一個實施例中,圖1所示的方法進(jìn)一步包括:虛擬機(jī)對待編譯文件進(jìn)行編譯時如果需要編譯公用資源,先到公共數(shù)據(jù)庫中查詢;如果公共數(shù)據(jù)庫中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫獲取;如果公共數(shù)據(jù)庫中不存在需要的編譯公用資源,則從代碼服務(wù)器獲取該編譯公用資源,并保存到公共數(shù)據(jù)庫中。
[0075]在對待編譯文件進(jìn)行編譯時,經(jīng)常會用到.lib頭文件等公用編譯資源,這些資源是很多編譯任務(wù)都需要用到的,如果每次都向代碼服務(wù)器進(jìn)行訪問獲取會大大浪費時間和資源,因此可以將這些公用資源存儲到公共數(shù)據(jù)庫中。如果編譯任務(wù)所需的公共資源無法在公共數(shù)據(jù)庫中找到,再從代碼服務(wù)器進(jìn)行獲取,在獲取到該公共資源后可以將其存至公共數(shù)據(jù)庫,這樣其他編譯任務(wù)如果需要該公共資源就不必到代碼服務(wù)器進(jìn)行獲取,節(jié)約了時間,效率更高。
[0076]在本發(fā)明的一個實施例中,圖1所示的方法進(jìn)一步包括:生成對公共數(shù)據(jù)庫的訪問賬戶信息;接收各虛擬機(jī)在每次啟動時發(fā)送的獲取/更新公共數(shù)據(jù)庫的訪問賬戶信息的請求,將所生成的相應(yīng)訪問賬戶信息發(fā)送給發(fā)送請求的虛擬機(jī)。
[0077]由于公共數(shù)據(jù)庫中包含大量的從代碼服務(wù)器獲取的內(nèi)容,因此如果不對公共數(shù)據(jù)庫的訪問權(quán)限加以限制,很容易引起安全問題,因此在本實施例中,需要生成對公共數(shù)據(jù)庫的訪問賬戶信息,使得虛擬機(jī)根據(jù)獲取.更新的訪問賬戶信息來訪問公共數(shù)據(jù)庫。
[0078]在本發(fā)明的一個實施例中,圖1所示的方法進(jìn)一步包括:將虛擬機(jī)反饋的編譯信息,通過前端頁面展示給用戶。具體地,編譯信息包括如下中的一種或多種:虛擬機(jī)在執(zhí)行編譯任務(wù)時的編譯環(huán)境信息;虛擬機(jī)在執(zhí)行編譯任務(wù)時記錄的編譯日志信息;編譯進(jìn)度信息。用戶可以根據(jù)這些信息了解到編譯執(zhí)行的狀況,方便進(jìn)行中斷、回滾等操作。
[0079]在本發(fā)明的一個實施例中,圖1所示的方法進(jìn)一步包括:通過前端頁面接收用戶提交的查詢信息;根據(jù)查詢信息從回溯數(shù)據(jù)庫和/或公共數(shù)據(jù)庫中獲取相應(yīng)的內(nèi)容,并通過前端頁面展示給用戶。
[0080]其中,提交查詢信息的過程與編譯過程可以是相互獨立的,例如在提交編譯任務(wù)前,查看公共數(shù)據(jù)庫中是否包含所需的頭文件,又例如,在編譯結(jié)果文件出現(xiàn)問題需要排查時,訪問回溯數(shù)據(jù)庫調(diào)取之前執(zhí)行過的編譯任務(wù)等信息。[0081 ]在本發(fā)明的一個實施例中,上述方法進(jìn)一步包括:將編譯結(jié)果文件發(fā)送到簽名服務(wù)器,由簽名服務(wù)器對編譯結(jié)果文件進(jìn)行簽名操作后輸出簽名后的文件,以及將簽名后的文件發(fā)送到回溯數(shù)據(jù)庫中保存一份。
[0082]編譯結(jié)果文件進(jìn)行簽名后就擁有了軟件開發(fā)者的認(rèn)證,例如,在手游客戶端上線時,用戶往往在應(yīng)用市場中查看到該客戶端確實擁有開發(fā)者的簽名才會確認(rèn)下載,相當(dāng)于確認(rèn)了該客戶端是經(jīng)過官方認(rèn)證的。因此,確保上線的產(chǎn)品是經(jīng)過簽名的、以及確保簽名不被濫用是開發(fā)者需要注意的問題。在本實施例中由簽名服務(wù)器完成編譯結(jié)果文件的簽名操作,簽名后的文件同樣可以保存到回溯數(shù)據(jù)庫中,例如在產(chǎn)品出現(xiàn)問題后,可以從數(shù)據(jù)庫中提取相應(yīng)的文件進(jìn)行調(diào)試檢查。
[0083]圖2示出了根據(jù)本發(fā)明一個實施例的一種分布式編譯系統(tǒng)的結(jié)構(gòu)示意圖,如圖2所示,分布式編譯系統(tǒng)200包括:中心控制器210、分布式的虛擬機(jī)220集群、代碼服務(wù)器230、公共數(shù)據(jù)庫240和回溯數(shù)據(jù)庫250。
[0084]中心控制器210,適于通過前端頁面接收用戶提交的編譯任務(wù),將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)220集群中的相應(yīng)虛擬機(jī)220上;其中,每個編譯任務(wù)中包括:待編譯文件在代碼服務(wù)器230上的存儲路徑信息。
[0085]虛擬機(jī)220,適于根據(jù)所分配的編譯任務(wù)從代碼服務(wù)器230獲取對應(yīng)的待編譯文件,對待編譯文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫240,以及適于將編譯信息反饋給中心控制器210。
[0086]中心控制器210,還適于接收各虛擬機(jī)220反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫250中。
[0087]可見,圖2所示的系統(tǒng),在多臺虛擬機(jī)中執(zhí)行文件的編譯,這些虛擬機(jī)構(gòu)成了分布式的虛擬機(jī)集群,在通過前端頁面接收到用戶提交的編譯任務(wù)后,從編譯任務(wù)中提取待編譯代碼在代碼服務(wù)器中的存儲路徑信息,將編譯任務(wù)調(diào)度到合適的虛擬機(jī)后便可以根據(jù)存儲路徑信息獲取待編譯文件進(jìn)行編譯,并將結(jié)果文件輸出到公共數(shù)據(jù)庫。各虛擬機(jī)在編譯完成后生成編譯反饋信息,將這些信息和與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。該技術(shù)方案實現(xiàn)了文件的分布式編譯,提供了獨立、統(tǒng)一管理的編譯環(huán)境,控制了成品質(zhì)量;同時編譯的結(jié)果文件保存在公共數(shù)據(jù)庫中方便提取和調(diào)用;回溯數(shù)據(jù)庫中的相關(guān)信息便于日后問題的回溯和復(fù)查,整體形成了可控、可溯的編譯框架。[〇〇88]在本發(fā)明的一個實施例中,上述系統(tǒng)中,每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;中心控制器210,適于根據(jù)預(yù)先搜集的各虛擬機(jī)220的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)220。[〇〇89]在本發(fā)明的一個實施例中,上述系統(tǒng)中,中心控制器210,適于將所接收到編譯任務(wù)放入編譯任務(wù)池中;每接收到一個虛擬機(jī)220的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī) 220的編譯環(huán)境信息確定該虛擬機(jī)220的編譯環(huán)境信息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)220的編譯環(huán)境信息匹配的編譯任務(wù)分配給該虛擬機(jī)220;其中,空閑的虛擬機(jī)220每隔預(yù)設(shè)時間向中心控制器210發(fā)送一次任務(wù)查詢信息。
[0090]在本發(fā)明的一個實施例中,上述系統(tǒng)中,每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;中心控制器210,在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)220集群中的相應(yīng)虛擬機(jī)220上之前,進(jìn)一步適于將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器230進(jìn)行校驗,在校驗通過后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù)調(diào)度到相應(yīng)的虛擬機(jī)220上;虛擬機(jī)220適于根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器230獲取對應(yīng)的待編譯文件。[0091 ]在本發(fā)明的一個實施例中,上述系統(tǒng)中,虛擬機(jī)220,進(jìn)一步適于在對待編譯文件進(jìn)行編譯時,如果需要編譯公用資源,先到公共數(shù)據(jù)庫240中查詢;如果公共數(shù)據(jù)庫240中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫240獲取;如果公共數(shù)據(jù)庫240中不存在需要的編譯公用資源,則從代碼服務(wù)器230獲取該編譯公用資源,并保存到公共數(shù)據(jù)庫240中。
[0092]在本發(fā)明的一個實施例中,上述系統(tǒng)中,中心控制器210,進(jìn)一步適于生成對公共數(shù)據(jù)庫240的訪問賬戶信息;接收各虛擬機(jī)220在每次啟動時發(fā)送的獲取/更新公共數(shù)據(jù)庫 240的訪問賬戶信息的請求,將所生成的相應(yīng)訪問賬戶信息發(fā)送給發(fā)送請求的虛擬機(jī)220。
[0093]在本發(fā)明的一個實施例中,上述系統(tǒng)中,中心控制器210,進(jìn)一步適于將虛擬機(jī)220 反饋的編譯信息,通過前端頁面展示給用戶。
[0094]在本發(fā)明的一個實施例中,上述系統(tǒng)中,中心控制器210,進(jìn)一步適于通過前端頁面接收用戶提交的查詢信息;根據(jù)查詢信息從回溯數(shù)據(jù)庫250和/或公共數(shù)據(jù)庫240中獲取相應(yīng)的內(nèi)容,并通過前端頁面展示給用戶。[〇〇95]在本發(fā)明的一個實施例中,上述系統(tǒng)中,編譯信息包括如下中的一種或多種:虛擬機(jī)220在執(zhí)行編譯任務(wù)時的編譯環(huán)境信息;虛擬機(jī)220在執(zhí)行編譯任務(wù)時記錄的編譯日志信息;編譯進(jìn)度信息。
[0096]在本發(fā)明的一個實施例中,上述系統(tǒng)進(jìn)一步包括:簽名服務(wù)器(圖未示出),適于從公共數(shù)據(jù)庫240獲取編譯結(jié)果文件,對編譯結(jié)果文件進(jìn)行簽名操作后輸出簽名后的文件,以及將簽名后的文件發(fā)送到回溯數(shù)據(jù)庫250中保存一份。[〇〇97]需要說明的是,上述各系統(tǒng)實施例的具體實現(xiàn)方式與前述對應(yīng)方法實施例的【具體實施方式】相同,在此不再贅述。
[0098]綜上所述,本發(fā)明的技術(shù)方案,在多臺虛擬機(jī)中執(zhí)行文件的編譯,這些虛擬機(jī)構(gòu)成了分布式的虛擬機(jī)集群,在通過前端頁面接收到用戶提交的編譯任務(wù)后,從編譯任務(wù)中提取待編譯代碼在代碼服務(wù)器中的存儲路徑信息,將編譯任務(wù)調(diào)度到合適的虛擬機(jī)后便可以根據(jù)存儲路徑信息獲取待編譯文件進(jìn)行編譯,并將結(jié)果文件輸出到公共數(shù)據(jù)庫。各虛擬機(jī)在編譯完成后生成編譯反饋信息,將這些信息和與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。另外,用戶還可以通過前端頁面查看虛擬機(jī)反饋的編譯信息,以及輸入查詢信息查看回溯數(shù)據(jù)庫中的相應(yīng)內(nèi)容。該技術(shù)方案實現(xiàn)了文件的分布式編譯,提供了獨立、統(tǒng)一管理的編譯環(huán)境,控制了成品質(zhì)量;同時編譯的結(jié)果文件保存在公共數(shù)據(jù)庫中方便提取和調(diào)用;回溯數(shù)據(jù)庫中的相關(guān)信息便于日后問題的回溯和復(fù)查,整體形成了可控、可溯的編譯框架。
[0099]需要說明的是:[〇1〇〇]在此提供的算法和顯示不與任何特定計算機(jī)、虛擬裝置或者其它設(shè)備固有相關(guān)。 各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0101]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0102]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此, 遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0103]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0104]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。[〇1〇5]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的分布式編譯系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0106]應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中, 不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0107]本發(fā)明的實施例公開了A1、一種實現(xiàn)分布式編譯的方法,其中,該方法包括:[〇1〇8]通過前端頁面接收用戶提交的編譯任務(wù);每個編譯任務(wù)中包括:待編譯文件在代碼服務(wù)器上的存儲路徑信息;
[0109]將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上,由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件、對待編譯文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫;
[0110]接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。
[0111]A2、如A1所述的方法,其中,
[0112]每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;
[0113]所述將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上包括: 根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)。
[0114]A3、如A2所述的方法,其中,所述根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)包括:
[0115]將所接收到編譯任務(wù)放入編譯任務(wù)池中;
[0116]每接收到一個虛擬機(jī)的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息確定該虛擬機(jī)的編譯環(huán)境信息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)的編譯環(huán)境信息匹配的編譯任務(wù)分配給該虛擬機(jī);
[0117]其中,空閑的虛擬機(jī)每隔預(yù)設(shè)時間發(fā)送一次任務(wù)查詢信息。
[0118]A4、如A1所述的方法,其中,
[0119]每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;
[0120]該方法在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上之前,進(jìn)一步包括:將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器進(jìn)行校驗,在校驗通過后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)的虛擬機(jī)上;[0121 ]所述由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件包括:相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器獲取對應(yīng)的待編譯文件。
[0122]A5、如A1所述的方法,該方法進(jìn)一步包括:
[0123]虛擬機(jī)對待編譯文件進(jìn)行編譯時如果需要編譯公用資源,先到公共數(shù)據(jù)庫中查詢;
[0124]如果公共數(shù)據(jù)庫中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫獲??;
[0125]如果公共數(shù)據(jù)庫中不存在需要的編譯公用資源,則從代碼服務(wù)器獲取該編譯公用資源,并保存到公共數(shù)據(jù)庫中。
[0126]A6、如A1所述的方法,其中,該方法進(jìn)一步包括:
[0127]生成對公共數(shù)據(jù)庫的訪問賬戶信息;
[0128]接收各虛擬機(jī)在每次啟動時發(fā)送的獲取/更新公共數(shù)據(jù)庫的訪問賬戶信息的請求,將所生成的相應(yīng)訪問賬戶信息發(fā)送給發(fā)送請求的虛擬機(jī)。
[0129]A7、如A1所述的方法,其中,該方法進(jìn)一步包括:
[0130]將虛擬機(jī)反饋的編譯信息,通過前端頁面展示給用戶。[〇131 ] A8、如A1所述的方法,其中,該方法進(jìn)一步包括:
[0132]通過前端頁面接收用戶提交的查詢信息;
[0133]根據(jù)查詢信息從回溯數(shù)據(jù)庫和/或公共數(shù)據(jù)庫中獲取相應(yīng)的內(nèi)容,并通過前端頁面展示給用戶。
[0134]A9、如A1所述的方法,其中,所述編譯信息包括如下中的一種或多種:
[0135]虛擬機(jī)在執(zhí)行編譯任務(wù)時的編譯環(huán)境信息;
[0136]虛擬機(jī)在執(zhí)行編譯任務(wù)時記錄的編譯日志信息;
[0137]編譯進(jìn)度信息。
[0138]A10、如A1-A9中任一項所述的方法,其中,該方法進(jìn)一步包括:
[0139]將編譯結(jié)果文件發(fā)送到簽名服務(wù)器,由簽名服務(wù)器對編譯結(jié)果文件進(jìn)行簽名操作后輸出簽名后的文件,以及將簽名后的文件發(fā)送到回溯數(shù)據(jù)庫中保存一份。[〇14〇]本發(fā)明的實施例還公開了B11、一種分布式編譯系統(tǒng),其中,該編譯系統(tǒng)包括:中心控制器、分布式的虛擬機(jī)集群、代碼服務(wù)器、公共數(shù)據(jù)庫和回溯數(shù)據(jù)庫;
[0141]中心控制器,適于通過前端頁面接收用戶提交的編譯任務(wù),將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上;其中,每個編譯任務(wù)中包括:待編譯文件在代碼服務(wù)器上的存儲路徑信息;
[0142]虛擬機(jī),適于根據(jù)所分配的編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件,對待編譯文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫,以及適于將編譯信息反饋給中心控制器;
[0143]中心控制器,還適于接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。
[0144]B12、如B11所述的系統(tǒng),其中,
[0145]每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;
[0146]所述中心控制器,適于根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)。
[0147]B13、如B12所述的系統(tǒng),其中,
[0148]所述中心控制器,適于將所接收到編譯任務(wù)放入編譯任務(wù)池中;每接收到一個虛擬機(jī)的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息確定該虛擬機(jī)的編譯環(huán)境信息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)的編譯環(huán)境信息匹配的編譯任務(wù)分配給該虛擬機(jī);
[0149]其中,空閑的虛擬機(jī)每隔預(yù)設(shè)時間向中心控制器發(fā)送一次任務(wù)查詢信息。
[0150]B14、如B11所述的系統(tǒng),其中,[0151 ]每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;
[0152]所述中心控制器,在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上之前,進(jìn)一步適于將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器進(jìn)行校驗,在校驗通過后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù)調(diào)度到相應(yīng)的虛擬機(jī)上;
[0153]虛擬機(jī)適于根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器獲取對應(yīng)的待編譯文件。
[0154]B15、如B11所述的系統(tǒng),
[0155]虛擬機(jī),進(jìn)一步適于在對待編譯文件進(jìn)行編譯時,如果需要編譯公用資源,先到公共數(shù)據(jù)庫中查詢;如果公共數(shù)據(jù)庫中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫獲取;如果公共數(shù)據(jù)庫中不存在需要的編譯公用資源,則從代碼服務(wù)器獲取該編譯公用資源,并保存到公共數(shù)據(jù)庫中。
[0156]B16、如B11所述的系統(tǒng),其中,
[0157]所述中心控制器,進(jìn)一步適于生成對公共數(shù)據(jù)庫的訪問賬戶信息;接收各虛擬機(jī)在每次啟動時發(fā)送的獲取/更新公共數(shù)據(jù)庫的訪問賬戶信息的請求,將所生成的相應(yīng)訪問賬戶信息發(fā)送給發(fā)送請求的虛擬機(jī)。
[0158]B17、如B11所述的系統(tǒng),其中,
[0159]所述中心控制器,進(jìn)一步適于將虛擬機(jī)反饋的編譯信息,通過前端頁面展示給用戶。
[0160]B18、如Bl 1所述的系統(tǒng),其中,該方法進(jìn)一步包括:
[0161]所述中心控制器,進(jìn)一步適于通過前端頁面接收用戶提交的查詢信息;根據(jù)查詢信息從回溯數(shù)據(jù)庫和/或公共數(shù)據(jù)庫中獲取相應(yīng)的內(nèi)容,并通過前端頁面展示給用戶。
[0162]B19、如Bl 1所述的系統(tǒng),其中,所述編譯信息包括如下中的一種或多種:
[0163]虛擬機(jī)在執(zhí)行編譯任務(wù)時的編譯環(huán)境信息;
[0164]虛擬機(jī)在執(zhí)行編譯任務(wù)時記錄的編譯日志信息;
[0165]編譯進(jìn)度信息。
[0166]B20、如B11-B17中任一項所述的系統(tǒng),其中,該系統(tǒng)進(jìn)一步包括:
[0167]簽名服務(wù)器,適于從公共數(shù)據(jù)庫獲取編譯結(jié)果文件,對編譯結(jié)果文件進(jìn)行簽名操作后輸出簽名后的文件,以及將簽名后的文件發(fā)送到回溯數(shù)據(jù)庫中保存一份。
【主權(quán)項】
1.一種實現(xiàn)分布式編譯的方法,其中,該方法包括:通過前端頁面接收用戶提交的編譯任務(wù);每個編譯任務(wù)中包括:待編譯文件在代碼服 務(wù)器上的存儲路徑信息;將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上,由相應(yīng)虛擬機(jī) 根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件、對待編譯文件進(jìn)行編譯并將編譯結(jié)果 文件輸出到公共數(shù)據(jù)庫;接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān)的用戶信息和編譯信 息保存到回溯數(shù)據(jù)庫中。2.如權(quán)利要求1所述的方法,其中,每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;所述將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上包括:根據(jù) 預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編 譯環(huán)境要求的空閑的虛擬機(jī)。3.如權(quán)利要求2所述的方法,其中,所述根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將 所接收到的編譯任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)包括:將所接收到編譯任務(wù)放入編譯任務(wù)池中;每接收到一個虛擬機(jī)的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息確定 該虛擬機(jī)的編譯環(huán)境信息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)的編譯環(huán)境 信息匹配的編譯任務(wù)分配給該虛擬機(jī);其中,空閑的虛擬機(jī)每隔預(yù)設(shè)時間發(fā)送一次任務(wù)查詢信息。4.如權(quán)利要求1所述的方法,其中,每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;該方法在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上之前, 進(jìn)一步包括:將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器進(jìn)行校驗,在校驗通過 后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù)調(diào)度到分 布式的虛擬機(jī)集群中的相應(yīng)的虛擬機(jī)上;所述由相應(yīng)虛擬機(jī)根據(jù)編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件包括:相應(yīng)虛擬 機(jī)根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器獲取對應(yīng)的待 編譯文件。5.如權(quán)利要求1所述的方法,該方法進(jìn)一步包括:虛擬機(jī)對待編譯文件進(jìn)行編譯時如果需要編譯公用資源,先到公共數(shù)據(jù)庫中查詢;如果公共數(shù)據(jù)庫中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫獲?。蝗绻矓?shù)據(jù)庫中不存在需要的編譯公用資源,則從代碼服務(wù)器獲取該編譯公用資 源,并保存到公共數(shù)據(jù)庫中。6.—種分布式編譯系統(tǒng),其中,該編譯系統(tǒng)包括:中心控制器、分布式的虛擬機(jī)集群、代 碼服務(wù)器、公共數(shù)據(jù)庫和回溯數(shù)據(jù)庫;中心控制器,適于通過前端頁面接收用戶提交的編譯任務(wù),將所接收到的編譯任務(wù)調(diào) 度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬機(jī)上;其中,每個編譯任務(wù)中包括:待編譯文件在代 碼服務(wù)器上的存儲路徑信息;虛擬機(jī),適于根據(jù)所分配的編譯任務(wù)從代碼服務(wù)器獲取對應(yīng)的待編譯文件,對待編譯 文件進(jìn)行編譯并將編譯結(jié)果文件輸出到公共數(shù)據(jù)庫,以及適于將編譯信息反饋給中心控制 器;中心控制器,還適于接收各虛擬機(jī)反饋的編譯信息,將編譯任務(wù)以及與編譯任務(wù)相關(guān) 的用戶信息和編譯信息保存到回溯數(shù)據(jù)庫中。7.如權(quán)利要求6所述的系統(tǒng),其中,每個編譯任務(wù)中還包括:編譯環(huán)境要求信息;所述中心控制器,適于根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息,將所接收到的編譯 任務(wù)分配給符合該編譯任務(wù)的編譯環(huán)境要求的空閑的虛擬機(jī)。8.如權(quán)利要求7所述的系統(tǒng),其中,所述中心控制器,適于將所接收到編譯任務(wù)放入編譯任務(wù)池中;每接收到一個虛擬機(jī) 的任務(wù)查詢信息,根據(jù)預(yù)先搜集的各虛擬機(jī)的編譯環(huán)境信息確定該虛擬機(jī)的編譯環(huán)境信 息,從編譯任務(wù)池中找出編譯環(huán)境要求信息與該虛擬機(jī)的編譯環(huán)境信息匹配的編譯任務(wù)分 配給該虛擬機(jī);其中,空閑的虛擬機(jī)每隔預(yù)設(shè)時間向中心控制器發(fā)送一次任務(wù)查詢信息。9.如權(quán)利要求6所述的系統(tǒng),其中,每個編譯任務(wù)中還包括:用戶代碼權(quán)限信息;所述中心控制器,在將所接收到的編譯任務(wù)調(diào)度到分布式的虛擬機(jī)集群中的相應(yīng)虛擬 機(jī)上之前,進(jìn)一步適于將編譯任務(wù)中的用戶代碼權(quán)限信息發(fā)送給代碼服務(wù)器進(jìn)行校驗,在 校驗通過后,在編譯任務(wù)中的用戶代碼權(quán)限信息中打上校驗通過標(biāo)志,然后再將編譯任務(wù) 調(diào)度到相應(yīng)的虛擬機(jī)上;虛擬機(jī)適于根據(jù)編譯任務(wù)中的打上校驗通過標(biāo)志的用戶代碼權(quán)限信息,從代碼服務(wù)器 獲取對應(yīng)的待編譯文件。10.如權(quán)利要求6所述的系統(tǒng),虛擬機(jī),進(jìn)一步適于在對待編譯文件進(jìn)行編譯時,如果需要編譯公用資源,先到公共數(shù) 據(jù)庫中查詢;如果公共數(shù)據(jù)庫中存在需要的編譯公用資源,則從公共數(shù)據(jù)庫獲取;如果公共 數(shù)據(jù)庫中不存在需要的編譯公用資源,則從代碼服務(wù)器獲取該編譯公用資源,并保存到公 共數(shù)據(jù)庫中。
【文檔編號】G06F9/455GK106095522SQ201610391177
【公開日】2016年11月9日
【申請日】2016年6月3日 公開號201610391177.8, CN 106095522 A, CN 106095522A, CN 201610391177, CN-A-106095522, CN106095522 A, CN106095522A, CN201610391177, CN201610391177.8
【發(fā)明人】張 杰, 楊銀輝, 高大鵬, 劉浩, 曹曙
【申請人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
巴楚县| 绵阳市| 寿阳县| 清水河县| 克山县| 正安县| 新营市| 旌德县| 当阳市| 仁布县| 仁寿县| 武邑县| 镶黄旗| 岳西县| 积石山| 长沙县| 兴安盟| 上高县| 财经| 资兴市| 灵丘县| 吕梁市| 卢湾区| 伊金霍洛旗| 中山市| 板桥市| 吴旗县| 合川市| 运城市| 通化市| 阿拉尔市| 宁津县| 扎囊县| 辽宁省| 保靖县| 谢通门县| 桑植县| 元江| 岑巩县| 平度市| 西城区|