專(zhuān)利名稱(chēng):軟件在線升級(jí)及加速下載的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件在線升級(jí)技術(shù),尤其涉及一種軟件在線升級(jí)及加速下載的方法和裝置。
背景技術(shù):
軟件升級(jí)主要是指通信設(shè)備在有新版本的軟件可利用時(shí),從軟件任意老版本升級(jí)到新版本的過(guò)程,從而達(dá)到實(shí)現(xiàn)軟件新功能或修正軟件缺陷的目的?,F(xiàn)有實(shí)現(xiàn)中,軟件在線升級(jí)方案主要是基于服務(wù)器式的自動(dòng)升級(jí),具體有以下幾種方法(I)基于增量更新包的升級(jí)方法。對(duì)每個(gè)軟件版本提供增量升級(jí)包,該方法缺點(diǎn)是每次升級(jí)都需制作升級(jí)包,效率低下;(2)基于文件版本號(hào)的升級(jí)方法。該方法在升級(jí)過(guò)程中根據(jù)文件版本號(hào)來(lái)決定是否升級(jí)為新文件,其缺點(diǎn)是在服務(wù)器上需要手工維護(hù)文件版本列表;(3)基于文件修訂日期的升級(jí)方法。該方法在升級(jí)過(guò)程中根據(jù)修訂日期來(lái)決定是否升級(jí)為新文件,其缺點(diǎn)基于文件修訂日期判定是否為新版本并不十分準(zhǔn)確;(4)基于文件MD5信息摘要的升級(jí)方法。該方法是根據(jù)文件的MD5信息摘要來(lái)判定是否存在新版本,缺點(diǎn)是需要在服務(wù)器上維護(hù)一個(gè)文件MD5列表,且每次服務(wù)器上文件發(fā)生變動(dòng)后,需要重新維護(hù)MD5列表,效率低下。在進(jìn)一步的實(shí)現(xiàn)中,現(xiàn)有技術(shù)存在代碼版本控制的方法。代碼版本控制能防止軟件開(kāi)發(fā)過(guò)程中意外的文件丟失、允許回滾到早期版本、并能對(duì)版本進(jìn)行分支、合并和管理。在版本控制的基本框架中,版本倉(cāng)庫(kù)是數(shù)據(jù)集中的中央倉(cāng)庫(kù),以典型的文件目錄樹(shù)方式來(lái)保存版本信息。每個(gè)用戶(hù)可以連接到版本倉(cāng)庫(kù),將版本倉(cāng)庫(kù)中指定版本文件目錄樹(shù)結(jié)構(gòu)檢出到本地,稱(chēng)作工作拷貝,對(duì)工作拷貝內(nèi)的文件目錄樹(shù)進(jìn)行修改,然后將本地工作拷貝檢入到版本倉(cāng)庫(kù),從而完成對(duì)版本倉(cāng)庫(kù)的修改。綜上,目前現(xiàn)有軟件在線升級(jí)技術(shù)至少存在如下問(wèn)題(I)如何實(shí)現(xiàn)軟件版本管理的自動(dòng)化,減少軟件升級(jí)的人為干預(yù),使處于任意版本的軟件自動(dòng)升級(jí)為最新版本;(2)當(dāng)發(fā)現(xiàn)新版本存在嚴(yán)重缺陷或?qū)е萝浖糠止δ懿徽r(shí),如何簡(jiǎn)單有效地回退到升級(jí)前版本或指定老版本,從而保證軟件的穩(wěn)定性、可靠性和兼容性;(3)當(dāng)軟件客戶(hù)端升級(jí)并發(fā)量增加、升級(jí)文件數(shù)量和大小增大、服務(wù)壓力負(fù)載嚴(yán)重情況下,如何保證客戶(hù)端升級(jí)文件下載速度和成功率。
發(fā)明內(nèi)容
本發(fā)明的目的就是為解決上述問(wèn)題,提供一種軟件在線升級(jí)及加速下載的方法和裝置,軟件在線升級(jí)方法和裝置解決現(xiàn)有技術(shù)中軟件在線升級(jí)文件的版本自動(dòng)化管理問(wèn)題,減少軟件版本庫(kù)的人為干預(yù),保證軟件可以由任意老版本升級(jí)到最新版本,同時(shí)提供軟件回退的方法,當(dāng)軟件升級(jí)出現(xiàn)故障,保證軟件升級(jí)后可以回退到之前任意老版本;文件下 載加速方法和裝置提供一種軟件升級(jí)數(shù)據(jù)包下載加速方法和裝置,用以保證軟件升級(jí)過(guò)程中升級(jí)速度和成功率。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案一種軟件在線升級(jí)及加速下載裝置,它包括客戶(hù)端在線升級(jí)進(jìn)程裝置,負(fù)責(zé)管理本地軟件工作拷貝,并與升級(jí)服務(wù)器代理裝置進(jìn)行通訊及更新本地工作拷貝,本地工作拷貝的當(dāng)前版本完整文件目錄樹(shù)作為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的種子對(duì)等節(jié)點(diǎn);客戶(hù)端共享守護(hù)進(jìn)程裝置,該進(jìn)程負(fù)責(zé)將客戶(hù)端作為對(duì)等節(jié)點(diǎn)加入到點(diǎn)到點(diǎn)網(wǎng)路,共享本地工作拷貝中最新版本的文件目錄樹(shù);跟蹤服務(wù)器裝置,用于接收客戶(hù)端共享守護(hù)進(jìn)程的請(qǐng)求,存儲(chǔ)并實(shí)時(shí)維護(hù)各個(gè)點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端ロ ;
升級(jí)服務(wù)器代理裝置,按照負(fù)載均衡策略將每個(gè)到達(dá)升級(jí)服務(wù)器代理的請(qǐng)求按時(shí)間順序分發(fā)給后端的升級(jí)服務(wù)器池中的一臺(tái)服務(wù)器,同時(shí)采用加權(quán)輪詢(xún)調(diào)度算法提供服務(wù),保證請(qǐng)求分配的公平性和合理性;多個(gè)升級(jí)服務(wù)器裝置,每個(gè)升級(jí)服務(wù)器裝置均用于存儲(chǔ)和管理版本倉(cāng)庫(kù)中所有版本軟件的文件目錄樹(shù),同時(shí)向客戶(hù)端提供獲取指定版本文件SHAl哈希值列表的服務(wù),服務(wù)器內(nèi)版本倉(cāng)庫(kù)中各個(gè)版本的完整文件目錄樹(shù)都作為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的種子對(duì)等節(jié)點(diǎn);各升級(jí)服務(wù)器裝置存儲(chǔ)內(nèi)容完全相同,并形成一個(gè)環(huán)隊(duì)列的升級(jí)服務(wù)器池,各個(gè)升級(jí)服務(wù)器裝置上的版本倉(cāng)庫(kù)執(zhí)行版本控制的“同歩”原語(yǔ)操作實(shí)現(xiàn)實(shí)時(shí)同歩。所述客戶(hù)端共享守護(hù)進(jìn)程裝置獲取點(diǎn)到點(diǎn)網(wǎng)絡(luò)中對(duì)等客戶(hù)端除了采用跟蹤服務(wù)器外,還支持在跟蹤服務(wù)器裝置負(fù)載較重或出現(xiàn)故障時(shí),從DHT網(wǎng)絡(luò)中獲取該信息。所述跟蹤服務(wù)器裝置支持的通訊協(xié)議包括HTTP/HTTPS協(xié)議和UDP協(xié)議。所述升級(jí)服務(wù)器代理裝置支持的通信協(xié)議包括HTTP WebDAV協(xié)議和SSH協(xié)議。一種采用軟件在線升級(jí)及加速下載裝置的方法,具體工作過(guò)程為I)客戶(hù)端共享守護(hù)進(jìn)程裝置負(fù)責(zé)將客戶(hù)端加入到點(diǎn)到點(diǎn)網(wǎng)絡(luò),向跟蹤服務(wù)器裝置提交包含客戶(hù)端本地軟件的全球唯一標(biāo)識(shí)符UUID、工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端ロ信息,同時(shí)對(duì)工作拷貝的當(dāng)前版本文件目錄樹(shù)提供共享服務(wù);2)跟蹤服務(wù)器裝置接收客戶(hù)端共享進(jìn)程請(qǐng)求,存儲(chǔ)并實(shí)時(shí)更新該軟件UUID對(duì)應(yīng)的點(diǎn)到點(diǎn)網(wǎng)絡(luò)中客戶(hù)端本地工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端ロ列表,并將此列表返回給客戶(hù)端共享守護(hù)進(jìn)程裝置;3)客戶(hù)端共享守護(hù)進(jìn)程裝置實(shí)時(shí)與升級(jí)服務(wù)器代理裝置進(jìn)行通訊,升級(jí)服務(wù)器代理裝置將請(qǐng)求按負(fù)載均衡策略分發(fā)給升級(jí)服務(wù)器池中的一臺(tái)升級(jí)服務(wù)器裝置,客戶(hù)端共享守護(hù)進(jìn)程裝置獲取該升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)中所有版本軟件的文件目錄樹(shù)SHAl哈希值并同步到本地,并將本地工作拷貝版本與升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)版本進(jìn)行比較,若發(fā)現(xiàn)升級(jí)服務(wù)器裝置版本高于本地版本,向客戶(hù)端在線升級(jí)進(jìn)程推送升級(jí)提醒;4)客戶(hù)端在線升級(jí)進(jìn)程裝置發(fā)現(xiàn)新版本后,針對(duì)工作拷貝中的每個(gè)文件,與升級(jí)服務(wù)器代理裝置進(jìn)行通訊,得到本地工作拷貝中的軟件文件目錄樹(shù)的幾種狀態(tài)信息;5)當(dāng)發(fā)現(xiàn)新版本存在嚴(yán)重缺陷或?qū)е萝浖糠止δ懿徽?,客?hù)端在線升級(jí)進(jìn)程裝置對(duì)本地工作拷貝內(nèi)文件目錄樹(shù)進(jìn)行回退操作;若本地工作拷貝歷史版本中存在回退后老版本,執(zhí)行版本控制的“合井”原語(yǔ)操作,對(duì)文件目錄樹(shù)進(jìn)行反向増量修改,達(dá)到軟件版本回退功能;若本地工作拷貝歷史版本中不存在回退后老版本,則執(zhí)行版本控制的“更新”到指定版本原語(yǔ)操作,從升級(jí)服務(wù)器代理下載所需文件進(jìn)行版本回退;6)客戶(hù)端共享守護(hù)進(jìn)程裝置從升級(jí)服務(wù)器代理裝置下載文件采用單點(diǎn)多線程和多點(diǎn)下載方式進(jìn)行加速;7)客戶(hù)端共享守護(hù)進(jìn)程裝置首先根據(jù)檢測(cè)出的軟件新版本版本號(hào)和本軟件UUID,去跟蹤服務(wù)器裝置進(jìn)行查詢(xún),獲得擁有該軟件新版本號(hào)的點(diǎn)到點(diǎn)網(wǎng)絡(luò)對(duì)等客戶(hù)端列表;客戶(hù)端在線升級(jí)進(jìn)程裝置嘗試與這些對(duì)等客戶(hù)端建立連接,并請(qǐng)求下載文件;下載成功后,客戶(hù)端在線升級(jí)進(jìn)程裝置需要檢測(cè)該文件的SHAl哈希值,若與升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)該版本文件的SHAl哈希值一致,則表示下載成功,否則表示下載失敗,客戶(hù)端在線升級(jí)進(jìn)程裝置需要再次更換對(duì)等客戶(hù)端或向升級(jí)服務(wù)器代理裝置請(qǐng)求下載相應(yīng)文件。為降低跟蹤服務(wù)器裝置請(qǐng)求壓力,引入分布式哈希表DHT網(wǎng)絡(luò),在不需要跟蹤服務(wù)器裝置的情況下,每個(gè)客戶(hù)端負(fù)責(zé)一個(gè)小范圍路由列表,并存儲(chǔ)一部分版本號(hào)數(shù)據(jù),從而實(shí)現(xiàn)整個(gè)DHT網(wǎng)絡(luò)的尋址和存儲(chǔ);在客戶(hù)端完全連接不上跟蹤服務(wù)器裝置和升級(jí)服務(wù)器裝置的情況下,仍能從點(diǎn)到點(diǎn)網(wǎng)絡(luò)中對(duì)等客戶(hù)端下載所需文件。所述步驟4)中,不同狀態(tài)信息為若狀態(tài)為未修改且為最新,說(shuō)明該文件已是最新版本,不需要進(jìn)行任何處理;若狀態(tài)為本地忽略,說(shuō)明該文件不參與升級(jí),則執(zhí)行版本控制的“忽略”原語(yǔ)操作,跳過(guò)該文件檢測(cè);若文件為已修改且過(guò)期,說(shuō)明文件存在新版本,而且本地文件被人為修改,此時(shí)會(huì)產(chǎn)生告警推送給管理人員;該情況通常是客戶(hù)端本地軟件非法修改造成的;若狀態(tài)為未修改且過(guò)期,說(shuō)明該文件存在新版本,從升級(jí)服務(wù)器版本倉(cāng)庫(kù)中下載該文件,覆蓋本地相應(yīng)文件,執(zhí)行版本控制的“更新”原語(yǔ)操作,完成該文件的升級(jí);若狀態(tài)為本地工作拷貝不存在,說(shuō)明該文件為新增文件,則需要執(zhí)行版本控制的“檢出”原語(yǔ)操作,從升級(jí)服務(wù)器版本倉(cāng)庫(kù)中下載該文件。所述步驟6)中,加速過(guò)程為首先,客戶(hù)端在線升級(jí)進(jìn)程裝置通過(guò)升級(jí)服務(wù)器代理裝置從升級(jí)服務(wù)器池中的一臺(tái)升級(jí)服務(wù)器裝置按照多線程下載方式獲取下載文件;其次,在下載同時(shí),客戶(hù)端在線升級(jí)進(jìn)程裝置共享本地工作拷貝當(dāng)前版本,為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端提供上傳服務(wù),從而加速文件下載。本發(fā)明的有益效果是不需要在升級(jí)服務(wù)器人工維護(hù)升級(jí)文件版本信息,不需要升級(jí)服務(wù)器指導(dǎo)客戶(hù)端如何操作,通過(guò)代碼版本控制的“檢出”、“更新”、“忽略”、“合并”和“回滾”等原語(yǔ)操作,自動(dòng)實(shí)現(xiàn)軟件在線升級(jí)、個(gè)性化文件防更新以及軟件升級(jí)回退。該方法不依賴(lài)客戶(hù)端已有功能,并能保證在出現(xiàn)問(wèn)題后客戶(hù)端回退到之前任意版本。本發(fā)明實(shí)施例提供的文件加速下載方法和裝置,一方面,客戶(hù)端通過(guò)跟蹤服務(wù)器或DHT網(wǎng)絡(luò)實(shí)現(xiàn)點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端工作拷貝共享,各客戶(hù)端在對(duì)等客戶(hù)端上下載所需文件的同時(shí)又提供共享上傳服務(wù);另一方面,提供升級(jí)服務(wù)器代理和升級(jí)服務(wù)器池,通過(guò)負(fù)載均衡策略分擔(dān)升級(jí)服務(wù)器的壓力,從這兩方面達(dá)到加速下載的目標(biāo)。該方法適用于客戶(hù)端并發(fā)量大的情況,占用升級(jí)服務(wù)器資源小,減輕了升級(jí)服務(wù)器壓力,提高了軟件在線升級(jí)的效率和服務(wù)質(zhì)量。
圖I為本發(fā)明軟件在線升級(jí)方法中獲取對(duì)等客戶(hù)端的流程示意圖。圖2為本發(fā)明軟件在線升級(jí)方法和裝置實(shí)施例的流程示意圖。圖3為本發(fā)明軟件數(shù)據(jù)包下載加速方法和裝置實(shí)施例的流程示意圖。圖4為軟件在線升級(jí)方法實(shí)施例的結(jié)構(gòu)示意圖。圖5為本發(fā)明軟件在線升級(jí)軟件回退實(shí)施例流程示意圖。圖6為本發(fā)明軟件升級(jí)方法實(shí)施例跟蹤服務(wù)器裝置支持的通信協(xié)議。圖7為本發(fā)明軟件升級(jí)方法實(shí)施例升級(jí)服務(wù)器代理裝置支持的通信協(xié)議。
具體實(shí)施例方式下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明做進(jìn)ー步說(shuō)明。一種軟件在線升級(jí)及加速下載裝置,它包括客戶(hù)端在線升級(jí)進(jìn)程裝置,負(fù)責(zé)管理本地軟件工作拷貝,并與升級(jí)服務(wù)器代理裝置進(jìn)行通訊及更新本地工作拷貝,本地工作拷貝的當(dāng)前版本完整文件目錄樹(shù)作為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的種子對(duì)等節(jié)點(diǎn);客戶(hù)端共享守護(hù)進(jìn)程裝置,該進(jìn)程負(fù)責(zé)將客戶(hù)端作為對(duì)等節(jié)點(diǎn)加入到點(diǎn)到點(diǎn)網(wǎng)路,共享本地工作拷貝中最新版本的文件目錄樹(shù);跟蹤服務(wù)器裝置,用于接收客戶(hù)端共享守護(hù)進(jìn)程的請(qǐng)求,存儲(chǔ)并實(shí)時(shí)維護(hù)各個(gè)點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端ロ ;升級(jí)服務(wù)器代理裝置,按照負(fù)載均衡策略將每個(gè)到達(dá)升級(jí)服務(wù)器代理的請(qǐng)求按時(shí)間順序分發(fā)給后端的升級(jí)服務(wù)器池中的一臺(tái)服務(wù)器,同時(shí)采用加權(quán)輪詢(xún)調(diào)度算法提供服務(wù),保證請(qǐng)求分配的公平性和合理性;多個(gè)升級(jí)服務(wù)器裝置,每個(gè)升級(jí)服務(wù)器裝置均用于存儲(chǔ)和管理版本倉(cāng)庫(kù)中所有版本軟件的文件目錄樹(shù),同時(shí)向客戶(hù)端提供獲取指定版本文件SHAl哈希值列表的服務(wù),服務(wù)器內(nèi)版本倉(cāng)庫(kù)中各個(gè)版本的完整文件目錄樹(shù)都作為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的種子對(duì)等節(jié)點(diǎn);各升級(jí)服務(wù)器裝置存儲(chǔ)內(nèi)容完全相同,并形成一個(gè)環(huán)隊(duì)列的升級(jí)服務(wù)器池,各個(gè)升級(jí)服務(wù)器裝置上的版本倉(cāng)庫(kù)執(zhí)行版本控制的“同歩”原語(yǔ)操作實(shí)現(xiàn)實(shí)時(shí)同歩。所述客戶(hù)端共享守護(hù)進(jìn)程裝置除獲取點(diǎn)到點(diǎn)網(wǎng)絡(luò)中對(duì)等客戶(hù)端除了采用跟蹤服務(wù)器外,還支持在跟蹤服務(wù)器裝置負(fù)載較重或出現(xiàn)故障時(shí),從DHT網(wǎng)絡(luò)中獲取該信息。所述跟蹤服務(wù)器裝置支持的通訊協(xié)議包括HTTP/HTTPS協(xié)議和UDP協(xié)議。所述升級(jí)服務(wù)器代理裝置支持的通信協(xié)議包括HTTP WebDAV協(xié)議和SSH協(xié)議。圖I為本發(fā)明軟件在線升級(jí)方法中獲取對(duì)等客戶(hù)端實(shí)施例的流程示意圖,如圖I所示。該方法包括步驟100,客戶(hù)端共享守護(hù)進(jìn)程裝置向跟蹤服務(wù)器裝置發(fā)送請(qǐng)求,提交客戶(hù)端本地軟件UUID、工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端ロ信息。步驟101,跟蹤服務(wù)器裝置響應(yīng)客戶(hù)端共享守護(hù)進(jìn)程裝置,返回請(qǐng)求軟件的所有對(duì)等客戶(hù)端工作拷貝當(dāng)前版本號(hào)、對(duì)等客戶(hù)端IP地址和端ロ列表。在上述實(shí)施例中,客戶(hù)端共享守護(hù)進(jìn)程裝置獲取點(diǎn)到點(diǎn)網(wǎng)絡(luò)中對(duì)等客戶(hù)端除了采用跟蹤服務(wù)器裝置外,還支持在跟蹤服務(wù)器裝置負(fù)載較重或出現(xiàn)故障時(shí),從DHT網(wǎng)絡(luò)中獲取該信息,具體為步驟102。
步驟102,客戶(hù)端共享守護(hù)進(jìn)程通過(guò)DHT網(wǎng)絡(luò)尋找點(diǎn)到點(diǎn)網(wǎng)絡(luò)中可用的對(duì)等客戶(hù)端信息,該步驟作為步驟101的補(bǔ)充。圖2為本發(fā)明軟件在線升級(jí)方法中在線升級(jí)的流程示意圖,如圖2所示。該方法包括 步驟110,客戶(hù)端共享守護(hù)進(jìn)程向升級(jí)服務(wù)器代理裝置發(fā)出請(qǐng)求,獲取該軟件在升級(jí)服務(wù)器代理裝置版本倉(cāng)庫(kù)中所有版本文件目錄樹(shù)的SHAl哈希值,并同步到本地。為了實(shí)現(xiàn)實(shí)時(shí)獲取,該步驟在較短時(shí)間間隔內(nèi)定時(shí)執(zhí)行。步驟111,客戶(hù)端共享守護(hù)進(jìn)程裝置對(duì)比本地工作拷貝當(dāng)前版本與升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)最新版本,若發(fā)現(xiàn)升級(jí)服務(wù)器裝置版本高于本地版本,則向客戶(hù)端共享守護(hù)進(jìn)程裝置推送升級(jí)提醒。步驟112,客戶(hù)端共享守護(hù)進(jìn)程裝置與升級(jí)服務(wù)器代理裝置進(jìn)行通訊,獲取本地工作拷貝中的軟件文件目錄樹(shù)狀態(tài)。步驟113,狀態(tài)為未修改且為最新。步驟114,執(zhí)行版本控制的“空”操作,不需要進(jìn)行升級(jí)。步驟115,狀態(tài)為本地忽略。步驟116,執(zhí)行版本控制的“忽略”原語(yǔ)操作,跳過(guò)該文件檢測(cè)。步驟117,狀態(tài)為未修改且過(guò)期的。步驟118,執(zhí)行版本控制的“更新”原語(yǔ)操作,從升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)中下載該文件,替換原有文件,完成文件修訂。步驟119,狀態(tài)為本地工作拷貝不存在。步驟120,執(zhí)行版本控制的“檢出”原語(yǔ)操作,從升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)中下載該文件。步驟121,文件為已修改且過(guò)期,本地軟件文件被人為修改,通常情況下是由本地文件被破壞引起的。步驟122,產(chǎn)生告警推送給管理人員。步驟123,客戶(hù)端在線升級(jí)進(jìn)程裝置采用加速方式從升級(jí)服務(wù)器代理裝置下載文件。步驟124,對(duì)下載的文件進(jìn)行校驗(yàn)計(jì)算SHAl哈希值。若此哈希值與升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)中對(duì)應(yīng)版本的文件相同,表示下載成功。步驟125,若此SHAl哈希值與升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)中對(duì)應(yīng)版本的文件不同,說(shuō)明下載文件校驗(yàn)失敗,需要再次進(jìn)行多點(diǎn)下載或從升級(jí)服務(wù)器代理裝置進(jìn)行多線程下載。步驟126 :判斷本地工作拷貝的文件目錄樹(shù)中是否存在下一個(gè)未處理文件或目錄。若存在,則處理下一個(gè)文件或目錄,否則結(jié)束在線升級(jí)過(guò)程。圖3為本發(fā)明軟件數(shù)據(jù)包下載加速方法和裝置的流程示意圖,是對(duì)上述在線升級(jí)實(shí)施例步驟123的細(xì)化,如圖3所示。該方法包括步驟131 :客戶(hù)端在線升級(jí)進(jìn)程裝置選擇下載加速方式,判斷下載方式為單點(diǎn)多線程下載或多點(diǎn)下載。步驟132,若采用多線程下載,客戶(hù)端在線升級(jí)進(jìn)程裝置與升級(jí)服務(wù)器代理裝置進(jìn)行通訊,按照負(fù)載均衡策略與后端的升級(jí)服務(wù)器裝置池中的升級(jí)服務(wù)器裝置進(jìn)行連接。步驟133,客戶(hù)端在線升級(jí)進(jìn)程裝置從升級(jí)服務(wù)器代理裝置后端的具體升級(jí)服務(wù)器裝置中采用多線程方式下載所需文件。在上述在線升級(jí)實(shí)施例中,同時(shí)支持單點(diǎn)多線程下載與多點(diǎn)下載。單點(diǎn)多線程下載流程為步驟132、133,多點(diǎn)下載步驟為134、135替換上述步驟132、133,具體為步驟134,執(zhí)行獲取對(duì)等客戶(hù)端實(shí)施例流程,獲取到與更新后版本相同的對(duì)等客戶(hù)端列表。步驟135,客戶(hù)端在線升級(jí)進(jìn)程裝置嘗試連接列表中的對(duì)等客戶(hù)端,從工作拷貝中下載所需文件。圖4為本發(fā)明軟件在線升級(jí)方法實(shí)施例的結(jié)構(gòu)示意圖,如圖4所示。該軟件在線升級(jí)系統(tǒng)包括處于點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的數(shù)個(gè)客戶(hù)端在線升級(jí)進(jìn)程裝置和客戶(hù)端共享守護(hù)進(jìn)程 裝置、升級(jí)服務(wù)器代理裝置、跟蹤服務(wù)器裝置和DHT網(wǎng)絡(luò)。其中,客戶(hù)端在線升級(jí)進(jìn)程裝置用于同步升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)中所有版本文件目錄樹(shù)SHAl哈希值到本地,通過(guò)與升級(jí)服務(wù)器代理裝置通訊下載所需文件;客戶(hù)端共享守護(hù)進(jìn)程裝置負(fù)責(zé)與跟蹤服務(wù)器裝置或DHT網(wǎng)絡(luò)進(jìn)行通訊,提供客戶(hù)端本地軟件UUID、工作拷貝版本號(hào)、客戶(hù)端IP地址和端ロ等信息,發(fā)現(xiàn)點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端;跟蹤服務(wù)器裝置用于提供特定軟件的所有對(duì)等客戶(hù)端信息列表查詢(xún)服務(wù),輔助客戶(hù)端發(fā)現(xiàn)對(duì)等客戶(hù)端;DHT網(wǎng)絡(luò)提供了客戶(hù)端發(fā)現(xiàn)的另ー種機(jī)制,當(dāng)跟蹤服務(wù)器裝置癱瘓的情況下,保證系統(tǒng)運(yùn)轉(zhuǎn)正常;升級(jí)服務(wù)器代理裝置是升級(jí)服務(wù)器裝置池的前端,負(fù)責(zé)將對(duì)升級(jí)請(qǐng)求按負(fù)載均衡原則分發(fā)給服務(wù)器池后端的升級(jí)服務(wù)器裝置。在線升級(jí)服務(wù)器代理裝置后端包括升級(jí)服務(wù)器池和多個(gè)升級(jí)服務(wù)器裝置。升級(jí)服務(wù)器代理裝置在接收到客戶(hù)端在線升級(jí)請(qǐng)求后,按照負(fù)載均衡策略分發(fā)給服務(wù)器池中的一臺(tái)升級(jí)服務(wù)器,并從這臺(tái)服務(wù)器上采用多線程方式下載所需文件。圖5為本發(fā)明軟件在線升級(jí)軟件回退實(shí)施例流程示意圖,如圖5所示。該方法包括步驟141,客戶(hù)端在線升級(jí)進(jìn)程裝置向升級(jí)服務(wù)器代理裝置發(fā)出軟件回退到指定版本的請(qǐng)求。步驟142,客戶(hù)端在線升級(jí)進(jìn)程裝置檢測(cè)回退后版本號(hào)是否低于當(dāng)前工作拷貝版本號(hào)。步驟143,若回退后版本號(hào)低于當(dāng)前工作拷貝當(dāng)前版本號(hào),說(shuō)明可以進(jìn)行回退。此時(shí)檢測(cè)回退后的版本是否存在于本地工作拷貝歷史版本中。步驟144,若回退后的版本存在于本地工作拷貝歷史版本中,執(zhí)行版本控制的“回滾”到指定版本原語(yǔ)操作,完成該文件回退。步驟145,若回退后的版本不在本地工作拷貝歷史版本中,從升級(jí)服務(wù)器代理裝置中下載所需文件。步驟146,執(zhí)行版本控制的“更新”到指定版本原語(yǔ)操作,完成該文件的更新,從而實(shí)現(xiàn)文件回退。步驟147,若本地工作拷貝中還存在未處理文件或目錄,則處理下ー個(gè),否則結(jié)束軟件回退。圖6為本發(fā)明軟件升級(jí)方法實(shí)施例跟蹤服務(wù)器裝置支持的通信協(xié)議,用于客戶(hù)端共享守護(hù)進(jìn)程裝置與跟蹤服務(wù)器裝置通訊,發(fā)現(xiàn)點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端,其支持的通訊協(xié)議包括HTTP/HTTPS協(xié)議和UDP協(xié)議。HTTP/HTTPS協(xié)議在傳輸層上是一種有狀態(tài)的TCP協(xié)議,采取請(qǐng)求與應(yīng)答方式完成客戶(hù)端共享守護(hù)進(jìn)程裝置與跟蹤服務(wù)器裝置的通訊,具有較好的連接穿透能力,一般不會(huì)被防火墻所屏蔽;UDP協(xié)議作為HTTP協(xié)議的補(bǔ)充,其占用帶寬不到HTTP協(xié)議的50%,并且UDP是無(wú)狀態(tài)的,不會(huì)受到路由器所處理的TCP連接總數(shù)的限制。圖7為本發(fā)明軟件升級(jí)方法實(shí)施例升級(jí)服務(wù)器代理裝置支持的通信協(xié)議,用于客戶(hù)端在線升級(jí)進(jìn)程裝置與升級(jí)服務(wù)器代理裝置之間通訊,包括HTTP WebDAV協(xié)議和SSH協(xié)議。HTTPWebDAV協(xié)議擴(kuò)展了 HTTP1. I協(xié)議,使得在線升級(jí)客戶(hù)端進(jìn)程通過(guò)升級(jí)服務(wù)器代理直接對(duì)升級(jí)服務(wù)器進(jìn)行讀寫(xiě),支持文件鎖定、解鎖以及版本控制;而SSH協(xié)議提供了一種版本控制協(xié)議傳輸?shù)姆庋b方式,該協(xié)議可靠、安全,對(duì)傳輸數(shù)據(jù)進(jìn)行壓縮和加密,防止DNS和 IP欺騙,為在線升級(jí)客戶(hù)端進(jìn)程與升級(jí)服務(wù)器代理通信提供了一個(gè)安全的隧道。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種軟件在線升級(jí)及加速下載裝置,其特征是,它包括 客戶(hù)端在線升級(jí)進(jìn)程裝置,負(fù)責(zé)管理本地軟件工作拷貝,并與升級(jí)服務(wù)器代理裝置進(jìn)行通訊及更新本地工作拷貝,本地工作拷貝的當(dāng)前版本完整文件目錄樹(shù)作為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的種子對(duì)等節(jié)點(diǎn); 客戶(hù)端共享守護(hù)進(jìn)程裝置,負(fù)責(zé)將客戶(hù)端作為對(duì)等節(jié)點(diǎn)加入點(diǎn)到點(diǎn)網(wǎng)路,共享本地工作拷貝中最新版本的文件目錄樹(shù); 跟蹤服務(wù)器裝置,用于接收客戶(hù)端共享守護(hù)進(jìn)程的請(qǐng)求,存儲(chǔ)并實(shí)時(shí)維護(hù)各個(gè)點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端口 ; 升級(jí)服務(wù)器代理裝置,按照負(fù)載均衡策略將每個(gè)到達(dá)升級(jí)服務(wù)器代理的請(qǐng)求按時(shí)間順序分發(fā)給后端的升級(jí)服務(wù)器池中的一臺(tái)服務(wù)器,同時(shí)采用加權(quán)輪詢(xún)調(diào)度算法提供服務(wù),保證請(qǐng)求分配的公平性和合理性; 多個(gè)升級(jí)服務(wù)器裝置,每個(gè)升級(jí)服務(wù)器裝置均用于存儲(chǔ)和管理版本倉(cāng)庫(kù)中所有版本軟件的文件目錄樹(shù),同時(shí)向客戶(hù)端提供獲取指定版本文件SHAl哈希值列表的服務(wù),服務(wù)器內(nèi)版本倉(cāng)庫(kù)中各個(gè)版本的完整文件目錄樹(shù)都作為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的種子對(duì)等節(jié)點(diǎn);各升級(jí)服務(wù)器裝置存儲(chǔ)內(nèi)容完全相同,并形成一個(gè)環(huán)隊(duì)列的升級(jí)服務(wù)器池,各個(gè)升級(jí)服務(wù)器裝置上的版本倉(cāng)庫(kù)執(zhí)行版本控制的“同步”原語(yǔ)操作實(shí)現(xiàn)實(shí)時(shí)同步。
2.如權(quán)利要求I所述的軟件在線升級(jí)及加速下載裝置,其特征是,所述客戶(hù)端共享守護(hù)進(jìn)程裝置除獲取點(diǎn)到點(diǎn)網(wǎng)絡(luò)中對(duì)等客戶(hù)端除了采用跟蹤服務(wù)器外,還支持在跟蹤服務(wù)器裝置負(fù)載較重或出現(xiàn)故障時(shí),從DHT網(wǎng)絡(luò)中獲取該信息。
3.如權(quán)利要求I所述的軟件在線升級(jí)及加速下載裝置,其特征是,所述跟蹤服務(wù)器裝置支持的通訊協(xié)議包括HTTP/HTTPS協(xié)議和UDP協(xié)議。
4.如權(quán)利要求I所述的軟件在線升級(jí)及加速下載裝置,其特征是,所述升級(jí)服務(wù)器代理裝置支持的通信協(xié)議包括HTTP WebDAV協(xié)議和SSH協(xié)議。
5.一種采用權(quán)利要求I或2或3或4所述的軟件在線升級(jí)及加速下載裝置的方法,其特征是,具體工作過(guò)程為 1)客戶(hù)端共享守護(hù)進(jìn)程裝置負(fù)責(zé)將客戶(hù)端加入點(diǎn)到點(diǎn)網(wǎng)絡(luò),向跟蹤服務(wù)器裝置提交包含客戶(hù)端本地軟件的全球唯一標(biāo)識(shí)符UUID、工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端口信息,同時(shí)對(duì)工作拷貝的當(dāng)前版本文件目錄樹(shù)提供共享服務(wù); 2)跟蹤服務(wù)器裝置接收客戶(hù)端共享進(jìn)程請(qǐng)求,存儲(chǔ)并實(shí)時(shí)更新該軟件UUID對(duì)應(yīng)的點(diǎn)到點(diǎn)網(wǎng)絡(luò)中客戶(hù)端本地工作拷貝當(dāng)前版本號(hào)、客戶(hù)端IP地址和端口列表,并將此列表返回給客戶(hù)端共享守護(hù)進(jìn)程裝置; 3)客戶(hù)端共享守護(hù)進(jìn)程裝置實(shí)時(shí)與升級(jí)服務(wù)器代理裝置進(jìn)行通訊,升級(jí)服務(wù)器代理裝置將請(qǐng)求按負(fù)載均衡策略分發(fā)給升級(jí)服務(wù)器池中的一臺(tái)升級(jí)服務(wù)器裝置,客戶(hù)端共享守護(hù)進(jìn)程裝置獲取該升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)中所有版本軟件的文件目錄樹(shù)SHAl哈希值并同步到本地,并將本地工作拷貝版本與升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)版本進(jìn)行比較,若發(fā)現(xiàn)升級(jí)服務(wù)器裝置版本高于本地版本,向客戶(hù)端在線升級(jí)進(jìn)程推送升級(jí)提醒; 4)客戶(hù)端在線升級(jí)進(jìn)程裝置發(fā)現(xiàn)新版本后,針對(duì)工作拷貝中的每個(gè)文件,與升級(jí)服務(wù)器代理裝置進(jìn)行通訊,得到本地工作拷貝中的軟件文件目錄樹(shù)的幾種狀態(tài)信息 5)當(dāng)發(fā)現(xiàn)新版本存在嚴(yán)重缺陷或?qū)е萝浖糠止δ懿徽?,客?hù)端在線升級(jí)進(jìn)程裝置對(duì)本地工作拷貝內(nèi)文件目錄樹(shù)進(jìn)行回退操作;若本地工作拷貝歷史版本中存在回退后老版本,執(zhí)行版本控制的“合井”原語(yǔ)操作,對(duì)文件目錄樹(shù)進(jìn)行反向増量修改,達(dá)到軟件版本回退功能;若本地工作拷貝歷史版本中不存在回退后老版本,則執(zhí)行版本控制的“更新”到指定版本原語(yǔ)操作,從升級(jí)服務(wù)器代理下載所需文件進(jìn)行版本回退; 6)客戶(hù)端共享守護(hù)進(jìn)程裝置從升級(jí)服務(wù)器代理裝置下載文件采用單點(diǎn)多線程和多點(diǎn)下載方式進(jìn)行加速; 7)客戶(hù)端共享守護(hù)進(jìn)程裝置首先根據(jù)檢測(cè)出的軟件新版本版本號(hào)和本軟件UUID,去跟蹤服務(wù)器裝置進(jìn)行查詢(xún),獲得擁有該軟件新版本號(hào)的點(diǎn)到點(diǎn)網(wǎng)絡(luò)對(duì)等客戶(hù)端列表;客戶(hù)端在線升級(jí)進(jìn)程裝置嘗試與這些對(duì)等客戶(hù)端建立連接,并請(qǐng)求下載文件;下載成功后,客戶(hù)端在線升級(jí)進(jìn)程裝置需要檢測(cè)該文件的SHAl哈希值,若與升級(jí)服務(wù)器裝置版本倉(cāng)庫(kù)該版本文件的SHAl哈希值一致,則表示下載成功,否則表示下載失敗,客戶(hù)端在線升級(jí)進(jìn)程裝置需要再次更換對(duì)等客戶(hù)端或向升級(jí)服務(wù)器代理裝置請(qǐng)求下載相應(yīng)文件。
6.一種權(quán)利要求5所述的方法,其特征是,為降低跟蹤服務(wù)器裝置請(qǐng)求壓力,引入分布式哈希表DHT網(wǎng)絡(luò),在不需要跟蹤服務(wù)器裝置的情況下,每個(gè)客戶(hù)端負(fù)責(zé)ー個(gè)小范圍路由列表,并存儲(chǔ)一部分版本號(hào)數(shù)據(jù),從而實(shí)現(xiàn)整個(gè)DHT網(wǎng)絡(luò)的尋址和存儲(chǔ);在客戶(hù)端完全連接不上跟蹤服務(wù)器裝置和升級(jí)服務(wù)器裝置的情況下,仍能從點(diǎn)到點(diǎn)網(wǎng)絡(luò)中對(duì)等客戶(hù)端下載所需文件。
7.如權(quán)利要求5所述的方法,其特征是,所述步驟4)中,不同狀態(tài)信息為 若狀態(tài)為未修改且為最新,說(shuō)明該文件已是最新版本,不需要進(jìn)行任何處理; 若狀態(tài)為本地忽略,說(shuō)明該文件不參與升級(jí),則執(zhí)行版本控制的“忽略”原語(yǔ)操作,跳過(guò)該文件檢測(cè); 若文件為已修改且過(guò)期,說(shuō)明文件存在新版本,而且本地文件被人為修改,此時(shí)會(huì)產(chǎn)生告警推送給管理人員;該情況通常是客戶(hù)端本地軟件非法修改造成的; 若狀態(tài)為未修改且過(guò)期,說(shuō)明該文件存在新版本,從升級(jí)服務(wù)器版本倉(cāng)庫(kù)中下載該文件,覆蓋本地相應(yīng)文件,執(zhí)行版本控制的“更新”原語(yǔ)操作,完成該文件的升級(jí); 若狀態(tài)為本地工作拷貝不存在,說(shuō)明該文件為新增文件,則需要執(zhí)行版本控制的“檢出,,原語(yǔ)操作,從升級(jí)服務(wù)器版本倉(cāng)庫(kù)中下載該文件。
8.如權(quán)利要求5所述的方法,其特征是,所述步驟6)中,加速過(guò)程為首先,客戶(hù)端在線升級(jí)進(jìn)程裝置通過(guò)升級(jí)服務(wù)器代理裝置從升級(jí)服務(wù)器池中的一臺(tái)升級(jí)服務(wù)器裝置按照多線程下載方式獲取下載文件;其次,在下載同時(shí),客戶(hù)端在線升級(jí)進(jìn)程裝置共享本地工作拷貝當(dāng)前版本,為點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的對(duì)等客戶(hù)端提供上傳服務(wù),從而加速文件下載。
全文摘要
本發(fā)明涉及一種軟件在線升級(jí)及加速下載的方法和裝置。它包括客戶(hù)端在線升級(jí)進(jìn)程裝置、客戶(hù)端共享守護(hù)進(jìn)程裝置、跟蹤服務(wù)器裝置、升級(jí)服務(wù)器代理裝置、多個(gè)升級(jí)服務(wù)器裝置,各升級(jí)服務(wù)器裝置存儲(chǔ)內(nèi)容完全相同,并形成一個(gè)環(huán)隊(duì)列的升級(jí)服務(wù)器池,各個(gè)升級(jí)服務(wù)器裝置上的版本倉(cāng)庫(kù)執(zhí)行版本控制的“同步”原語(yǔ)操作實(shí)現(xiàn)實(shí)時(shí)同步。該方法適用于客戶(hù)端并發(fā)量大的情況,占用升級(jí)服務(wù)器資源小,減輕了升級(jí)服務(wù)器壓力,提高了軟件在線升級(jí)的效率和服務(wù)質(zhì)量。
文檔編號(hào)H04L29/08GK102868731SQ201210309118
公開(kāi)日2013年1月9日 申請(qǐng)日期2012年8月27日 優(yōu)先權(quán)日2012年8月27日
發(fā)明者馬坤, 楊波 申請(qǐng)人:濟(jì)南大學(xué)