本申請涉及計算機領域,尤其涉及一種組件更新的方法及設備。
背景技術:
現有技術中,采集器包括多個組件模塊并均使用Python語言進行開發,分別為單個組件開發升級模塊導致開發量大、功能重復及可維護性差。在需要對采集器中的組件進行升級時,運維人員會將最新發布的組件復制到采集器中,然后進行手動升級。由于運維人員復制并手動升級需要升級的組件,且在設備多的情況下,運維人員需要多次重復操作,導致運維人員的工作量大;又由于通過運維人員的手動進行復制升級需要升級的組件,導致安裝升級的過程出錯率大;又由于當需要對采集器中的組件進行升級時,運維人員需要知道當前采集器設備的登錄名及其登錄密碼,導致組件升級安全性不可控。
因此,采用現有技術對采集器進行組件升級導致工作量大且出錯率大。
技術實現要素:
本申請的一個目的是提供一種組件更新的方法及設備,解決采用現有技術對采集器進行組件升級導致的工作量大且出錯率大的問題。
根據本申請的一個方面,提供了一種組件更新的方法,該方法包括:
在本地進程管理服務下的包含進程組件的本地組件中增加更新組件;
啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新。
進一步地,上述方法中,所述啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新,包括:
啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件;
基于所述待更新的進程組件,向組件服務器發送組件更新請求;
接收所述組件服務器基于接收的所述組件更新請求,返回的與所述待更新的進程組件對應的最新進程組件;
基于所述最新進程組件對對應的所述待更新的進程組件進行更新。
進一步地,上述方法中,所述基于所述最新進程組件對對應的所述待更新的進程組件進行更新,包括:
將與所述待更新的進程組件對應的所述最新進程組件添加至所述本地組件中,并從所述本地組件中將所述待更新的進程組件刪除。
進一步地,上述方法中,所述啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新之后,還包括:
重啟所述本地進程管理服務,并將與所述待更新的進程組件對應的所述最新進程組件加載至本地內存。
進一步地,上述方法中,所述啟動所述更新組件對所述進程組件進行更新檢查,包括:
基于預設時間間隔,啟動所述更新組件對所述進程組件進行更新檢查。
進一步地,上述方法中,所述進程組件包括至少一個。
根據本申請的另一方面,還提供了一種組件更新的設備,該設備包括:
組件裝置,用于在本地進程管理服務下的包含進程組件的本地組件中增加更新組件;
更新裝置,用于啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新。
進一步地,上述設備中,所述更新裝置用于:
啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件;
基于所述待更新的進程組件,向組件服務器發送組件更新請求;
接收所述組件服務器基于接收的所述組件更新請求,返回的與所述待更新的進程組件對應的最新進程組件;
基于所述最新進程組件對對應的所述待更新的進程組件進行更新。
進一步地,上述設備中,所述更新裝置用于:
將與所述待更新的進程組件對應的所述最新進程組件添加至所述本地組件中,并從所述本地組件中將所述待更新的進程組件刪除。
進一步地,上述設備中,所述更新裝置還用于:
重啟所述本地進程管理服務,并將與所述待更新的進程組件對應的所述最新進程組件加載至本地內存。
進一步地,上述設備中,所述更新裝置用于:
基于預設時間間隔,啟動所述更新組件對所述進程組件進行更新檢查。
進一步地,上述設備中,所述進程組件包括至少一個。
與現有技術相比,本申請通過在本地進程管理服務下的包含進程組件的本地組件中增加更新組件,通過該更新組件來對本地組件中的進程組件進行統一管理;啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并通過啟動的該進程組件對所述待更新的進程組件進行更新,不僅減少了對本地組件中的進程組件進行升級的工作量,還減少了在對進程組件進行升級過程中的出錯率。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優點將會變得更明顯:
圖1示出根據本申請一個方面的一種組件更新的方法的流程圖;
圖2示出根據本申請一個方面的一種組件更新的方法的更新過程流程圖;
圖3示出根據本申請一個方面的一種組件更新的設備的結構示意圖。
附圖中相同或相似的附圖標記代表相同或相似的部件。
具體實施方式
下面結合附圖對本申請作進一步詳細描述。
在本申請一個典型的配置中,終端、服務網絡的設備和可信方均包括一個或多個處理器(CPU)、輸入/輸出接口、網絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態隨機存取存儲器(SRAM)、動態隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitory media),如調制的數據信號和載波。
圖1示出根據本申請一個方面的一種組件更新的方法的流程圖,應用于智能設備環境中的采集器端,該方法包括步驟S11和步驟S12,其中,
所述步驟S11,在本地進程管理服務(supervisor)下的包含進程組件的本地組件中增加更新組件(wizbusUpdater),通過該更新組件來對本地組件中的進程組件進行統一管理;所述步驟S12,啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新,不僅減少了對本地組件中的進程組件進行升級的工作量,還減少了在對進程組件進行升級過程中的出錯率。
進一步地,所述進程組件包括至少一個。例如,在所述步驟S11中,在本地進程管理服務(supervisor)下的包含進程組件的本地組件中增加更新組件(wizbusUpdater),通過該更新組件來對本地組件中的所有的進程組件{組件1、組件2、……、組件N}進行統一管理和監視;接著,在所述步驟S12中啟動所述更新組件(wizbusUpdater)來檢查本地組件中的所有所述進程組件{組件1、組件2、……、組件N}是否有需要進行更新升級的,以過濾掉所有進程組件中的不需要進行更新升級的組件,以避免在對進程組件進行更新升級時對不需要更新升級的進程組件進行重復更新,當檢測到需要進行更新升級的待更新的進程組件{組件3、組件6、組件7和組件18}時,通過所述更新組件(wizbusUpdater),對更新檢測得到的所述待更新的進程組件{組件3、組件6、組件7和組件18}進行統一更新升級,不僅減少了對本地組件中的進程組件進行升級的工作量,還減少了在對進程組件進行升級過程中的出錯率。
本申請一實施例中,所述步驟S12啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新,包括:
啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件;
基于所述待更新的進程組件,向組件服務器發送組件更新請求;
接收所述組件服務器基于接收的所述組件更新請求,返回的與所述待更新的進程組件對應的最新進程組件;
基于所述最新進程組件對對應的所述待更新的進程組件進行更新。
需要說明的是,所述組件服務器通過包管理工具(pypiserver)搭建而成,為智能設備環境中的采集器提供進程組件的更新升級的公網。當然,其他現有的或今后可能出現的用于搭建所述組件服務器的方法如可適用于本申請,也應包含在本申請保護范圍以內,并在此以引用方式包含于此。
本申請一實施例中,如圖2所示,在本地進程管理服務(supervisor)下的包含進程組件的本地組件中增加更新組件(wizbusUpdater)之后,首先會啟動所述更新組件對所有的所述進程組件{組件1、組件2、……、組件N}進行更新檢查,檢查是否有進程組件需要更新,得到需要進行更新升級的待更新的進程組件{組件3、組件6、組件7和組件18};接著,基于所述待更新的進程組件{組件3、組件6、組件7和組件18},向公網中的組件服務器(通過包管理工具(pypiserver)搭建而成的)發送組件更新請求,該組件更新請求中攜帶有當前采集器設備信息和待更新的進程組件,以便公網中的組件服務器接收到所述組件更新請求之后,向對應的當前采集器發送所述待更新的進程組件;緊接著,所述步驟S22接收所述組件服務器基于接收的所述組件更新請求,返回的與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的最新進程組件;然后,基于獲取的與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的所述最新進程組件,對對應的所述待更新的進程組件與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的進行更新,實現了基于從公網中的獲取的最新進程組件,對本地組件中的進程組件進行統一自動更新升級,不僅避免現有技術需要對采集器中的本地組件中的進程組件進行更新升級需要登錄采集器設備,還減少了更新升級的工作量和更新升級過程中的出錯率。
本申請一實施例中,所述步驟S12中的基于所述最新進程組件對對應的所述待更新的進程組件進行更新,包括:
將與所述待更新的進程組件對應的所述最新進程組件添加至所述本地組件中,并從所述本地組件中將所述待更新的進程組件刪除。
例如,所述步驟S12在對需要進行更新升級的所述待更新的進程組件{組件3、組件6、組件7和組件18}進程更新升級時,將與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的所述最新進程組件添加至所述本地組件中,并從所述本地組件中將更新升級之前的上述待更新的進程組件刪除,得到更新升級后的所述本地組件{組件1、組件2、更新后的組件3、……、更新后的組件6、更新后的組件7、……、更新后的組件18、……、組件N},實現對本地組件中的需要更新升級的所述待更新的進程組件{組件3、組件6、組件7和組件18}的統一更新升級。
本申請一實施例中,所述步驟S12啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新之后,還包括:
重啟所述本地進程管理服務,并將與所述待更新的進程組件對應的所述最新進程組件加載至本地內存。
本申請一實施例中,如圖2所示,在啟動所述更新組件(wizbusUpdater)對所有的所述進程組件{組件1、組件2、……、組件N}進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新之后,還重新啟動所述本地進程管理服務(supervisor),以將與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的所述最新進程組件加載至本地內存,進而完成對所述待更新的進程組件{組件3、組件6、組件7和組件18}的更新升級。
下面以在python運行環境中的關鍵代碼的形式,對所述步驟S12啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新進行詳細解釋。
def update():
//設置程序運行上下文(設置python運行環境)
with virtualenv('/root/.virtualenvs/%s'%env.virtualenv):
//連接本地進程管理服務supervisor
server=xmlrpclib.Server('http://%s:%s@127.0.0.1:9001/RPC2'%(env.supervi sor_name,env.supervisor_passwd))
//獲取supervisor管理監視的所有進程組
subassembly=server.supervisor.getAllProcessInfo()
//對已獲取的進程組中的進程分別查找進程所屬的進程組件的組件名稱
apps=[s['name']for s in subassembly if'name'in s]
//循環開始
for app in apps:
//排除不需要更新升級的進程組件,以得到需要更新升級的待更新的進程組件
if app not in UPGRADE_EXCLUDE:
//基于從公網獲取的所述待更新的進程組件對應的最新進程組件,開始對所有所述待更新的進程組件進行組件更新升級
run("pip install%s--upgrade-i%s--trusted-host=%s"%(app,env.wizpypi,env.wizpypi_host))
//通過wizbusupdater自動對所有帶更新的進程組件進行自升級
run("pip install wizbusupdater--upgrade-i%s--trusted-host=%s"%(env.wizpypi,env.wizpypi_host))
//重啟本地進程管理服務(supervisor)
run("supervisorctl reload")
本申請一實施例中,所述步驟S12中的啟動所述更新組件對所述進程組件進行更新檢查,包括:
基于預設時間間隔,啟動所述更新組件對所述進程組件進行更新檢查。
本申請一實施例中,所述步驟S12可以是周期性地基于預設時間間隔T,來啟動所述更新組件(wizbusUpdater)對所有的上述進程組件{組件1、組件2、……、組件N}進行更新檢查;亦可以是按照非周期性地預設時間間隔{△T1、△T2、△T2、……、△Tn},來啟動所述更新組件(wizbusUpdater)對所有的上述進程組件{組件1、組件2、……、組件N}進行更新檢查,進而實現對本地組件中的需要進行更新升級的進程組件進行相應地更新升級。
圖3示出根據本申請一個方面的一種組件更新的設備的結構示意圖,應用于智能設備環境中的采集器端,該設備包括組件裝置11和更新裝置12,其中,
所述組件裝置11,用于在本地進程管理服務(supervisor)下的包含進程組件的本地組件中增加更新組件(wizbusUpdater),通過該更新組件來對本地組件中的進程組件進行統一管理;所述更新裝置12,用于啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新,不僅減少了對本地組件中的進程組件進行升級的工作量,還減少了在對進程組件進行升級過程中的出錯率。
進一步地,所述進程組件包括至少一個。例如,在所述組件裝置11中,在本地進程管理服務(supervisor)下的包含進程組件的本地組件中增加更新組件(wizbusUpdater),通過該更新組件來對本地組件中的所有的進程組件{組件1、組件2、……、組件N}進行統一管理和監視;接著,在所述更新裝置12中啟動所述更新組件(wizbusUpdater)來檢查本地組件中的所有所述進程組件{組件1、組件2、……、組件N}是否有需要進行更新升級的,以過濾掉所有進程組件中的不需要進行更新升級的組件,以避免在對進程組件進行更新升級時對不需要更新升級的進程組件進行重復更新,當檢測到需要進行更新升級的待更新的進程組件{組件3、組件6、組件7和組件18}時,通過所述更新組件(wizbusUpdater),對更新檢測得到的所述待更新的進程組件{組件3、組件6、組件7和組件18}進行統一更新升級,不僅減少了對本地組件中的進程組件進行升級的工作量,還減少了在對進程組件進行升級過程中的出錯率。
本申請一實施例中,所述更新裝置12用于:
啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件;
基于所述待更新的進程組件,向組件服務器發送組件更新請求;
接收所述組件服務器基于接收的所述組件更新請求,返回的與所述待更新的進程組件對應的最新進程組件;
基于所述最新進程組件對對應的所述待更新的進程組件進行更新。
需要說明的是,所述組件服務器通過包管理工具(pypiserver)搭建而成,為智能設備環境中的采集器提供進程組件的更新升級的公網。當然,其他現有的或今后可能出現的用于搭建所述組件服務器的方法如可適用于本申請,也應包含在本申請保護范圍以內,并在此以引用方式包含于此。
本申請一實施例中,如圖2所示,在本地進程管理服務(supervisor)下的包含進程組件的本地組件中增加更新組件(wizbusUpdater)之后,首先會啟動所述更新組件對所有的所述進程組件{組件1、組件2、……、組件N}進行更新檢查,檢查是否有進程組件需要更新,得到需要進行更新升級的待更新的進程組件{組件3、組件6、組件7和組件18};接著,基于所述待更新的進程組件{組件3、組件6、組件7和組件18},向公網中的組件服務器(通過包管理工具(pypiserver)搭建而成的)發送組件更新請求,該組件更新請求中攜帶有當前采集器設備信息和待更新的進程組件,以便公網中的組件服務器接收到所述組件更新請求之后,向對應的當前采集器發送所述待更新的進程組件;緊接著,所述步驟S22接收所述組件服務器基于接收的所述組件更新請求,返回的與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的最新進程組件;然后,基于獲取的與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的所述最新進程組件,對對應的所述待更新的進程組件與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的進行更新,實現了基于從公網中的獲取的最新進程組件,對本地組件中的進程組件進行統一自動更新升級,不僅避免現有技術需要對采集器中的本地組件中的進程組件進行更新升級需要登錄采集器設備,還減少了更新升級的工作量和更新升級過程中的出錯率。
本申請一實施例中,所述更新裝置12用于:
將與所述待更新的進程組件對應的所述最新進程組件添加至所述本地組件中,并從所述本地組件中將所述待更新的進程組件刪除。
例如,所述更新裝置12在對需要進行更新升級的所述待更新的進程組件{組件3、組件6、組件7和組件18}進程更新升級時,將與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的所述最新進程組件添加至所述本地組件中,并從所述本地組件中將更新升級之前的上述待更新的進程組件刪除,得到更新升級后的所述本地組件{組件1、組件2、更新后的組件3、……、更新后的組件6、更新后的組件7、……、更新后的組件18、……、組件N},實現對本地組件中的需要更新升級的所述待更新的進程組件{組件3、組件6、組件7和組件18}的統一更新升級。
本申請一實施例中,所述更新裝置12還用于:
重啟所述本地進程管理服務,并將與所述待更新的進程組件對應的所述最新進程組件加載至本地內存。
本申請一實施例中,如圖2所示,在啟動所述更新組件(wizbusUpdater)對所有的所述進程組件{組件1、組件2、……、組件N}進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新之后,還重新啟動所述本地進程管理服務(supervisor),以將與所述待更新的進程組件{組件3、組件6、組件7和組件18}對應的所述最新進程組件加載至本地內存,進而完成對所述待更新的進程組件{組件3、組件6、組件7和組件18}的更新升級。
下面以在python運行環境中的關鍵代碼的形式,對所述更新裝置12啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并對所述待更新的進程組件進行更新進行詳細解釋。
def update():
//設置程序運行上下文(設置python運行環境)
with virtualenv('/root/.virtualenvs/%s'%env.virtualenv):
//連接本地進程管理服務supervisor
server=xmlrpclib.Server('http://%s:%s@127.0.0.1:9001/RPC2'%(env.supervi sor_name,env.supervisor_passwd))
//獲取supervisor管理監視的所有進程組
subassembly=server.supervisor.getAllProcessInfo()
//對已獲取的進程組中的進程分別查找進程所屬的進程組件的組件名稱
apps=[s['name']for s in subassembly if'name'in s]
//循環開始
for app in apps:
//排除不需要更新升級的進程組件,以得到需要更新升級的待更新的進程組件
if app not in UPGRADE_EXCLUDE:
//基于從公網獲取的所述待更新的進程組件對應的最新進程組件,開始對所有所述待更新的進程組件進行組件更新升級
run("pip install%s--upgrade-i%s--trusted-host=%s"%(app,env.wizpypi,env.wizpypi_host))
//通過wizbusupdater自動對所有帶更新的進程組件進行自升級
run("pip install wizbusupdater--upgrade-i%s--trusted-host=%s"%(env.wizpypi,env.wizpypi_host))
//重啟本地進程管理服務(supervisor)
run("supervisorctl reload")
本申請一實施例中,所述更新裝置12用于:
基于預設時間間隔,啟動所述更新組件對所述進程組件進行更新檢查。
本申請一實施例中,所述更新裝置12可以是周期性地基于預設時間間隔T,來啟動所述更新組件(wizbusUpdater)對所有的上述進程組件{組件1、組件2、……、組件N}進行更新檢查;亦可以是按照非周期性地預設時間間隔{△T1、△T2、△T2、……、△Tn},來啟動所述更新組件(wizbusUpdater)對所有的上述進程組件{組件1、組件2、……、組件N}進行更新檢查,進而實現對本地組件中的需要進行更新升級的進程組件進行相應地更新升級。
綜上所述,本申請通過在本地進程管理服務下的包含進程組件的本地組件中增加更新組件,通過該更新組件來對本地組件中的進程組件進行統一管理;啟動所述更新組件對所述進程組件進行更新檢查,得到待更新的進程組件,并通過啟動的該進程組件對所述待更新的進程組件進行更新,不僅減少了對本地組件中的進程組件進行升級的工作量,還減少了在對進程組件進行升級過程中的出錯率。
顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權利要求及其等同技術的范圍之內,則本申請也意圖包含這些改動和變型在內。
需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設備來實現。在一個實施例中,本申請的軟件程序可以通過處理器執行以實現上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關的數據結構)可以被存儲到計算機可讀記錄介質中,例如,RAM存儲器,磁或光驅動器或軟磁盤及類似設備。另外,本申請的一些步驟或功能可采用硬件來實現,例如,作為與處理器配合從而執行各個步驟或功能的電路。
另外,本申請的一部分可被應用為計算機程序產品,例如計算機程序指令,當其被計算機執行時,通過該計算機的操作,可以調用或提供根據本申請的方法和/或技術方案。而調用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質中,和/或通過廣播或其他信號承載媒體中的數據流而被傳輸,和/或被存儲在根據所述程序指令運行的計算機設備的工作存儲器中。在此,根據本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執行程序指令的處理器,其中,當該計算機程序指令被該處理器執行時,觸發該裝置運行基于前述根據本申請的多個實施例的方法和/或技術方案。
對于本領域技術人員而言,顯然本申請不限于上述示范性實施例的細節,而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現本申請。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有變化涵括在本申請內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數不排除復數。裝置權利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。