• / 25
  • 下載費用:30 金幣  

一種文件的增量升級發布方法和裝置.pdf

摘要
申請專利號:

CN201510312070.5

申請日:

2015.06.09

公開號:

CN104991791A

公開日:

2015.10.21

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/445申請日:20150609|||公開
IPC分類號: G06F9/445; G06F17/30 主分類號: G06F9/445
申請人: 北京奇虎科技有限公司; 奇智軟件(北京)有限公司
發明人: 袁瑞峰; 高其林; 劉東輝; 周光柱; 權超靜
地址: 100088北京市西城區新街口外大街28號D座112室(德勝園區)
優先權:
專利代理機構: 北京市隆安律師事務所11323 代理人: 權鮮枝; 何立春
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510312070.5

授權公告號:

||||||

法律狀態公告日:

2018.03.02|||2015.11.18|||2015.10.21

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明公開了一種文件的增量升級發布方法和裝置。所述方法包括:將各級版本按照先后順序編號;預設一個或多個增量跳數;當發布新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本;生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表;發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。本發明的技術方案,在每次增量發布時選擇性地生成當前發布版本和少數已發布版本之間的增量文件,進一步減少了文件增量升級所需的資源。

權利要求書

權利要求書
1.  一種文件的增量升級發布方法,其中,該方法包括:
將指定文件的各級版本按照先后順序從0開始進行整數編號;
預設一個或多個增量跳數;
每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本;
生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表;
發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。

2.  如權利要求1所述的方法,其中,生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件包括:
通過調用增量文件生成工具,生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件。

3.  如權利要求1所述的方法,其中,該方法進一步包括:將指定文件的編號為0的版本設置為起始版本;
所述增量升級列表中的增量升級路徑包括:從起始版本開始的所有版本升級到該新版本的增量升級路徑。

4.  如權利要求3所述的方法,其中,
增量升級列表中的每條增量升級路徑包括:從對應的版本升級到該新版本所需經過的版本,以及對應所需的增量文件信息;
所述增量文件信息包括:增量文件的下載地址,或者從指定地址下載增量文件的MD5值。

5.  如權利要求3所述的方法,其中,
每條升級路徑均為從升級開始版本升級到該新版本時,所需增量文件個數最少的路徑。

6.  如權利要求3所述的方法,其中,該方法進一步包括:
將指定文件的編號為X的版本設置為起始版本;
其中,X=M*最大增量跳數;M為自然數且M=1,…,N-1;
N為將從編號為0的版本到該新版本的路徑,按照最大增量跳數切割后得到的塊的數量。

7.  如權利要求1所述的方法,其中,所述一個或多個增量跳數中至少包括1。

8.  如權利要求1所述的方法,其中,在生成包含增量升級路徑的增量升級列表之后,并在將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中之前,該方法進一步包括如下中的一項或多項:
如果生成的一個增量文件的大小,大于第一預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果生成的一個增量文件的大小與當前發布版本的發布包的大小的比值,大于第二預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果一條增量升級路徑上增量文件的大小總和,大于當前發布版本的發布包的大小,則從增量升級列表中刪除該增量升級路徑。

9.  一種文件的增量升級發布裝置,其中,該裝置包括:
設置單元,適于將指定文件的各級版本按照先后順序從0開始進行整數編號;以及適于預設一個或多個增量跳數;
增量預處理單元,適于每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本;
增量生成單元,適于生成該新版本的發布包與增量預處理單元所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表;
增量發布單元,適于發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。

10.  如權利要求9所述的裝置,其中,
所述增量生成單元,適于通過調用增量文件生成工具,生成該新版本的發布包與增量預處理單元所找到的各已發布版本的發布包之間的增量文件。

說明書

