用于主機集群的應用程序更新方法、裝置及服務器設備的制造方法
【專利摘要】本發明實施例提供一種用于主機集群的應用程序更新方法、裝置及服務器設備,所述方法包括:獲取應用程序更新包;從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機;將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。采用本發明實施例的技術方案,在對多個應用程序相同的容器進行應用程序的更新時,從多個容器中選擇最優容器,并對最優容器內容更新前后的主機運行狀態進行監控,進而判斷新版本應用程序是否有問題,從而保證容器內應用程序更新的安全性和可靠性。
【專利說明】
用于主機集群的應用程序更新方法、裝置及服務器設備
技術領域
[0001]本發明涉及網絡通信領域,尤其涉及一種用于主機集群的應用程序更新方法、裝置及服務器設備。
【背景技術】
[0002]容器是指應用代碼的運行框架,容器一般位于應用服務器之內,由應用服務器負責加載和維護。一個容器只能存在于一個應用服務器之內,一個應用服務器可以建立和維護多個容器。容器內的應用程序需要更新的時候,如果新版本的應用程序有問題,更新后將導致該容器不可用,使得訪問該容器的用戶將不能使用對應的應用程序。
【發明內容】
[0003]本發明的目的在于提供一種用于主機集群的應用程序更新方法、裝置及服務器設備,保證容器內應用程序更新的安全性和可靠性。
[0004]根據本發明的一方面,提供一種用于主機集群的應用程序更新方法,所述方法包括:獲取應用程序更新包;從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機;將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。
[0005]根據本發明的另一方面,還提供一種用于主機集群的應用程序更新裝置,所述裝置包括:獲取單元,用于獲取應用程序更新包;選擇單元,用于從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機;更新單元,用于將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。
[0006]根據本發明的另一方面,還提供一種服務器設備,所述服務器設備包括:存儲器,用于存放程序;處理器,用于執行所述存儲器存儲的程序,所述程序使得所述處理器執行如前所述的用于主機集群的應用程序更新方法的指令。
[0007]采用本發明實施例的技術方案,在對多個應用程序相同的容器進行應用程序的更新時,為了避免新版本的應用程序有問題,更新后將導致該容器不可用,使得訪問該容器的用戶將不能使用對應的應用程序的情況,從多個容器中選擇最優容器,并對最優容器內容更新前后的主機運行狀態進行監控,進而判斷新版本應用程序是否有問題,從而保證容器內應用程序更新的安全性和可靠性。
【附圖說明】
[0008]圖1示出本發明實施例一中一種主機集群的結構示意圖;
[0009]圖2示出本發明實施例一中一種用于主機集群的應用程序更新方法的流程示意圖;
[0010]圖3示出本發明實施例三中一種用于主機集群的應用程序更新裝置的結構示意圖;
[0011]圖4示出本發明實施例四提供的一種服務器設備400的結構示意圖。
【具體實施方式】
[0012]下面結合附圖(若干附圖中相同的標號表示相同的元素)和實施例,對本申請的【具體實施方式】作進一步詳細說明。以下實施例用于說明本申請,但不用來限制本申請的范圍。
[0013]本領域技術人員可以理解,本申請中的“第一”、“第二”等術語僅用于區別不同步驟、設備或模塊等,既不代表任何特定技術含義,也不表示它們之間的必然邏輯順序。
[0014]本領域技術人員可以理解,在本申請【具體實施方式】的方法中,各步驟的序號大小并不意味著執行順序的先后,各步驟的執行順序應以其功能和內在邏輯確定,而不應對本申請【具體實施方式】的實施過程構成任何限定。
[0015]實施例一
[0016]圖1示出本發明實施例一中一種主機集群的結構示意圖。本實施例提出的用于主機集群的應用程序更新方法可以在應用服務器上執行。參見圖1,應用服務器110管理多個主機集群120,任一主機集群120中包括多臺主機130。
[0017]圖2示出本發明實施例一中一種用于主機集群的應用程序更新方法的流程示意圖。參見圖2,本實施例中的一種用于主機集群的應用程序更新方法包括S210、S220和S230。
[0018]在S210,獲取應用程序更新包。
[0019]可選地,從應用程序編輯裝置中獲取應用程序包更新包,或者從其他服務器上獲取應用程序包更新包等等。應用程序編輯裝置作為編輯應用程序包更新包的執行主體,可以以軟件、硬件或軟硬件結合的方式設置在用戶設備中,或者,所述應用程序編輯裝置本身就是所述用戶設備;所述用戶設備包括但不限于智能手機、個人計算機設備等。
[0020]應用程序包與特定的應用領域有關,又可分為通用包及專用包兩類。通用包根據一些共同需求開發,專用包則是根據用戶的具體需求定制的,可以為適合其特殊需要進行修改或變更。
[0021]在S220,從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機。
[0022]運行環境參數包中包括調用應用程序的環境變量等參數。對于容器而言,容器為置于容器中的應用程序提供運行環境,容器提供環境接口,通過容器與外部的設備的交互減輕容器中的應用程序的負擔。容器可以包括但不限于Linux容器LXC、Docker、Rocket等等。其中,Docker容器用于給處于其中的應用程序組件提供一個運行時環境,使容器內的應用程序直接與容器中的環境變量接口交互,不必關注其它系統問題;Docker容器用于提供給運行在其中的應用程序提供管理功能,置于該容器內的應用程序可以通過現成的接口來獲得系統級別的服務。
[0023]其中,所述從主機集群當中設有運行所述應用程序的容器的主機中選擇運行狀態最優的第一主機的處理包括:按照所述從主機集群當中設有運行所述應用程序的容器的主機中各主機的第二運行狀態信息計算各主機對應的性能比例;從所述性能比例大于等于運行狀態閾值的主機中查找性能比例最大的第一主機。
[0024]第二運行狀態信息包括內存占用量和/或中央處理器(Central ProcessingUnit,CPU)占用量。其中,內存占用量是指當前內存的使用率,例如一臺主機的總內存3.98GB、當前已使用內存2.9GB、當前可使用內存1.08GB,內存占用量為72%;CPU占用量是指當前CPU的使用率,例如,一臺主機的處理器為Intel (R)Core (TM) i3-1210M CPUi2.1GHz,操作系統為Windows 7 Ultimate Edit1n Service Pack I (build 7601) ,64-bit, 當前CPU占用量為12% ;進一步地,運行狀態信息還可以包括CPU溫度,例如,一臺主機的當前顯卡溫度為33°C,當前主板溫度為43°C,當前CPU溫度為46°C。
[0025]可選地,對于主機集群中設有運行所述應用程序的容器的主機中任一主機,用100%減去CPU占用量作為該主機的性能比例,先將任一主機的性能比例分別與運行狀態閾值比較,得到性能比例大于等于運行狀態閾值的主機;再將性能比例大于等于運行狀態閾值的主機的性能比例從大到小進行排序,選擇排序第一的主機作為第一主機。或者,對于主機集群中設有運行所述應用程序的容器的主機中任一主機,用100%減去內存占用量作為該主機的性能比例,先將任一主機的性能比例分別與運行狀態閾值比較,得到性能比例大于等于運行狀態閾值的主機;再將性能比例大于等于運行狀態閾值的主機的性能比例從大到小進行排序,選擇排序第一的主機作為第一主機。或者,對于主機集群中設有運行所述應用程序的容器的主機中任一主機,用100%減去CPU占用量與內存占用量的加權和作為該主機的性能比例,先將任一主機的性能比例分別與運行狀態閾值比較,得到性能比例大于等于運行狀態閾值的主機;再將性能比例大于等于運行狀態閾值的主機的性能比例從大到小進行排序,選擇排序第一的主機作為第一主機。
[0026]在S230,將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。
[0027]具體的,所述應用程序更新包替換所述第一主機上所述容器中的應用程序的處理包括:獲取所述第一主機上所述容器對應的應用程序,并向所述第一主機發送刪除所述應用程序的命令;向所述第一主機發送所述應用程序更新包。第一主機接收到刪除所述應用程序的命令之后,將該應用程序備份到應用服務器,或者備份到其他服務器或者備份到其他終端設備上,并刪除本地容器中的應用程序。
[0028]具體地,所述根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包的處理包括:當所述容器運行所述應用程序更新包后,獲取所述第一主機的第一運行狀態信息;如果所述第一運行狀態信息出現異常,則向所述第一主機發送刪除所述應用程序更新包的命令,并向所述第一主機發送所述應用程序。
[0029]可選地,如果所述第一運行狀態信息未出現異常,則確定所述應用程序更新包正常,在第一主機上包括所述應用程序更新包。
[0030]進一步地,如果所述第一運行狀態信息未出現異常,則向所述主機集群當中設有運行應用程序的容器的其他主機發送所述應用程序更新包。
[0031]可選地,所述第一運行狀態信息包括內存占用量和/或CPU占用量。相應地,所述第一運行狀態信息出現異常是指所述內存占用量大于內存運行閾值(內存運行閾值可以根據容器中應用程序的類型確定,例如設定內存運行閾值為70%)和/或所述CPU占用量大于CPU運行閾值(CHJ運行閾值可以根據容器中應用程序的類型確定,例如設定CTU運行閾值為60%)。可以設定第一主機的內存占用量大于內存運行閾值時即表示第一運行狀態信息出現異常,或者設定第一主機的CPU占用量大于CPU運行閾值即表示第一運行狀態信息出現異常,或者設定第一主機的內存占用量大于內存運行閾值且第一主機的CPU占用量大于CPU運行閾值兩個條件同時滿足時即表示第一運行狀態信息出現異常。
[0032]采用本發明實施例的技術方案,在對多個應用程序相同的容器進行應用程序的更新時,為了避免新版本的應用程序有問題,更新后將導致該容器不可用,使得訪問該容器的用戶將不能使用對應的應用程序的情況,從多個容器中選擇最優容器,并對最優容器內容更新前后的主機運行狀態進行監控,進而判斷新版本應用程序是否有問題,從而保證容器內應用程序更新的安全性和可靠性。
[0033]實施例二
[0034]圖3示出本發明實施例二中一種用于主機集群的應用程序更新裝置的結構示意圖。
[0035]本實施例提供的一種用于主機集群的應用程序更新裝置用于執行實施例一中的任一種用于主機集群的應用程序更新方法。參見圖3,本實施例中的一種用于主機集群的應用程序更新裝置包括獲取單元310、選擇單元320和更新單元330。
[0036]獲取單元310用于獲取應用程序更新包。
[0037]選擇單元320用于從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機。
[0038]更新單元330用于將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。
[0039]進一步地,所述更新單元具體用于獲取所述第一主機上所述容器對應的應用程序,并向所述第一主機發送刪除所述應用程序的命令;向所述第一主機發送所述應用程序更新包。
[0040]進一步地,所述更新單元具體用于當所述容器運行所述應用程序更新包后,獲取所述第一主機的第一運行狀態信息;如果所述第一運行狀態信息出現異常,則向所述第一主機發送刪除所述應用程序更新包的命令,并向所述第一主機發送所述應用程序。
[0041]進一步地,所述更新單元還用于如果所述第一運行狀態信息未出現異常,則確定所述應用程序更新包正常。
[0042]進一步地,所述更新單元還用于如果所述第一運行狀態信息未出現異常,則向所述主機集群當中設有運行應用程序的容器的其他主機發送所述應用程序更新包。
[0043]進一步地,所述第一運行狀態信息包括內存占用量和/或CPU占用量。
[0044]進一步地,所述第一運行狀態信息出現異常是指所述內存占用量大于內存運行閾值和/或所述CHJ占用量大于CPU運行閾值。
[0045]進一步地,所述選擇單元具體用于按照所述從主機集群當中設有運行所述應用程序的容器的主機中各主機的第二運行狀態信息計算各主機對應的性能比例;從所述性能比例大于等于運行狀態閾值的主機中查找性能比例最大的第一主機。
[0046]采用本發明實施例的技術方案,在對多個應用程序相同的容器進行應用程序的更新時,為了避免新版本的應用程序有問題,更新后將導致該容器不可用,使得訪問該容器的用戶將不能使用對應的應用程序的情況,從多個容器中選擇最優容器,并對最優容器內容更新前后的主機運行狀態進行監控,進而判斷新版本應用程序是否有問題,從而保證容器內應用程序更新的安全性和可靠性。
[0047]實施例三
[0048]圖4示出本發明實施例三提供的一種服務器設備400的結構示意圖。本申請具體實施例并不對服務器設備400的具體實現做限定。參見圖4,該服務器400可以包括:
[0049]處理器(processor)410、通信接口(Communicat1nsInterface)420、存儲器(memory)430以及通信總線440。其中:
[0050]處理器410、通信接口 420以及存儲器430通過通信總線440完成相互間的通信。
[0051 ]通信接口 420,用于與比如客戶端等的網元通信。
[0052]處理器410,用于執行程序432,具體可以執行上述方法實施例中的相關步驟。
[0053]具體地,程序432可以包括程序代碼,所述程序代碼包括計算機操作指令。
[0054]處理器410可能是一個中央處理器CPU,或者是特定集成電路(Applicat1nSpecific Integrated Circuit,ASIC),或者是被配置成實施本申請實施例的一個或多個集成電路。
[0055]存儲器430,用于存放程序432。存儲器430可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。程序432具體可以用于使得所述服務器設備400執行以下操作:獲取應用程序更新包;從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機;將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。
[0056]程序432中所執行的操作的具體實現可以參見上述實施例中的相應步驟和單元中對應的描述,在此不贅述。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的設備和模塊的具體工作過程,可以參考前述方法實施例中的對應過程描述,在此不再贅述。
[0057]采用本發明實施例的技術方案,在對多個應用程序相同的容器進行應用程序的更新時,為了避免新版本的應用程序有問題,更新后將導致該容器不可用,使得訪問該容器的用戶將不能使用對應的應用程序的情況,從多個容器中選擇最優容器,并對最優容器內容更新前后的主機運行狀態進行監控,進而判斷新版本應用程序是否有問題,從而保證容器內應用程序更新的安全性和可靠性。
[0058]需要指出,根據實施的需要,可將本申請中描述的各個部件/步驟拆分為更多部件/步驟,也可將兩個或多個部件/步驟或者部件/步驟的部分操作組合成新的部件/步驟,以實現本發明的目的。
[0059]上述根據本發明的方法可在硬件、固件中實現,或者被實現為可存儲在記錄介質(諸如CD R0M、RAM、軟盤、硬盤或磁光盤)中的軟件或計算機代碼,或者被實現通過網絡下載的原始存儲在遠程記錄介質或非暫時機器可讀介質中并將被存儲在本地記錄介質中的計算機代碼,從而在此描述的方法可被存儲在使用通用計算機、專用處理器或者可編程或專用硬件(諸如ASIC或FPGA)的記錄介質上的這樣的軟件處理。可以理解,計算機、處理器、微處理器控制器或可編程硬件包括可存儲或接收軟件或計算機代碼的存儲組件(例如,RAM、ROM、閃存等),當所述軟件或計算機代碼被計算機、處理器或硬件訪問且執行時,實現在此描述的處理方法。此外,當通用計算機訪問用于實現在此示出的處理的代碼時,代碼的執行將通用計算機轉換為用于執行在此示出的處理的專用計算機。
[0060]以上所述,僅為本發明的【具體實施方式】,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。
【主權項】
1.一種用于主機集群的應用程序更新方法,所述方法包括: 獲取應用程序更新包; 從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機; 將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。2.根據權利要求1所述的方法,其中,所述應用程序更新包替換所述第一主機上所述容器中的應用程序的處理包括: 獲取所述第一主機上所述容器對應的應用程序,并向所述第一主機發送刪除所述應用程序的命令; 向所述第一主機發送所述應用程序更新包。3.根據權利要求2所述的方法,其中,所述根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包的處理包括: 當所述容器運行所述應用程序更新包后,獲取所述第一主機的第一運行狀態信息; 如果所述第一運行狀態信息出現異常,則向所述第一主機發送刪除所述應用程序更新包的命令,并向所述第一主機發送所述應用程序。4.根據權利要求3所述的方法,其中,所述方法還包括: 如果所述第一運行狀態信息未出現異常,則確定所述應用程序更新包正常。5.根據權利要求4所述的方法,其中,所述方法還包括: 如果所述第一運行狀態信息未出現異常,則向所述主機集群當中設有運行應用程序的容器的其他主機發送所述應用程序更新包。6.根據權利要求5所述的方法,其中,所述第一運行狀態信息包括內存占用量和/SCPU占用量。7.根據權利要求6所述的方法,其中,所述第一運行狀態信息出現異常是指所述內存占用量大于內存運行閾值和/或所述(PU占用量大于CPU運行閾值。8.根據權利要求7所述的方法,其中,所述從主機集群當中設有運行所述應用程序的容器的主機中選擇運行狀態最優的第一主機的處理包括: 按照所述從主機集群當中設有運行所述應用程序的容器的主機中各主機的第二運行狀態信息計算各主機對應的性能比例; 從所述性能比例大于等于運行狀態閾值的主機中查找性能比例最大的第一主機。9.一種用于主機集群的應用程序更新裝置,所述裝置包括: 獲取單元,用于獲取應用程序更新包; 選擇單元,用于從主機集群當中設有運行應用程序的容器的主機中選擇運行狀態最優的第一主機; 更新單元,用于將所述應用程序更新包替換所述第一主機上所述容器中的應用程序后,根據所述第一主機運行是否正常確定在所述第一主機上是否保留所述應用程序更新包。10.根據權利要求9所述的裝置,其中,所述更新單元具體用于獲取所述第一主機上所述容器對應的應用程序,并向所述第一主機發送刪除所述應用程序的命令;向所述第一主機發送所述應用程序更新包。11.根據權利要求10所述的裝置,其中,所述更新單元具體用于當所述容器運行所述應用程序更新包后,獲取所述第一主機的第一運行狀態信息;如果所述第一運行狀態信息出現異常,則向所述第一主機發送刪除所述應用程序更新包的命令,并向所述第一主機發送所述應用程序。12.根據權利要求11所述的裝置,其中,所述更新單元還用于如果所述第一運行狀態信息未出現異常,則確定所述應用程序更新包正常。13.根據權利要求12所述的裝置,其中,所述更新單元還用于如果所述第一運行狀態信息未出現異常,則向所述主機集群當中設有運行應用程序的容器的其他主機發送所述應用程序更新包。14.根據權利要求13所述的裝置,其中,所述第一運行狀態信息包括內存占用量和/或CPU占用量。15.根據權利要求14所述的裝置,其中,所述第一運行狀態信息出現異常是指所述內存占用量大于內存運行閾值和/或所述(PU占用量大于CPU運行閾值。16.根據權利要求15所述的裝置,其中,所述選擇單元具體用于按照所述從主機集群當中設有運行所述應用程序的容器的主機中各主機的第二運行狀態信息計算各主機對應的性能比例;從所述性能比例大于等于運行狀態閾值的主機中查找性能比例最大的第一主機。17.一種服務器設備,所述服務器設備包括: 存儲器,用于存放程序; 處理器,用于執行所述存儲器存儲的程序,所述程序使得所述處理器執行如權利要求1至8任一項所述的用于主機集群的應用程序更新方法的指令。
【文檔編號】G06F9/445GK105975295SQ201610263995
【公開日】2016年9月28日
【申請日】2016年4月25日
【發明人】李昂, 張 杰
【申請人】樂視控股(北京)有限公司, 樂視云計算有限公司