本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,尤其涉及一種代碼管理系統(tǒng)及方法。
背景技術(shù):
現(xiàn)有的代碼管理系統(tǒng),其應(yīng)用與數(shù)據(jù)存儲(chǔ)在同一個(gè)硬件上。隨著訪問量的上升,單臺(tái)硬件服務(wù)已不能滿足需求。代碼管理系統(tǒng)不同于一般的web應(yīng)用,因?yàn)樗写a數(shù)據(jù)并沒有存儲(chǔ)在分布式數(shù)據(jù)庫上,而是存在本地磁盤中。由此,面臨最棘手的問題是:因?yàn)楣蚕泶鎯?chǔ)的問題,普通的負(fù)載均衡技術(shù)不能直接應(yīng)用在代碼管理系統(tǒng)上,況且代碼管理系統(tǒng)需要頻繁地讀寫存儲(chǔ)設(shè)備,如果不能妥善地存儲(chǔ)代碼數(shù)據(jù),將影響響應(yīng)速度和穩(wěn)定性。
以使用git(一款免費(fèi)、開源的分布式版本控制系統(tǒng))做為版本管理工具為例,進(jìn)行項(xiàng)目的合作開發(fā)時(shí)需要借助遠(yuǎn)程倉庫,通過遠(yuǎn)程倉庫和本地倉庫之間的同步,供項(xiàng)目的不同成員統(tǒng)一存儲(chǔ)代碼及變更。遠(yuǎn)程倉庫將運(yùn)行在一臺(tái)機(jī)器上,而本地倉庫會(huì)隨著開發(fā)人員的增多而不斷的增多,這種模式對(duì)于開發(fā)人數(shù)并不是很多的中小團(tuán)隊(duì)非常適用,而對(duì)于開發(fā)人數(shù)上千、上萬的公司,遠(yuǎn)程倉庫使用一臺(tái)機(jī)器的弊端將會(huì)徹底地暴露出來。因開發(fā)人數(shù)很多,本地倉庫會(huì)頻繁地和遠(yuǎn)程倉庫進(jìn)行交互,從而對(duì)服務(wù)端機(jī)器的配置和性能有很高的要求,并且萬一這臺(tái)服務(wù)器出現(xiàn)故障,將會(huì)影響所有的開發(fā)人員,容錯(cuò)方面會(huì)非常糟糕。通常一個(gè)網(wǎng)站在遇到這種瓶頸時(shí),會(huì)采用負(fù)載均衡的方式,將服務(wù)端的壓力由一臺(tái)分?jǐn)偟蕉嗯_(tái)機(jī)器,從而減輕單臺(tái)服務(wù)端機(jī)器的壓力,實(shí)現(xiàn)由多臺(tái)性能一般的機(jī)器代替一臺(tái)性能非常高的機(jī)器的目的。但是這個(gè)方案還存在致命的問題,因?yàn)間it的遠(yuǎn)程倉庫是存儲(chǔ)在磁盤上的,所以當(dāng)使用負(fù)載均衡器訪問遠(yuǎn)程倉庫時(shí),因?yàn)椴⒉恢缹⒁L問的倉庫在哪個(gè)機(jī)器上,所以可能造成找不到要訪問的遠(yuǎn)程倉庫而導(dǎo)致訪問失敗。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中因?yàn)楣蚕泶鎯?chǔ)的問題,普通的負(fù)載均衡技術(shù)不能直接應(yīng)用在代碼管理系統(tǒng)上,否則容易造成訪問代碼失敗的缺陷,提供一種可擴(kuò)展的高性能代碼管理系統(tǒng)及方法。
本發(fā)明是通過以下技術(shù)方案解決上述技術(shù)問題的:
一種代碼管理系統(tǒng),包括:
至少一服務(wù)器,每個(gè)服務(wù)器上分別存儲(chǔ)有至少一項(xiàng)目倉庫;
與所述服務(wù)器均連接的轉(zhuǎn)發(fā)器,用于記錄每一項(xiàng)目倉庫所在的服務(wù)器,還用于接收由請(qǐng)求端發(fā)送的請(qǐng)求操作項(xiàng)目倉庫的請(qǐng)求,以及查找所述請(qǐng)求請(qǐng)求操作的項(xiàng)目倉庫所在的服務(wù)器,并向查找到的服務(wù)器發(fā)送所述請(qǐng)求。
其中,所述項(xiàng)目倉庫用于存儲(chǔ)代碼;記錄每一項(xiàng)目倉庫所在的服務(wù)器即等于記錄項(xiàng)目倉庫與服務(wù)器的對(duì)應(yīng)關(guān)系。本方案中,轉(zhuǎn)發(fā)器設(shè)于服務(wù)器與請(qǐng)求端之間,通過轉(zhuǎn)發(fā)器將請(qǐng)求端的請(qǐng)求發(fā)送至相應(yīng)的服務(wù)器,即使遇到了因代碼數(shù)據(jù)過多而需要增加新的服務(wù)器的情況,也只需要在轉(zhuǎn)發(fā)器中增加新的對(duì)應(yīng)關(guān)系,而請(qǐng)求端的請(qǐng)求依舊是發(fā)送到轉(zhuǎn)發(fā)器,不必直接尋找想要訪問的服務(wù)器,這樣可以在幾乎不損耗性能的情況下將單臺(tái)服務(wù)器的壓力分?jǐn)偟蕉嗯_(tái)服務(wù)器,有利于整個(gè)代碼管理系統(tǒng)的擴(kuò)展,并在容錯(cuò)方面有了很大的提升。
較佳地,所述服務(wù)器用于接收所述轉(zhuǎn)發(fā)器發(fā)送的請(qǐng)求,并根據(jù)所述請(qǐng)求返回相應(yīng)的代碼數(shù)據(jù)至所述轉(zhuǎn)發(fā)器;
所述轉(zhuǎn)發(fā)器還用于將返回的代碼數(shù)據(jù)發(fā)送至所述請(qǐng)求端。
較佳地,所述轉(zhuǎn)發(fā)器還用于將每一項(xiàng)目倉庫所在的服務(wù)器記錄在數(shù)據(jù)庫中,以及從所述數(shù)據(jù)庫中查找所述請(qǐng)求請(qǐng)求操作的項(xiàng)目倉庫所在的服務(wù)器。
較佳地,所述轉(zhuǎn)發(fā)器包括第一轉(zhuǎn)發(fā)器;
所述第一轉(zhuǎn)發(fā)器用于接收由所述請(qǐng)求端發(fā)送的第一請(qǐng)求,所述第一請(qǐng)求用于請(qǐng)求創(chuàng)建第一項(xiàng)目倉庫,所述第一轉(zhuǎn)發(fā)器還用于為所述第一項(xiàng)目倉庫分配用于存儲(chǔ)所述第一項(xiàng)目倉庫的服務(wù)器并進(jìn)行記錄;
和/或,所述第一轉(zhuǎn)發(fā)器用于接收由所述請(qǐng)求端發(fā)送的第二請(qǐng)求,所述第二請(qǐng)求用于請(qǐng)求使用第一協(xié)議訪問第二項(xiàng)目倉庫,所述第一轉(zhuǎn)發(fā)器還用于由所述第二請(qǐng)求生成所述第二項(xiàng)目倉庫的地址信息并從所述地址信息中取出所述第二項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并向查找到的服務(wù)器發(fā)送所述第二請(qǐng)求。
其中,所述第一協(xié)議為http協(xié)議。
較佳地,所述轉(zhuǎn)發(fā)器包括第二轉(zhuǎn)發(fā)器;
所述第二轉(zhuǎn)發(fā)器用于接收由所述請(qǐng)求端發(fā)送的第三請(qǐng)求,所述第三請(qǐng)求用于請(qǐng)求使用第二協(xié)議獲取第三項(xiàng)目倉庫的代碼數(shù)據(jù);
所述第二轉(zhuǎn)發(fā)器還用于由所述第三請(qǐng)求生成命令并從所述命令中截取出所述第三項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并生成第四請(qǐng)求,所述第四請(qǐng)求指示出從所述查找到的服務(wù)器上獲取所述第三項(xiàng)目倉庫的代碼數(shù)據(jù)。
其中,所述第二協(xié)議為ssh協(xié)議。
一種代碼管理方法,包括:
將項(xiàng)目倉庫存儲(chǔ)于服務(wù)器上;
記錄每一項(xiàng)目倉庫所在的服務(wù)器;
接收由請(qǐng)求端發(fā)送的請(qǐng)求操作項(xiàng)目倉庫的請(qǐng)求;
查找所述請(qǐng)求請(qǐng)求操作的項(xiàng)目倉庫所在的服務(wù)器,并向查找到的服務(wù)器發(fā)送所述請(qǐng)求。
較佳地,所述代碼管理方法還包括:
在所述服務(wù)器接收到所述轉(zhuǎn)發(fā)器發(fā)送的請(qǐng)求時(shí),根據(jù)所述請(qǐng)求返回相應(yīng)的代碼數(shù)據(jù);
將返回的代碼數(shù)據(jù)發(fā)送至所述請(qǐng)求端。
較佳地,所述代碼管理方法還包括:
將每一項(xiàng)目倉庫所在的服務(wù)器記錄在數(shù)據(jù)庫中;
以及,從所述數(shù)據(jù)庫中查找所述請(qǐng)求請(qǐng)求操作的項(xiàng)目倉庫所在的服務(wù)器。
較佳地,所述代碼管理方法還包括:
接收由所述請(qǐng)求端發(fā)送的第一請(qǐng)求,所述第一請(qǐng)求用于請(qǐng)求創(chuàng)建第一項(xiàng)目倉庫,以及為所述第一項(xiàng)目倉庫分配用于存儲(chǔ)所述第一項(xiàng)目倉庫的服務(wù)器并進(jìn)行記錄;
和/或,接收由所述請(qǐng)求端發(fā)送的第二請(qǐng)求,所述第二請(qǐng)求用于請(qǐng)求使用第一協(xié)議訪問第二項(xiàng)目倉庫,由所述第二請(qǐng)求生成所述第二項(xiàng)目倉庫的地址信息并從所述地址信息中取出所述第二項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并向查找到的服務(wù)器發(fā)送所述第二請(qǐng)求。
較佳地,所述代碼管理方法還包括:
接收由所述請(qǐng)求端發(fā)送的第三請(qǐng)求,所述第三請(qǐng)求用于請(qǐng)求使用第二協(xié)議獲取第三項(xiàng)目倉庫的代碼數(shù)據(jù);
由所述第三請(qǐng)求生成命令并從所述命令中截取出所述第三項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并生成第四請(qǐng)求,所述第四請(qǐng)求指示出從所述查找到的服務(wù)器上獲取所述第三項(xiàng)目倉庫的代碼數(shù)據(jù)。
在符合本領(lǐng)域常識(shí)的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實(shí)例。
本發(fā)明的積極進(jìn)步效果在于:本發(fā)明請(qǐng)求端在訪問項(xiàng)目倉庫時(shí)并不直接訪問項(xiàng)目倉庫所在的服務(wù)器,而是直接訪問轉(zhuǎn)發(fā)器,將轉(zhuǎn)發(fā)器作為請(qǐng)求端與服務(wù)器之間的橋梁,由轉(zhuǎn)發(fā)器將請(qǐng)求端的請(qǐng)求發(fā)送至相應(yīng)的服務(wù)器,這樣具有以下優(yōu)點(diǎn):
一方面,請(qǐng)求端不需要知道請(qǐng)求的項(xiàng)目倉庫所在的服務(wù)器,只需要輸入請(qǐng)求的項(xiàng)目倉庫,節(jié)省了操作;
另一方面,在代碼數(shù)據(jù)過多時(shí),只需要增加新的服務(wù)器來存儲(chǔ)代碼并在轉(zhuǎn)發(fā)器中增加新的對(duì)應(yīng)關(guān)系,不會(huì)對(duì)請(qǐng)求端造成任何影響,請(qǐng)求端的請(qǐng)求依舊是發(fā)送到轉(zhuǎn)發(fā)器,十分有利于整個(gè)代碼管理系統(tǒng)的擴(kuò)展,并在容錯(cuò)方面有了很大的提升。
附圖說明
圖1為本發(fā)明一較佳實(shí)施例的代碼管理系統(tǒng)的系統(tǒng)示意圖。
圖2為本發(fā)明一較佳實(shí)施例的代碼管理系統(tǒng)的接收到第一請(qǐng)求時(shí)的系統(tǒng)工作示意圖。
圖3為本發(fā)明一較佳實(shí)施例的代碼管理系統(tǒng)的接收到第二請(qǐng)求時(shí)的系統(tǒng)工作示意圖。
圖4為本發(fā)明一較佳實(shí)施例的代碼管理系統(tǒng)的接收到第三請(qǐng)求時(shí)的系統(tǒng)工作示意圖。
圖5為本發(fā)明一較佳實(shí)施例的代碼管理方法的流程圖。
具體實(shí)施方式
下面通過實(shí)施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實(shí)施例范圍之中。
實(shí)施例
一種代碼管理系統(tǒng),如圖1所示,包括:
至少一服務(wù)器,每個(gè)服務(wù)器上分別存儲(chǔ)有至少一項(xiàng)目倉庫。其中,所述項(xiàng)目倉庫用于存儲(chǔ)代碼。圖1中示意性的繪出兩個(gè)服務(wù)器,分別為服務(wù)器1和服務(wù)器2,其中,服務(wù)器1上存儲(chǔ)有一個(gè)項(xiàng)目倉庫,為project1,服務(wù)器2上存儲(chǔ)有兩個(gè)項(xiàng)目倉庫,分別為project2和project3。
與所述服務(wù)器均連接的轉(zhuǎn)發(fā)器3,用于將每一項(xiàng)目倉庫所在的服務(wù)器記錄在數(shù)據(jù)庫4中,即記錄每一項(xiàng)目倉庫與服務(wù)器的對(duì)應(yīng)關(guān)系。
所述轉(zhuǎn)發(fā)器3,還用于接收由請(qǐng)求端5發(fā)送的請(qǐng)求操作項(xiàng)目倉庫的請(qǐng)求,以及從所述數(shù)據(jù)庫4中查找所述請(qǐng)求請(qǐng)求操作的項(xiàng)目倉庫所在的服務(wù)器,并向查找到的服務(wù)器發(fā)送所述請(qǐng)求。
所述服務(wù)器用于接收所述轉(zhuǎn)發(fā)器發(fā)送的請(qǐng)求,并根據(jù)所述請(qǐng)求返回相應(yīng)的代碼數(shù)據(jù)至所述轉(zhuǎn)發(fā)器。其中,所述服務(wù)器返回的代碼數(shù)據(jù)依所述請(qǐng)求而定,例如,所述請(qǐng)求請(qǐng)求讀取項(xiàng)目倉庫的某一代碼數(shù)據(jù),那么所述服務(wù)器返回的代碼數(shù)據(jù)就為項(xiàng)目倉庫的該代碼數(shù)據(jù)。
所述轉(zhuǎn)發(fā)器3還用于將返回的數(shù)據(jù)發(fā)送至所述請(qǐng)求端5。
以請(qǐng)求端5請(qǐng)求操作project1為例,請(qǐng)求端5發(fā)送請(qǐng)求至轉(zhuǎn)發(fā)器3,轉(zhuǎn)發(fā)器3從數(shù)據(jù)庫4中查找project1所在的服務(wù)器,查找結(jié)果為服務(wù)器1,轉(zhuǎn)發(fā)器3將請(qǐng)求發(fā)送至服務(wù)器1,服務(wù)器1接收請(qǐng)求,并根據(jù)所述請(qǐng)求返回相應(yīng)的代碼數(shù)據(jù)至轉(zhuǎn)發(fā)器3,轉(zhuǎn)發(fā)器3再將返回的代碼數(shù)據(jù)發(fā)送至請(qǐng)求端5。
具體地,所述轉(zhuǎn)發(fā)器包括第一轉(zhuǎn)發(fā)器和第二轉(zhuǎn)發(fā)器。以基于Gitlab(一個(gè)用于倉庫管理系統(tǒng)的開源項(xiàng)目)實(shí)現(xiàn)本實(shí)施例的代碼管理系統(tǒng)為例,所述第一轉(zhuǎn)發(fā)器為http(超文本傳輸協(xié)議)轉(zhuǎn)發(fā)器,即基于http協(xié)議的轉(zhuǎn)發(fā)器,所述第二轉(zhuǎn)發(fā)器為ssh(安全外殼協(xié)議)轉(zhuǎn)發(fā)器,即基于ssh協(xié)議的轉(zhuǎn)發(fā)器。
如圖2所示,所述第一轉(zhuǎn)發(fā)器31用于接收由所述請(qǐng)求端5發(fā)送的第一請(qǐng)求,所述第一請(qǐng)求用于請(qǐng)求創(chuàng)建第一項(xiàng)目倉庫,所述第一轉(zhuǎn)發(fā)器31還用于為所述第一項(xiàng)目倉庫分配用于存儲(chǔ)所述第一項(xiàng)目倉庫的服務(wù)器并進(jìn)行記錄,在數(shù)據(jù)庫4中記錄第一項(xiàng)目倉庫所在的服務(wù)器。
以請(qǐng)求端5請(qǐng)求創(chuàng)建project4為例,project4即為上述的第一項(xiàng)目倉庫,請(qǐng)求端5發(fā)送第一請(qǐng)求至第一轉(zhuǎn)發(fā)器31,第一轉(zhuǎn)發(fā)器31為project4隨機(jī)分配一個(gè)服務(wù)器,如服務(wù)器2,用于存儲(chǔ)創(chuàng)建的project4,然后記錄在數(shù)據(jù)庫4中,服務(wù)器2返回創(chuàng)建結(jié)果(如創(chuàng)建成功或失敗)至第一轉(zhuǎn)發(fā)器31,第一轉(zhuǎn)發(fā)器31再發(fā)送給請(qǐng)求端5。
如圖3所示,所述第一轉(zhuǎn)發(fā)器31還用于接收由所述請(qǐng)求端5發(fā)送的第二請(qǐng)求,所述第二請(qǐng)求用于請(qǐng)求使用http協(xié)議訪問第二項(xiàng)目倉庫,所述第一轉(zhuǎn)發(fā)器31還用于由所述第二請(qǐng)求生成所述第二項(xiàng)目倉庫的地址信息并從所述地址信息中取出所述第二項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并向查找到的服務(wù)器發(fā)送所述第二請(qǐng)求。
以請(qǐng)求端5請(qǐng)求使用http協(xié)議訪問并clone(生成被選元素的副本)project1至本地為例,project1即為上述的第二項(xiàng)目倉庫,請(qǐng)求端5發(fā)送第二請(qǐng)求至第一轉(zhuǎn)發(fā)器31,所述第二請(qǐng)求為git命令:git clone https://ex.com/ex/project1.git,第一轉(zhuǎn)發(fā)器31接收到該git命令后,生成project1的地址信息并訪問下述url:
https://ex.com/ex/project1.git/info/refs?service=git-upload-pack,從中取出項(xiàng)目名project1,然后從數(shù)據(jù)庫4中查找project1對(duì)應(yīng)的服務(wù)器,查找結(jié)果為服務(wù)器1,再將第二請(qǐng)求發(fā)送至服務(wù)器1,服務(wù)器1接收第二請(qǐng)求,并根據(jù)所述第二請(qǐng)求返回相應(yīng)的代碼數(shù)據(jù)至第一轉(zhuǎn)發(fā)器31,第一轉(zhuǎn)發(fā)器31再將返回的代碼數(shù)據(jù)發(fā)送至請(qǐng)求端5。
如圖4所示,所述第二轉(zhuǎn)發(fā)器32用于接收由所述請(qǐng)求端5發(fā)送的第三請(qǐng)求,所述第三請(qǐng)求用于請(qǐng)求使用ssh協(xié)議獲取第三項(xiàng)目倉庫的代碼數(shù)據(jù)。所述第二轉(zhuǎn)發(fā)器32還用于由所述第三請(qǐng)求生成命令并從所述命令中截取出所述第三項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并生成第四請(qǐng)求,所述第四請(qǐng)求指示出從所述查找到的服務(wù)器上獲取所述第三項(xiàng)目倉庫的代碼數(shù)據(jù)。
以請(qǐng)求端5請(qǐng)求使用ssh協(xié)議clone(生成被選元素的副本)project1至本地為例,project1即為上述的第三項(xiàng)目倉庫,請(qǐng)求端5發(fā)送第三請(qǐng)求至第二轉(zhuǎn)發(fā)器32,所述第二請(qǐng)求為git命令:git clone git@ex.com:/ex/project1.git,第二轉(zhuǎn)發(fā)器32接收到該git命令后,生成命令:ssh git@ex.com-x upload-pack ex/project1.git,這條命令的意思是在git@ex.com這臺(tái)服務(wù)器上執(zhí)行upload-pack ex/project1.git這條指令。然后,第二轉(zhuǎn)發(fā)器32從這條指令中取出項(xiàng)目名,即project1,然后在數(shù)據(jù)庫4中取出project1對(duì)應(yīng)的服務(wù)器1。此時(shí)再由第二轉(zhuǎn)發(fā)器32向服務(wù)器1發(fā)送ssh請(qǐng)求(第四請(qǐng)求):ssh git@server2.com-x upload-pack ex/project1.git,然后由第二轉(zhuǎn)發(fā)器32將從服務(wù)器1接收到的數(shù)據(jù)回復(fù)給請(qǐng)求端5,將從請(qǐng)求端5接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給服務(wù)器1。
本實(shí)施例的代碼管理方法,如圖5所示,包括以下步驟:
步驟001、將項(xiàng)目倉庫存儲(chǔ)于服務(wù)器上;
步驟002、將每一項(xiàng)目倉庫所在的服務(wù)器記錄在數(shù)據(jù)庫中;
步驟003、接收由請(qǐng)求端發(fā)送的請(qǐng)求操作項(xiàng)目倉庫的請(qǐng)求;
步驟004、從所述數(shù)據(jù)庫中查找所述請(qǐng)求請(qǐng)求操作的項(xiàng)目倉庫所在的服務(wù)器,并向查找到的服務(wù)器發(fā)送所述請(qǐng)求;
步驟005、在所述服務(wù)器接收到所述轉(zhuǎn)發(fā)器發(fā)送的請(qǐng)求時(shí),根據(jù)所述請(qǐng)求返回相應(yīng)的代碼數(shù)據(jù);
步驟006、將返回的代碼數(shù)據(jù)發(fā)送至所述請(qǐng)求端。
其中,由請(qǐng)求端發(fā)送的請(qǐng)求包括第一請(qǐng)求、第二請(qǐng)求和第三請(qǐng)求;
所述第一請(qǐng)求用于請(qǐng)求創(chuàng)建第一項(xiàng)目倉庫;
所述第二請(qǐng)求用于請(qǐng)求使用第一協(xié)議訪問第二項(xiàng)目倉庫;
所述第三請(qǐng)求用于請(qǐng)求使用第二協(xié)議獲取第三項(xiàng)目倉庫的代碼數(shù)據(jù)。
步驟004具體包括:
在接收到所述第一請(qǐng)求時(shí),為所述第一項(xiàng)目倉庫分配用于存儲(chǔ)所述第一項(xiàng)目倉庫的服務(wù)器并進(jìn)行記錄;
在接收到所述第二請(qǐng)求時(shí),由所述第二請(qǐng)求生成所述第二項(xiàng)目倉庫的地址信息并從所述地址信息中取出所述第二項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并向查找到的服務(wù)器發(fā)送所述第二請(qǐng)求;
在接收到所述第三請(qǐng)求時(shí),由所述第三請(qǐng)求生成命令并從所述命令中截取出所述第三項(xiàng)目倉庫的項(xiàng)目名,以及根據(jù)所述項(xiàng)目名查找對(duì)應(yīng)的服務(wù)器并生成第四請(qǐng)求,所述第四請(qǐng)求指示出從所述查找到的服務(wù)器上獲取所述第三項(xiàng)目倉庫的代碼數(shù)據(jù)。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對(duì)這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。