說明書一種文件的增量升級發布方法和裝置
技術領域
本發明涉及互聯網技術領域,具體涉及一種增量升級發布的方法和裝置。
背景技術
當前,各種各樣的應用軟件在人們的工作和生活中起到越來越重要的角色。每種軟件也會因為功能的改進和漏洞的修補,需要不斷的進行升級。
而對于軟件發布者來說,為了升級軟件功能以不斷適應用戶的需求或者為了修補漏洞,需要對發發布的軟件不斷進行升級,發布新版本。
但是現有的軟件升級方法就是將更新后版本的軟件安裝包重新發布一次,然后用戶卸載之前的就版本,再安裝新版本。這種全量升級方式由于每次都要重新發布新版本的完整安裝包,每個客戶端都需要下載該完整的安裝包,因此耗費非常大的流量。
此外現有的軟件升級也采用增量升級,但是如果沒發布一個新版本都需要與之前發布的所有版本生成增量文件的話,需要很大的存儲資源來存儲增量文件,且隨著版本號的增加每次升級所需要生成的增量文件的數量也成倍增長,消耗大量的資源。
發明內容
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種增量升級發布的方法和裝置。
依據本發明的一個方面,提供了一種文件的增量升級發布方法,其中,該方法包括:
將指定文件的各級版本按照先后順序從0開始進行整數編號;
預設一個或多個增量跳數;
每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已 發布版本;
生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表;
發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。
可選地,生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件包括:
通過調用增量文件生成工具,生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件。
可選地該方法進一步包括:將指定文件的編號為0的版本設置為起始版本;
所述增量升級列表中的增量升級路徑包括:從起始版本開始的所有版本升級到該新版本的增量升級路徑;。
可選地,增量升級列表中的每條增量升級路徑包括:從對應的版本升級到該新版本所需經過的版本,以及對應所需的增量文件信息;
所述增量文件信息包括:增量文件的下載地址,或者從指定地址下載增量文件的MD5值。
可選地,每條升級路徑均為從升級開始版本升級到該新版本時,所需增量文件個數最少的路徑。
可選地,該方法進一步包括:
將指定文件的編號為X的版本設置為起始版本;
其中,X=M*最大增量跳數;M為自然數且M=1,…,N-1;
N為將從編號為0的版本到該新版本的路徑,按照最大增量跳數切割后得到的塊的數量。
可選地,所述一個或多個增量跳數中至少包括1。
可選地,在生成包含增量升級路徑的增量升級列表之后,并在將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中之前,該方法進一步包括如下中的一項或多項:
如果生成的一個增量文件的大小,大于第一預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果生成的一個增量文件的大小與當前發布版本的發布包的大小的比值,大于第二預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果一條增量升級路徑上增量文件的大小總和,大于當前發布版本的發布包的大小,則從增量升級列表中刪除該增量升級路徑。
依據本發明的另一個方面,提供了一種文件的增量升級發布裝置,其中,該裝置包括:
設置單元,適于將指定文件的各級版本按照先后順序從0開始進行整數編號;以及適于預設一個或多個增量跳數;
增量預處理單元,適于每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本;
增量生成單元,適于生成該新版本的發布包與增量預處理單元所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表;
增量發布單元,適于發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。
可選地,所述增量生成單元,適于通過調用增量文件生成工具,生成該新版本的發布包與增量預處理單元所找到的各已發布版本的發布包之間的增量文件。
可選地,所述設置單元,進一步適于將指定文件的編號為0的版本設置為起始版本;
所述增量生成單元生成的所述增量升級列表中的增量升級路徑包括:從起始版本開始的所有版本升級到該新版本的增量升級路徑;。
可選地,所述增量生成單元生成的增量升級列表中的每條增量升級路徑包括:從對應的版本升級到該新版本所需經過的版本,以及對應所需的增量文件信息;
所述增量文件信息包括:增量文件的下載地址,或者從指定地址下載增量文件的MD5值。
可選地,所述增量生成單元生成的增量升級列表中的每條升級路徑均為,從升級開始版本升級到該新版本時,所需增量文件個數最少的路徑。
可選地,所述設置單元,進一步適于將指定文件的編號為X的版本設置為起始版本;
其中,X=M*最大增量跳數;M為自然數且M=1,…,N-1;
N為將從編號為0的版本到該新版本的路徑,按照最大增量跳數切割后得到的塊的數量。
可選地,所述設置單元預設的所述一個或多個增量跳數中至少包括1。
可選地,所述增量生成單元,在生成包含增量升級路徑的增量升級列表之后,進一步適于執行如下中的一項或多項:
如果生成的一個增量文件的大小,大于第一預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果生成的一個增量文件的大小與當前發布版本的發布包的大小的比值,大于第二預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果一條增量升級路徑上增量文件的大小總和,大于當前發布版本的發布包的大小,則從增量升級列表中刪除該增量升級路徑。
根據本發明的這種在增量發布時只生成當前發布版本的發布包與預設策略所確定的一個或多個已發布版本的發布包之間的增量文件,發布所生成的增量文件,以及將增量升級列表下發到供客戶端進行增量升級的配置文件中的技術方案,解決了全部版本以全量發布時的流量耗費問題,并且每次增量發布時選擇性地生成當前發布版本的發布包與一個或多個已發布版本的發布包之間的增量文件,而不是生成當前發布版本的發布包與所有已發布版本的發布包之間的增量文件,進一步減少了文件升級所需的資源。
上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。
附圖說明
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據本發明一個實施例的一種文件的增量升級發布方法的流程圖;
圖2示出了根據本發明一個實施例的能升級到1.0.0.1030的版本路徑;
圖3示出了根據本發明一個實施例的能升級到1.0.0.1020的版本路徑;
圖4示出了根據本發明一個實施例的1.0.0.1020的明細升級路徑;
圖5示出了根據本發明一個實施例的1.0.0.1030的明細升級路徑;
圖6示出了根據本發明一個實施例的非連續版本重新編號的示意圖;
圖7示出了根據本發明一個實施例的連續版本重新編號的示意圖;
圖8示出了根據本發明一個實施例的大數據量版本升級示意圖;
圖9示出了根據本發明一個實施例的一種文件的升級發布方法的流程圖;
圖10示出了根據本發明一個實施例的一種文件的增量升級發布裝置的結構圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
在闡述本發明的方案之前,先給出本方案中的一些概念的解釋。
起始版本:升級路徑的最開始版本。
版本號定義:版本號使用數字,利用”.”來劃分層級,例如:1.2.3.1239
連續版本:每個版本號之間是連續的,例如:1.0.0.1001,1.0.0.1002,1.0.0.1003,1.0.0.1004。
非連續版本:包含連續版本,每個版本號之間是可以非連續各個版本號之間的跨度也不固定,跨度是隨機的例如:1.0.0.1001 1.0.0.10071.0.0.1012 1.0.0.1013 1.0.0.1023。
全量升級:直接使用某個版本完整升級,如當最低版本和最高版本跨度較大時,其增量的文件已經遠超于最高版本本身的大小,如果還繼續使用增量將沒有意義,不如直接使用最高版本來升級。當然考慮到升級時效性,這里不只是最高版本,可以全量升級某個版本,再繼續使用增量,以達到最快升級到目標版本。
增量文件:記錄新版本相對于舊版本所發生的變化的文件。一般來說,版本號之間跨度越大,版本間變化的內容的越多,增量文件越大,反之越小。
增量升級,使用增量文件進行升級。
增量跳數:自定義一組用于低版本升級到高版本的跨度,這個值越大其升級的路徑也是最短,比如拿開始的版本1.0.0.1010來說如果定義增量跳數為20,那么1.0.0.1010->1.0.0.1030剛好滿足20個跨度就可以直接升級,也許你會問那1.0.0.1011怎么升級?這個問題的解決方式就是定義一組增量跳數,當然其最小的跨度必須是1,因為要保證1.0.0.1010可以升級到1.0.0.1011比如:(1,20),這樣就可以保證跨度為1和跨度為20的版本升級是直接升級。
如何確定最短路徑:都知道兩點之間直線的距離最短,這里也是如此,目標版本是確定的,需要升級的版本不確定,每個用戶電腦上的版本都是不一樣的,所以最直接最短的就是所有低版本都直接升級到目標版本,這樣的代價就是我們需要針對所有低版本去生成相應的增量,這樣雖然是最快的,但是其維護性的代價很大,一方面我們每次發布一個新的版本都需要重新生成一遍它跟所有低版本的增量,當版本比較多的時候,工作量很大,即使真正的生成出來,也需要存儲,而且當新的版本更新迭代更多后,相應的增量也很大,這個是比較耗費的,所以它是不劃算的。本申請中我們需要做增量就是我們即需要保證用戶當前的版本可以最快的升級到目標版本也需要考慮到 實際情況,具體的解決方案是:我們定義一個初始版本,并且設定增量跳數,我們的最終目的是為了升級到目標版本,所以按照目標版本往低版本去找,當目標版本與低版本的跨度滿足增量跳數時,我們生成一個增量,當然增量的跳數必須存在1,因為相鄰的兩個版本的最小跨度就是1,這個是必須要保證的,其他的跳數最好是做成自定義的,這樣才可以滿足不同的版本之間的生成增量的需求。
圖1示出了根據本發明一個實施例的一種文件的增量升級發布方法的流程圖。如圖1所示,該方法包括:
步驟S110,將指定文件的各級版本按照先后順序從0開始進行整數編號,以及預設一個或多個增量跳數。
為了方便記錄各版本的先后序號,在本發明的實施例中,將指定文件的各級版本按照先后順序從0開始進行整數編號。這樣就不受指定文件的發布實際版本號是否連續的影像了。例如,發布初始版本時賦予編號0,之后,每發布一個新版本在上一版本編號上加1即為該新版本的編號,這里新賦予的編號稱為內部編號。
在本發明的一個實施例中,所設置的一個或多個增量跳數中至少包括1。以保證從任何版本都可以增量升級到新版本。
需要說明的是,這里所述的要升級的文件可以是應用軟件,也可以是各類數據庫。
步驟S120,每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本。
步驟S130生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表。
本步驟的生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件具體為:通過調用增量文件生成工具,生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件。不同的文件進行升級時采用的增量文件生成工具可能不同,這里只需要調用相應的工具即可。
步驟S140,發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。
這樣,當客戶端想要對本地的該指定文件進行升級時,先到配置文件查詢從本地的版本升級的更高版本時的路徑,獲得該路徑對應的增量文件信息,然后去下載相應的增量文件進行升級。
圖1所示的方法,解決了全部版本以全量發布時的流量耗費問題,并且每次增量發布時選擇性地生成當前發布版本的發布包與一個或多個已發布版本的發布包之間的增量文件,而不是生成當前發布版本的發布包與所有已發布版本的發布包之間的增量文件,進一步減少了文件升級所需的資源。
舉例說明如下(假設增量跳數為1、5、10和20):
A)導入版本時,發布平臺會為使用增量的版本進行內部編號,初始全量版本編號為0,之后版本編號依次加1,如
1.0.0.1000->0,
1.0.0.1001->1,
1.0.0.1002->2,

