專利名稱:軟件分發(fā)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù),尤其涉及一種軟件分發(fā)方法和裝置。
背景技術(shù):
軟件即服務(wù)(Software-as-a-Service,簡稱SaaS)是一種通過Internet提供軟件的軟件服務(wù)化運營模式。SaaS模式下,服務(wù)提供商全權(quán)管理和維護軟件,用戶租用服務(wù)提供商提供的軟件,無需對軟件進行維護。按照傳統(tǒng)的方式,軟件包需要完整地部署(復(fù)制、安裝)到執(zhí)行環(huán)境中才能開始執(zhí)行,如果用戶請求一個當前并未部署的軟件,就必須在整個部署階段內(nèi)等待。因此,傳統(tǒng)的部署策略與SaaS模式的按需使用特性顯然是沖突的。一個解決方案是在每個環(huán)境內(nèi)預(yù)先部署所有軟件,但這對運營商而言顯然是極不靈活的,會造成巨大的資源浪費。另一個解決方案通過分析用戶需求預(yù)先部署所需種類、所需數(shù)量的軟件,可以減輕資源浪費,但依然不夠靈活。因而,種類繁多的軟件在執(zhí)行環(huán)境中以何種策略部署對軟件運營的效率有著極大的影響。軟件流式加載是解決部署難題的一個得力手段。在流式加載場景中,執(zhí)行環(huán)境中并不預(yù)先部署目標軟件,而是根據(jù)程序需求以塊為單位下載軟件數(shù)據(jù)。研究表明由于程序運行的局部性,軟件在啟動、運行中通常不會用到全部的數(shù)據(jù)。由此,在運行時按需讀取軟件數(shù)據(jù)比預(yù)先部署再運行可以獲得較快的啟動速度。流式加載機制對于數(shù)據(jù)讀取的速度要求較高,每當需要使用尚未下載的數(shù)據(jù),就需要暫停運行,直到從服務(wù)器將數(shù)據(jù)下載完畢。 另外,軟件流式加載以塊為單位進行讀寫,加大了執(zhí)行節(jié)點對軟件倉庫的訪問頻率,對軟件分發(fā)機制的性能提出了更高的要求。然而,目前的軟件分發(fā)方法采用C/S模式,每個客戶端都要從軟件服務(wù)器上下載軟件,數(shù)據(jù)下載較慢,導(dǎo)致下載延遲較長,無法滿足軟件流式加載的低延遲的需求。
發(fā)明內(nèi)容
本發(fā)明提供一種軟件分發(fā)方法和裝置,用于解決待加載軟件的節(jié)點數(shù)量較多時現(xiàn)有軟件加載方法延遲較長的缺陷。本發(fā)明提供的一種軟件分發(fā)方法,包括實例下載目標軟件的目標數(shù)據(jù)塊之前,若所述實例保存有所述目標軟件的分組表,所述實例在所述分組表中查找到與待下載的目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例后,向所述目標超級實例發(fā)送實例索引表獲取請求,用于請求所述目標超級實例提供所述目標數(shù)據(jù)塊的實例索引表;所述目標軟件的數(shù)據(jù)塊組成多個塊組,一個塊組至少包括一個數(shù)據(jù)塊,所述分組表包括塊組與超級實例的一一對應(yīng)關(guān)系;若所述目標超級實例確定所述目標數(shù)據(jù)塊有對應(yīng)的實例索引表,所述實例接收所述目標超級實例發(fā)送的實例索引表;所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息;所述實例從所述實例索引表中的一個實例處獲取所述目標數(shù)據(jù)塊。
本發(fā)明提供的另ー種軟件分發(fā)方法,包括軟件倉庫服務(wù)器接收實例發(fā)送的下載請求,用于請求下載目標軟件的目標數(shù)據(jù)塊;更新所述目標軟件的實例訪問表,確定所述目標軟件的實例訪問量已達到組網(wǎng)閾值且所述目標軟件的超級實例的個數(shù)已達到所述目標軟件的塊組的個數(shù)時,向所述實例發(fā)送所述目標軟件的分組表,使所述實例根據(jù)所述分組表,從所述目標數(shù)據(jù)塊所在的塊組對應(yīng)的超級實例獲取所述目標數(shù)據(jù)塊的實例索引表,并從所述實例索引表中一個實例獲取所述目標數(shù)據(jù)塊;所述目標軟件的數(shù)據(jù)塊劃分為多個塊組,所述分組表包括塊組與超級實例的一一對應(yīng)關(guān)系;所述目標軟件的實例訪問量為請求下載所述目標軟件的實例的個數(shù);所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息。本發(fā)明提供的ー種軟件下載裝置,包括分組表判斷模塊,用于下載目標軟件的目標數(shù)據(jù)塊之前,判斷實例是否保存有所述目標軟件的分組表;索引表獲取請求模塊,用于若所述實例保存有所述目標軟件的分組表,所述實例在所述分組表中查找到與待下載的目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例后,向所述目標超級實例發(fā)送實例索引表獲取請求,用于請求所述目標超級實例提供所述目標數(shù)據(jù)塊的實例索引表;所述目標軟件的數(shù)據(jù)塊組成多個塊組,一個塊組至少包括ー個數(shù)據(jù)塊,所述分組表包括塊組與超級實例的對應(yīng)關(guān)系;第一下載模塊,用于若所述目標超級實例確定所述目標數(shù)據(jù)塊有對應(yīng)的實例索引表,所述實例接收所述目標超級實例發(fā)送的實例索引表,從所述實例索引表中的一個實例處獲取所述目標數(shù)據(jù)塊;所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息。本發(fā)明提供的ー種軟件倉庫服務(wù)器,包括下載請求接收模塊,用于接收實例發(fā)送的下載請求,用于請求下載目標軟件的目標數(shù)據(jù)塊;分組表下發(fā)模塊,用于更新所述目標軟件的實例訪問表,確定所述目標軟件的實例訪問量已達到組網(wǎng)閾值且所述目標軟件的超級實例的個數(shù)已達到所述目標軟件的塊組的個數(shù)吋,向所述實例發(fā)送所述目標軟件的分組表,使所述實例根據(jù)所述分組表,從所述目標數(shù)據(jù)塊所在的塊組對應(yīng)的超級實例獲取所述目標數(shù)據(jù)塊的實例索引表,并從所述實例索引表中一個實例獲取所述目標數(shù)據(jù)塊;所述目標軟件的數(shù)據(jù)塊劃分為多個塊組,所述分組
表包括塊組與超級實例的--對應(yīng)關(guān)系;所述目標軟件的實例訪問量為請求下載所述目標
軟件的實例的個數(shù);所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息。本發(fā)明實施例提供的軟件分發(fā)方法和裝置,軟件服務(wù)系統(tǒng)中一個實例在下載目標軟件的目標數(shù)據(jù)塊時,本地保存有目標軟件的分組表時,根據(jù)分組表從目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例處,獲取目標數(shù)據(jù)塊的實例索引表,從目標數(shù)據(jù)塊的實例索引表中選擇ー個實例下載目標數(shù)據(jù)塊。由于請求下載目標數(shù)據(jù)塊的實例,可根據(jù)本地保存的分組表快速定位到目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例,并可根據(jù)目標超級實例返回的目標數(shù)據(jù)塊的實例索引表中快速定位到已下載目標數(shù)據(jù)塊的實例,因此資源定位延時較短。另外,實例從目標數(shù)據(jù)塊的實例索引表中選擇ー個實例下載目標數(shù)據(jù)塊,而不是從軟件倉庫服務(wù)器中下載目標數(shù)據(jù)塊,因此下載速度較快。綜上所述,本發(fā)明實施例提供的軟件分發(fā)方法資源定位時延較低,下載速度較快,降低了下載時延。進ー步,如果ー個ST管轄的所有VP處于同一局域網(wǎng)中,本發(fā)明實施例提供的軟件分發(fā)方法的資源定位時延會得到更大程度的降低,下載速度會得到更大的提高。
圖I為本發(fā)明提供的軟件分發(fā)方法實施例一流程圖;圖2為本發(fā)明提供的軟件分發(fā)方法實施例二流程圖;圖3A為本發(fā)明提供的軟件分發(fā)方法實施例三流程圖;圖3B為本發(fā)明提供的軟件服務(wù)系統(tǒng)架構(gòu)圖;圖4為本發(fā)明提供的軟件分發(fā)方法實施例四流程圖;圖5為本發(fā)明提供的軟件下載裝置實例結(jié)構(gòu)示意圖;圖6為本發(fā)明提供的軟件倉庫服務(wù)器實施例結(jié)構(gòu)示意圖。
具體實施例方式本發(fā)明提供的軟件分發(fā)方法和裝置適用于軟件流式加載場景。尤其適應(yīng)于所有下載節(jié)點處于同一個局域網(wǎng)的軟件流式加載場景。圖I為本發(fā)明提供的軟件分發(fā)方法實施例一流程圖。如圖I所示,本實施例提供的軟件分發(fā)方法包括步驟11 :實例下載目標軟件的目標數(shù)據(jù)塊之前,若實例保存有目標軟件的分組表,實例在分組表中查找到與待下載的目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例后,向目標超級實例發(fā)送實例索引表獲取請求,用于請求目標超級實例提供目標數(shù)據(jù)塊的實例索引表。目標軟件的數(shù)據(jù)塊組成多個塊組,ー個塊組至少包括ー個數(shù)據(jù)塊,分組表包括塊組與超級實例的對應(yīng)關(guān)系。軟件倉庫服務(wù)器(Software Store Server,簡稱ST)用于存儲各種不同的軟件, 其中,每個軟件被劃分成若干個數(shù)據(jù)塊,每個軟件的數(shù)據(jù)塊組成多個塊組,每個塊組可包括ー個以上的數(shù)據(jù)塊。一個軟件服務(wù)系統(tǒng)中可包括ー個以上的ST,每個ST為管轄的實例 (vProcess,簡稱VP)提供軟件服務(wù)。實例可以是ー個虛擬化軟件執(zhí)行實例。實例在加入系統(tǒng)時,向主服務(wù)器(Master Server,簡稱MS)發(fā)送登錄消息。MS接收到VP的登錄消息后, 按照負載均衡原則從多個ST中選擇ー個ST為該VP提供服務(wù),并將該ST的地址返回給該 VP。接收到ST地址的VP,可通過該ST的地址與該ST進行通信。本發(fā)明實施例提供的軟件分發(fā)方法,VP根據(jù)需求以數(shù)據(jù)塊為單位下載目標軟件,適應(yīng)于軟件流式加載場景。本發(fā)明中,一個軟件的實例訪問量達到組網(wǎng)閾值tl吋,ST為該軟件的每個塊組分配ー個超級實例,塊組與超級實例的一一對應(yīng)關(guān)系存儲在分組表中。每個超級實例存儲有所管理的數(shù)據(jù)塊的實例索引表。ー個超級實例的實例索引表中包括已下載該超級VP管理的數(shù)據(jù)塊的所有VP的索引信息。每個超級實例為所屬ST管轄的所有VP提供與該超級實例對應(yīng)的塊組中所有數(shù)據(jù)塊的實例索引表。表I為ー個軟件的分組表.如表I所示,軟件被劃分成10個數(shù)據(jù)塊:K1、K2、K3、K4、K5、K6、K7、K8、K9和K10,10個數(shù)據(jù)塊組成5個塊組ZU Z2、Z3、Z4和Z5,每個塊組對應(yīng)ー個超級實例,其中,(Kl,K2)所在的塊組Zl對應(yīng)的超級實例為vPA。以表2所示的超級實例vPA保存的實例索引表為例,超級實例vPA管理的數(shù)據(jù)塊為Kl和K2,通過表2可知目前已下載Kl的實例為vPxl和vPx2。超級實例可以為ー 個數(shù)據(jù)塊單獨建立一個實例索引表,也可為管理的所有數(shù)據(jù)塊建立一個實例索引表。表I為ー個軟件的分組表
權(quán)利要求
1.一種軟件分發(fā)方法,其特征在于,包括實例下載目標軟件的目標數(shù)據(jù)塊之前,若所述實例保存有所述目標軟件的分組表,所述實例在所述分組表中查找到與待下載的目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例后,向所述目標超級實例發(fā)送實例索引表獲取請求,用于請求所述目標超級實例提供所述目標數(shù)據(jù)塊的實例索引表;所述目標軟件的數(shù)據(jù)塊組成多個塊組,一個塊組至少包括一個數(shù)據(jù)塊, 所述分組表包括塊組與超級實例的對應(yīng)關(guān)系;若所述目標超級實例確定所述目標數(shù)據(jù)塊有對應(yīng)的實例索引表,所述實例接收所述目標超級實例發(fā)送的實例索引表;所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息;所述實例從所述實例索引表中的一個實例處獲取所述目標數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求I所述方法,其特征在于在所述實例從所述實例索引表中的一個實例處獲取所述目標數(shù)據(jù)塊之后,還包括所述實例向所述目標超級實例發(fā)送加載指示,指示所述目標超級實例將所述實例的信息加載在所述目標數(shù)據(jù)塊對應(yīng)的實例索引表中;或,在向所述目標超級實例發(fā)送實例索引表獲取請求之后,還包括若所述目標超級實例確定所述目標數(shù)據(jù)塊沒有對應(yīng)的實例索引表,所述實例接收所述目標超級實例發(fā)送的請求失敗消息;所述實例從所述軟件倉庫服務(wù)器獲取所述目標數(shù)據(jù)塊后,向所述目標超級實例發(fā)送加載指示,指示所述目標超級實例建立所述目標數(shù)據(jù)塊對應(yīng)的實例索引表,并將所述實例的索引信息加載在所述實例索引表中。
3.根據(jù)權(quán)利要求I或2所述方法,其特征在于,所述方法還包括若所述實例沒有保存所述目標軟件的分組表,所述實例向軟件倉庫服務(wù)器發(fā)送下載請求,用于請求下載所述目標數(shù)據(jù)塊;在所述軟件倉庫服務(wù)器確定所述目標軟件的實例訪問量已達到組網(wǎng)閾值且所述目標軟件的超級實例數(shù)已達到所述目標軟件的塊組個數(shù)時,接收所述軟件倉庫服務(wù)器發(fā)送的所述目標軟件的分組表;所述目標軟件的訪問量為請求下載所述目標軟件的實例的個數(shù); 根據(jù)所述分組表確定所述目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例,并向所述目標超級實例發(fā)送實例索引表獲取請求,獲取所述目標數(shù)據(jù)塊的實例索引表;從所述實例索引表中的一個實例處獲取所述目標數(shù)據(jù)塊后,所述實例向所述目標超級實例發(fā)送加載指示,指示所述目標超級實例將所述實例的信息加載在所述目標數(shù)據(jù)塊對應(yīng)的實例索引表中。
4.根據(jù)權(quán)利要求3所述方法,其特征在于,在所述實例向軟件倉庫服務(wù)器發(fā)送下載請求之后,還包括在所述軟件倉庫服務(wù)器確定所述目標軟件的訪問量已達到組網(wǎng)閾值且所述目標軟件的超級實例數(shù)未達到所述目標軟件的塊組個數(shù)時,在所述軟件倉庫服務(wù)器將所述實例記錄在所述目標軟件的組網(wǎng)表后,所述實例接收所述軟件倉庫服務(wù)器發(fā)送的所述目標數(shù)據(jù)塊; 或,在所述軟件倉庫服務(wù)器確定所述軟件的訪問量未達到組網(wǎng)閾值時,所述軟件倉庫服務(wù)器更新所述目標軟件的訪問量后,所述實例接收所述軟件倉庫服務(wù)器發(fā)送的所述目標數(shù)據(jù)塊。
5.一種軟件分發(fā)方法,其特征在于,包括軟件倉庫服務(wù)器接收實例發(fā)送的下載請求,用于請求下載目標軟件的目標數(shù)據(jù)塊;更新所述目標軟件的實例訪問表,確定所述目標軟件的實例訪問量已達到組網(wǎng)閾值且所述目標軟件的超級實例的個數(shù)已達到所述目標軟件的塊組的個數(shù)時,向所述實例發(fā)送所述目標軟件的分組表,使所述實例根據(jù)所述分組表,從所述目標數(shù)據(jù)塊所在的塊組對應(yīng)的超級實例獲取所述目標數(shù)據(jù)塊的實例索引表,并從所述實例索引表中一個實例獲取所述目標數(shù)據(jù)塊;所述目標軟件的數(shù)據(jù)塊劃分為多個塊組,所述分組表包括塊組與超級實例的一一對應(yīng)關(guān)系;所述目標軟件的實例訪問量為請求下載所述目標軟件的實例的個數(shù);所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息。
6.根據(jù)權(quán)利要求5所述方法,其特征在于,在所述接收實例發(fā)送的下載請求之后,還包括確定所述目標軟件的實例訪問量已達到組網(wǎng)閾值且所述目標軟件的超級實例的個數(shù)未達到所述目標軟件的塊組的個數(shù)時,在組網(wǎng)表中記錄所述實例,并向所述實例發(fā)送所述目標數(shù)據(jù)塊;所述組網(wǎng)表用于記錄所述目標軟件的超級實例;所述目標軟件的實例訪問量為請求下載所述目標軟件的實例的個數(shù);或,確定所述目標軟件的實例訪問量未達到組網(wǎng)閾值時,更新所述目標軟件的實例訪問量后,向所述實例發(fā)送所述目標數(shù)據(jù)塊,并增加所述目標軟件的實例訪問量;或,在所述目標軟件的塊組重構(gòu)后,指示各所述目標超級實例上報所述目標軟件的各數(shù)據(jù)塊的實例索引表;向各新目標超級實例發(fā)送所述軟件更新后的分組表和所述目標軟件的各數(shù)據(jù)塊的實例索引表。
7.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,在所述軟件倉庫服務(wù)器接收實例發(fā)送的下載請求之后,還包括根據(jù)所述目標軟件的各超級實例匯報的所述目標軟件的各數(shù)據(jù)塊的訪問頻率,確定需要對所述目標軟件的數(shù)據(jù)塊進行重新劃分塊組后,向所述目標軟件的超級實例發(fā)送實例索引表匯報指示,指示各超級實例上報各自保存的所述目標軟件的實例索引表;對所述目標軟件的數(shù)據(jù)塊進行重新劃分塊組并確定重構(gòu)后每個塊組對應(yīng)的超級實例, 形成重構(gòu)后的分組表;向所述目標軟件的實例訪問表中的所有實例發(fā)送重構(gòu)后的分組表;根據(jù)原超級實例上報的實例索引表,向重構(gòu)后的新超級實例發(fā)送所述新超級實例管理的數(shù)據(jù)塊所對應(yīng)的實例索引表。
8.一種軟件下載裝置,其特征在于,包括分組表判斷模塊,用于下載目標軟件的目標數(shù)據(jù)塊之前,判斷實例是否保存有所述目標軟件的分組表;索引表獲取請求模塊,用于若所述實例保存有所述目標軟件的分組表,所述實例在所述分組表中查找到與待下載的目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例后,向所述目標超級實例發(fā)送實例索引表獲取請求,用于請求所述目標超級實例提供所述目標數(shù)據(jù)塊的實例索引表;所述目標軟件的數(shù)據(jù)塊組成多個塊組,一個塊組至少包括一個數(shù)據(jù)塊,所述分組表包括塊組與超級實例的對應(yīng)關(guān)系;第一下載模塊,用于若所述目標超級實例確定所述目標數(shù)據(jù)塊有對應(yīng)的實例索引表, 所述實例接收所述目標超級實例發(fā)送的實例索引表,從所述實例索引表中的一個實例處獲取所述目標數(shù)據(jù)塊;所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息。
9.根據(jù)權(quán)利要求8所述軟件下載裝置,其特征在于,還包括第二下載模塊。用于若所述目標超級實例確定所述目標數(shù)據(jù)塊沒有對應(yīng)的實例索引表,接收所述目標超級實例發(fā)送的請求失敗消息;從所述軟件倉庫服務(wù)器獲取所述目標數(shù)據(jù)塊后,向所述目標超級實例發(fā)送加載指示,指示所述目標超級實例建立所述目標數(shù)據(jù)塊對應(yīng)的實例索引表,并將所述實例的索引信息加載在所述實例索引表中。
10.一種軟件倉庫服務(wù)器,其特征在于,包括下載請求接收模塊,用于接收實例發(fā)送的下載請求,用于請求下載目標軟件的目標數(shù)據(jù)塊;分組表下發(fā)模塊,用于更新所述目標軟件的實例訪問表,確定所述目標軟件的實例訪問量已達到組網(wǎng)閾值且所述目標軟件的超級實例的個數(shù)已達到所述目標軟件的塊組的個數(shù)時,向所述實例發(fā)送所述目標軟件的分組表,使所述實例根據(jù)所述分組表,從所述目標數(shù)據(jù)塊所在的塊組對應(yīng)的超級實例獲取所述目標數(shù)據(jù)塊的實例索引表,并從所述實例索引表中一個實例獲取所述目標數(shù)據(jù)塊;所述目標軟件的數(shù)據(jù)塊劃分為多個塊組,所述分組表包括塊組與超級實例的--對應(yīng)關(guān)系;所述目標軟件的實例訪問量為請求下載所述目標軟件的實例的個數(shù);所述實例索引表中包括已下載所述超級實例管理的數(shù)據(jù)塊的所有實例的索引信息。
全文摘要
本發(fā)明提供一種軟件分發(fā)方法和裝置,該包括實例下載目標軟件的目標數(shù)據(jù)塊之前,若實例保存有目標軟件的分組表,實例在分組表中查找到與待下載的目標數(shù)據(jù)塊所在塊組對應(yīng)的目標超級實例后,向目標超級實例發(fā)送實例索引表獲取請求,用于請求目標超級實例提供目標數(shù)據(jù)塊的實例索引表;目若目標超級實例確定目標數(shù)據(jù)塊有對應(yīng)的實例索引表,實例接收目標超級實例發(fā)送的實例索引表;實例索引表中包括已下載目標數(shù)據(jù)塊的所有實例的索引信息;實例從實例索引表中的一個實例處獲取目標數(shù)據(jù)塊。本發(fā)明提供的軟件分發(fā)方法資源定位時延較低,下載速度較快,降低了下載時延。
文檔編號H04L29/06GK102609278SQ201110402128
公開日2012年7月25日 申請日期2011年12月6日 優(yōu)先權(quán)日2011年12月6日
發(fā)明者懷進鵬, 曾偉紀, 沃天宇, 胡春明, 鐘亮 申請人:北京航空航天大學(xué)