1.0.0.1020->20
B)導入版本時,會拿新版本的內部編號去分別除下增量跳數里配置的數(1,5,10,20),能夠除盡的會找向前找相應跳數的節點生成一個增量文件(這里稱為diff文件),例如
i.線上已存在一個全量發布的1.0.0.1000版本,編號為0,新導入一個版本1.0.0.1001,編號為1:
1%1=0,可以除盡,則會向前找1個跳數和1.0.0.1000版本生成一個diff
diff=1.0.0.1000->1.0.0.1001
依次類推,導入1.0.0.1002版本,編號為2,會和1.0.0.1001版本生成diff
diff=1.0.0.1001->1.0.0.1002
diff=1.0.0.1002->1.0.0.1003
diff=1.0.0.1003->1.0.0.1004
ii.當導入1.0.0.1005版本時,編號為5,會發現5%5=0,則會向前找5個跳數再生成一個增量,則會產生兩個diff:
diff=1.0.0.1004->1.0.0.1005
diff=1.0.0.1000->1.0.0.1005
依次類推,導入1.0.0.1010版本時,10%10=0,10%5=0,10%1=0,
則會生成三個diff:
diff=1.0.0.1009->1.0.0.1010
diff=1.0.0.1005->1.0.0.1010
diff=1.0.0.1000->1.0.0.1010
導入1.0.0.1020版本時,20%20=0,20%10=0,20%5=0,20%1=0,
生成四個diff:
diff=1.0.0.1019->1.0.0.1020
diff=1.0.0.1015->1.0.0.1020
diff=1.0.0.1010->1.0.0.1020
diff=1.0.0.1000->1.0.0.1020
C)增量跳數默認為(1,5,10,20),也可根據特殊需求向審批組申請修改為其他值。
圖1所示的方法,有已下幾個好處:減少各個版本之間增量的冗余性;可以重復利用到已經生成的增量;減少生成增量文件的大小;節省磁盤空間;減少計算的復雜度;更方便的管理與維護;由于增量文件比較小,所以也節省了帶寬。
假如設定起始版本為1.0.0.1010,設定增量跳數為:(1,5,10,20),結束版本為1.0.0.1030。
圖2示出了根據本發明一個實施例的能升級到1.0.0.1030的版本路徑。從圖2可以看到如果要升級到1.0.0.1030版本,那么1.0.0.1029,1.0.0.1025, 1.0.0.1020,1.0.0.1010這四個版本都是可以直接升級到目標版本1.0.0.1030。其他的版本則無法直接升級到1.0.0.1030,但是其他的版本可以升級到上述四個版本.之一然后由上述四個版本之一直接升級到1.0.0.1030。具體參見圖3-5。
圖3示出了根據本發明一個實施例的能升級到1.0.0.1020的版本路徑。圖4示出了根據本發明一個實施例的1.0.0.1020的明細升級路徑。圖5示出了根據本發明一個實施例的1.0.0.1030的明細升級路徑。
升級的路徑是先完成圖3的路徑圖,再完成圖4的路徑圖
從圖5中,可以看到1.0.0.1011這個節點要升級到1.0.0.1030,它找到的最近節點是1.0.0.1020,然后可以直接升級到1.0.0.1030版本。在圖4中我們看到1.0.0.1020由1.0.0.1019和1.0.0.1015,1.0.0.1010升級上來,1.0.0.1010是起始版本,所以他有多個選擇,但是如何最優,才是需要關注的。最短路徑原理:版本的升級是由低版本最短路徑到的目標版本。圖4中是1.0.0.1020升級的路徑圖,具體的升級流程是這樣的,版本的升級由低到高,所以真正的是先有圖4的路徑升級,才有的圖5的路徑升級,在圖4中,也是使用增量跳數:1,5,10,20。對比圖5和圖4發現1.0.0.1010這個版本比較特殊,它可以升級到1.0.0.1020和1.0.0.1030,那么在圖5中,1.0.0.1010是直接升級到1.0.0.1030的,而1.0.0.1020也可以由1.0.0.1010升級。圖5中既有1.0.0.1020也有1.0.0.1030,節點1.0.0.1010有了雙向選擇,所以對于圖5中目標版本是1.0.0.1030根據最短路徑原理1.0.0.1010->1.0.0.1030只需要一步,而不是10.0.1010->1.0.0.1020再通過1.0.0.1020->1.0.0.1030這兩步,所以是1.0.0.1010升級到1.0.0.1030最劃算。
仔細數數圖5中的各個版本的升級情況,可以發現升級到1.0.0.1030版本的各個版本的路徑里,其中最長路徑的版本是1.0.0.1011,其升級到1.0.0.1030一共需要6步,分別是:1.0.0.1011,1.0.0.1012,1.0.0.1013,1.0.0.1014,1.0.0.1015,1.0.0.1020,1.0.0.1030。
從圖5中可以看到除了1.0.0.1011升級是6步外,其他版本的最多是5步,這種做法使得低版本升級到高版本是最短的路徑,提高了升級的效率,并且產生了增量比較小的文件,大大節省了帶寬。
前面已經提到對文件的各版本按照順序進行重新編號,以方便計算。圖6示出了根據本發明一個實施例的非連續版本重新編號的示意圖。圖7示出了根據本發明一個實施例的連續版本重新編號的示意圖。
由于連續的版本其版本號是連續遞增的,那么如果實現起來根據增量的跳數可以很方便的拿到具體的升級路徑,非連續的版本之間的增量可以看做是連續的增量方式,具體的做法是重新編號,無論是連續的還是非連續的重新編號后,都會變成有序的一組數據,而對于有序的數據,我們處理和操作起來也更方便,這樣非連續的各個版本之間就可以轉換為連續的增量來計算。從而解決了非連續版本之間無法通過增量跳數升級的問題。其中編號是從0開始累加,所以非連續和連續的增量升級都可以轉換為按照重新編號后的升級方式來做。
當版本的迭代非常多,幾百甚至上千個版本,如果還是按照起始節點不變,新的版本每次都要從初始節點開始計算,這樣的計算接過是我們不想要的。當然我們因為定義了,增量跳數,可以知道增量的路徑是按照增量跳數的最大值循環的,參見圖如圖8。
圖8示出了根據本發明一個實施例的大數據量版本升級示意圖。從圖8可以看到,升級的各個版本之間的增量路徑是按照增量跳數的最大值20來循環的,所以對于大數量的各個增量版本之間的升級,我們只需要取比最后的目標版低的前20個就可以了,這樣就可以簡化增量版本之間的升級。圖8中也相當于起始節點從1.0.0.1010偏移到了1.0.0.1030,而偏移量正好是20,所以如果我們可以將整個路徑按照增量的最大跳數切割成N塊,那么最后一個循環的肯定是從N-1開始,所以可以得到下面兩個公式:
公式一:最后的偏移量=(N-1)*增量的最大跳數;
公式二:最后偏移的版本=起始版本+最后的偏移量;
這兩公式可以解決大數據量的問題。
綜合上述通過偏移量解決大數據量的問題的方案,可以總結得到圖1所述的方法進一步包括:將指定文件的編號為0的版本設置為起始版本;
所述增量升級列表中的增量升級路徑包括:從起始版本開始的所有版本升級到該新版本的增量升級路徑。其中,增量升級列表中的每條增量升級路 徑包括:從對應的版本升級到該新版本所需經過的版本,以及對應所需的增量文件信息;所述增量文件信息包括:增量文件的下載地址,或者從指定地址下載增量文件的MD5值。每條升級路徑均為從升級開始版本升級到該新版本時,所需增量文件個數最少的路徑。
例如,一條增量升級路徑是從版本4升級到版本16的路徑,其具體為4-5-15-16,即從版本4升級到版本5,從版本5升級到版本15,再從版本15升級到版本16。所需的增量文件為:版本5與版本4之間的增量文件,版本15與版本5之間的增量文件,以及版本16與版本15之間的增量文件。增量文件的下載地址及下載URL。或者,已經知道從指定地址下載,此時MD5值作為增量文件的唯一標識可以識別是哪個增量文件。
在此基礎上,圖1所述的方法進一步包括:將指定文件的編號為X的版本設置為起始版本;其中,X=M*最大增量跳數;M為自然數且M=1,…,N-1;N為將從編號為0的版本到該新版本的路徑,按照最大增量跳數切割后得到的塊的數量。
在本發明的一個實施例中,圖1所示的方法,在生成包含增量升級路徑的增量升級列表之后,并在將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中之前,該方法進一步包括如下中的一項或多項:
b1)如果生成的一個增量文件的大小,大于第一預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑。例如,第一預設閾值可以設置為1M,如果生成的增量文件大于1M,則放棄對應的增量路徑。
b2)如果生成的一個增量文件的大小與當前發布版本的發布包的大小的比值,大于第二預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑。例如,第二預設閾值可以設置50%,如果新版本全量發布時8M,則增量文件不能超過4M。
b3)如果一條增量升級路徑上增量文件的大小總和,大于當前發布版本的發布包的大小,則從增量升級列表中刪除該增量升級路徑。即如果增量升級所需要下載的增量文件大小已經大于新版本發布包的大小的話,增量升級已經沒有意義了。
上述幾種增量升級路徑過濾方法都是為了避免增量升級反而比全量升級 還要費流量的情況。
圖9示出了根據本發明一個實施例的一種文件的升級發布方法的流程圖。如圖9所示,以指定的某個文件的各版本發布為例,該方法包括:
步驟S901,導入當前發布版本的發布包。
步驟S902,判斷是否為初始版本,是則執行步驟S903,否則執行步驟S904。
步驟S903,得到全量發布用的結果。執行步驟S911。
步驟S904,判斷是否需要使用全量發布,是則執行步驟S903,否則執行步驟S905。
本步驟中具體判斷是否需要使用全量發布包括如下中的一種或多種情況:
a1)如果當前發布版本的發布包是已下線版本的重新導入包,則確定需要使用全量發布。這種情況是指當前發布版本并不是最新版本,而是之前已發布但又下線版本在進行漏洞修復后的重新導入包。此時只能全量發布。因為之前已經生成了增量文件,先后兩個版本的差異會導致增量文件不一樣,會導致該版本之后的版本都會出現文件,所以必須全量發布。
a2)如果該指定文件未開啟增量升級發布,則確定需要使用全量發布。發布平臺會提供“增量控制”選擇項,只有選擇了該項的文件才進行增量發布,如果沒有選擇則進行全量發布。這可以讓用戶自主選擇是否進行增量發布。
a3)如果當前發布版本所支持的操作系統位數與之前已發布版本所支持的操作系統位數不同,則確定使用全量發布。一般會操作系統會有32位和64位,如Windows系統。如果發一個版本只能支持32位,那么只能和之前已發布的支持32位的版本生成增量文件。
步驟S905,根據預設策略確定一個或多個已發布版本,生成相應的增量文件。例如根據前述的預設增量跳數的方法。
步驟S906,判斷用戶是否自定義勾選了一個或多個已發布版本,是則執行步驟S907,否則執行步驟S208。
步驟S907,生成當前發布版本的發布包與用戶自定義勾選的一個或多個 已發布版本的發布包之間的增量文件。
現實情況中,有一些如下情況的特殊需求:某文件有兩個分支,一些版本只發布beta版(1001、1003、1005等),一些版本只發布正式版(1002、1004、1006),且版本號穿插著,兩個分支的文件差異較大,不能夠按照默認設置1002-1001、1003-1002的形式生成增量,所以提供了自定義勾選增量生成的功能。自定義勾選增量的意義:可以自定義任意低版本到目標版本直接生成diff,首先它解決了更復雜版本之間升級,其次解決了增量跳數限制的問題,也能實際滿足生產情況下的需求。
步驟S908,生成增量升級列表。
步驟S909,優化增量升級列表中的增量升級路徑。
本步驟中根據前述的b1、b2、b3中所述的方法進行優化。
步驟S910,得到增量發布用的結果。
步驟S911,進行測試驗證。
步驟S912,判斷測試驗證是否通過,是則執行步驟S914,否則執行步驟S913。
步驟S913,進行回退處理,返回步驟S901。
步驟S914,進行增量或全量發布。
綜上可以看出,本發明中的升級發布方法,減少了各個版本之間增量的冗余性,可以重復利用生成的增量文件,減少生成的增量文件的大小,節省磁盤空間和帶寬,減少計算的復雜度,更方便管理與維護。
圖10示出了根據本發明一個實施例的一種文件的增量升級發布裝置的結構圖。如圖10所示,該文件的增量升級發布裝置1000包括:
設置單元1010,適于將指定文件的各級版本按照先后順序從0開始進行整數編號;以及適于預設一個或多個增量跳數;
增量預處理單元1020,適于每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本;
增量生成單元1030,適于生成該新版本的發布包與增量預處理單元所找 到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表;
增量發布單元1040,適于發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。
在本發明的一個實施例中,所述增量生成單元1030,適于通過調用增量文件生成工具,生成該新版本的發布包與增量預處理單元所找到的各已發布版本的發布包之間的增量文件。
在本發明的一個實施例中,所述設置單元1010,進一步適于將指定文件的編號為0的版本設置為起始版本;
所述增量生成單元生成的所述增量升級列表中的增量升級路徑包括:從起始版本開始的所有版本升級到該新版本的增量升級路徑;。
在本發明的一個實施例中,所述增量生成單元生1030成的增量升級列表中的每條增量升級路徑包括:從對應的版本升級到該新版本所需經過的版本,以及對應所需的增量文件信息;
所述增量文件信息包括:增量文件的下載地址,或者從指定地址下載增量文件的MD5值。
在本發明的一個實施例中,所述增量生成單元1030生成的增量升級列表中的每條升級路徑均為,從升級開始版本升級到該新版本時,所需增量文件個數最少的路徑。
在本發明的一個實施例中,所述設置單元1010,進一步適于將指定文件的編號為X的版本設置為起始版本;
其中,X=M*最大增量跳數;M為自然數且M=1,…,N-1;
N為將從編號為0的版本到該新版本的路徑,按照最大增量跳數切割后得到的塊的數量。
在本發明的一個實施例中,所述設置單元1010預設的所述一個或多個增量跳數中至少包括1。
在本發明的一個實施例中,所述增量生成單元1030,在生成包含增量升級路徑的增量升級列表之后,進一步適于執行如下中的一項或多項:
如果生成的一個增量文件的大小,大于第一預設閾值,則從增量升級列 表中刪除包含該增量文件的增量升級路徑;
如果生成的一個增量文件的大小與當前發布版本的發布包的大小的比值,大于第二預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果一條增量升級路徑上增量文件的大小總和,大于當前發布版本的發布包的大小,則從增量升級列表中刪除該增量升級路徑。
前述方法實施例中所述的各類技術方案都適用于圖10所示的裝置中,這里不再一一復述。
綜上所述,本發明的這種根據實際情況選擇全量發布或增量發布,且在增量發布時只生成當前發布版本的發布包與所確定的一個或多個已發布版本的發布包之間的增量文件,發布所生成的增量文件,以及將增量升級列表下發到供客戶端進行增量升級的配置文件中的技術方案,解決了全部版本以全量發布時的流量耗費問題,并且每次增量發布時選擇性地生成當前發布版本的發布包與一個或多個已發布版本的發布包之間的增量文件,而不是生成當前發布版本的發布包與所有已發布版本的發布包之間的增量文件,進一步減少了文件升級所需的資源。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設備固有相關。各種通用裝置也可以與基于在此的示教一起使用。根據上面的描述,構造這類裝置所要求的結構是顯而易見的。此外,本發明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發明的內容,并且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求 中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP)來實現根據本發明實施例的增量升級發布裝置中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實 施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
本發明公開了A1、一種文件的增量升級發布方法,其中,該方法包括:
將指定文件的各級版本按照先后順序從0開始進行整數編號;
預設一個或多個增量跳數;
每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本;
生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文件生成包含增量升級路徑的增量升級列表;
發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。
A2、如A1所述的方法,其中,生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件包括:
通過調用增量文件生成工具,生成該新版本的發布包與所找到的各已發布版本的發布包之間的增量文件。
A3、如A1所述的方法,其中,該方法進一步包括:將指定文件的編號為0的版本設置為起始版本;
所述增量升級列表中的增量升級路徑包括:從起始版本開始的所有版本升級到該新版本的增量升級路徑;。
A4、如A3所述的方法,其中,
增量升級列表中的每條增量升級路徑包括:從對應的版本升級到該新版本所需經過的版本,以及對應所需的增量文件信息;
所述增量文件信息包括:增量文件的下載地址,或者從指定地址下載增量文件的MD5值。
A5、如A3所述的方法,其中,
每條升級路徑均為從升級開始版本升級到該新版本時,所需增量文件個數最少的路徑。
A6、如A3所述的方法,其中,該方法進一步包括:
將指定文件的編號為X的版本設置為起始版本;
其中,X=M*最大增量跳數;M為自然數且M=1,…,N-1;
N為將從編號為0的版本到該新版本的路徑,按照最大增量跳數切割后得到的塊的數量。
A7、如A1所述的方法,其中,所述一個或多個增量跳數中至少包括1。
A8、如A1所述的方法,其中,在生成包含增量升級路徑的增量升級列表之后,并在將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中之前,該方法進一步包括如下中的一項或多項:
如果生成的一個增量文件的大小,大于第一預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果生成的一個增量文件的大小與當前發布版本的發布包的大小的比值,大于第二預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果一條增量升級路徑上增量文件的大小總和,大于當前發布版本的發布包的大小,則從增量升級列表中刪除該增量升級路徑。
本發明還公開了B9、一種文件的增量升級發布裝置,其中,該裝置包括:
設置單元,適于將指定文件的各級版本按照先后順序從0開始進行整數編號;以及適于預設一個或多個增量跳數;
增量預處理單元,適于每當發布該指定文件的一個新版本時,用每個增量跳數除以該新版本的編號,如果能夠整除,則找到版本編號比該新版本的編號低該增量跳數的已發布版本;
增量生成單元,適于生成該新版本的發布包與增量預處理單元所找到的各已發布版本的發布包之間的增量文件,并根據當前以及之前生成的增量文 件生成包含增量升級路徑的增量升級列表;
增量發布單元,適于發布所生成的增量文件,將所生成的增量升級列表下發到供客戶端進行增量升級的配置文件中。
B10、如B9所述的裝置,其中,
所述增量生成單元,適于通過調用增量文件生成工具,生成該新版本的發布包與增量預處理單元所找到的各已發布版本的發布包之間的增量文件。
B11、如B9所述的裝置,其中,
所述設置單元,進一步適于將指定文件的編號為0的版本設置為起始版本;
所述增量生成單元生成的所述增量升級列表中的增量升級路徑包括:從起始版本開始的所有版本升級到該新版本的增量升級路徑;。
B12、如B11所述的裝置,其中,
所述增量生成單元生成的增量升級列表中的每條增量升級路徑包括:從對應的版本升級到該新版本所需經過的版本,以及對應所需的增量文件信息;
所述增量文件信息包括:增量文件的下載地址,或者從指定地址下載增量文件的MD5值。
B13、如B11所述的裝置,其中,
所述增量生成單元生成的增量升級列表中的每條升級路徑均為,從升級開始版本升級到該新版本時,所需增量文件個數最少的路徑。
B14、如B11所述的裝置,其中,
所述設置單元,進一步適于將指定文件的編號為X的版本設置為起始版本;
其中,X=M*最大增量跳數;M為自然數且M=1,…,N-1;
N為將從編號為0的版本到該新版本的路徑,按照最大增量跳數切割后得到的塊的數量。
B15、如B9所述的裝置,其中,
所述設置單元預設的所述一個或多個增量跳數中至少包括1。
B16、如B9所述的裝置,其中,所述增量生成單元,在生成包含增量升級路徑的增量升級列表之后,進一步適于執行如下中的一項或多項:
如果生成的一個增量文件的大小,大于第一預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果生成的一個增量文件的大小與當前發布版本的發布包的大小的比值,大于第二預設閾值,則從增量升級列表中刪除包含該增量文件的增量升級路徑;
如果一條增量升級路徑上增量文件的大小總和,大于當前發布版本的發布包的大小,則從增量升級列表中刪除該增量升級路徑。

關 鍵 詞:
一種 文件 增量 升級 發布 方法 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種文件的增量升級發布方法和裝置.pdf
鏈接地址:http://www.rgyfuv.icu/p-6353558.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图