一種分布式系統中客戶端從伺服器端下載軟體的方法
2023-04-23 02:18:41 1
專利名稱:一種分布式系統中客戶端從伺服器端下載軟體的方法
技術領域:
本發明涉及的是一種軟體下載方法,尤指一種分布式系統中客戶端從伺服器端下載軟體的方法背景技術目前移動通訊領域的基站系統可能由分布在一個城市或地區的很廣範圍內數以百計的基站組成,且為了便於維護、降低維護成本一般採用無人值守的方式,通過網管系統自動化管理。
鑑於降低整個移動通信系統設備成本的考慮,並不是每個功能模塊上都配置有存儲設備。一般在一個子系統的主控制模塊上配備了一片容量較大的存儲設備,用於存放該子系統內所有功能模塊的應用文件,包括版本軟體、硬體邏輯文件和一些配置文件。在實際運行時,主控制模塊可以從本模塊的存儲設備上獲取版本文件運行,而其他受控模塊則需要通過與主控模塊必要的通訊交互來獲取自身的版本軟體運行。
如何將本子系統內所有功能模塊的應用文件從伺服器端下載到於客戶端主控制模塊的存儲設備上,是擺在所有移動通訊廠商面前的一個課題。目前的移動軟體下載普遍採用的方法是,利用客戶端主控制模塊的非易失性的啟動引導存儲器(BOOT)中的上電引導程序與伺服器端的工具軟體通訊,從伺服器端下載所選的應用文件,存放到主控制模塊的存儲設備上。
這種方法的缺陷在於BOOT與伺服器端軟體的通訊接口(即客戶端和伺服器端進行通訊時約定的消息結構,分別駐留在客戶端和伺服器端的軟體中),都固化在BOOT中,如果這些接口發生變化,必須重新更新BOOT中的引導程序,需要由維護人員親自到上百個基站去取下主控模塊,替換其BOOT,這對於分布廣泛,無人職守的移動通信基站設備來說,無疑要耗費大量的人力,物力,增加了維護成本,加大了維護人員的工作量,並且需要在前臺更換單板BOOT,增加了系統的不穩定性。
在申請號為01145382.6的中國專利申請中,描述了一種通信系統中利用單片機實現軟體下載的方法,至少包含下列步驟運行引導程序存儲區內的引導程序;從數據備份區中讀取程序運行參數;將主應用程式移至隨機存儲器RAM的程序運行區;將程序控制權交給應用程式;根據用戶請求進行軟體下載;下載後的軟體包保存至程序參數區;修改程序參數區參數;系統重新啟動。該方法仍將軟體下載的主程序固化在硬體存儲器中,如果主程序中的接口發生變化,需要更新硬體存儲器中的主程序。
其它分布式系統中,客戶端從伺服器端下載軟體時,也存在同樣的問題。
發明內容
有鑑於此,本發明要解決的技術問題是提供一種分布式系統中客戶端從伺服器端下載軟體的方法,在軟體接口變化時,不必到各客戶端去更新設備功能模塊的固化引導程序,提高系統的可維護性和可靠性。
為了解決上述技術問題,本發明提供了一種分布式系統中客戶端從伺服器端下載軟體的方法,包括以下步驟(a)客戶端和伺服器端建立連接後,向伺服器端發送一級下載的握手消息;(b)握手成功,客戶端從伺服器端下載二級軟體下載主程序;(c)運行所述的二級軟體下載主程序,與伺服器端建立連接並發送二級下載的握手消息;(d)握手成功,客戶端接收到伺服器端發來的待下載文件的列表;(e)客戶端根據所述列表中文件的文件名和存放路徑,從伺服器端的FTP伺服器上下載所需的文件;(f)客戶端將下載的文件存放在前臺硬體模塊的存儲設備中,如果下載失敗,向伺服器端發送下載失敗消息;(g)客戶端判斷文件列表中的文件是否全部下載完畢,如果是,執行下一步,否則返回步驟(e)繼續下載;(h)客戶端統計文件的下載結果,並將統計結果通知伺服器端。
為了提高靈活性,所述步驟(a)中客戶端與伺服器端握手時,伺服器端還向客戶端發送二級軟體下載主程序的文件名和存放在伺服器端的路徑名,在所述步驟(b)中客戶端根據上述信息從伺服器端下載所述二級軟體下載主程序。
為了提高下載時的可靠性,所述二級軟體下載程序中較佳設計了一個看門狗程序進行鏈路故障處理,如果出現鏈路中斷,復位客戶端單板,並提醒伺服器端操作人員。
上述方法中,所述客戶端使用文件傳輸協議客戶端命令從伺服器端的文件傳輸協議伺服器端下載所需的文件,為了進一步提高可靠性,還可以採用循環冗餘碼CRC校驗機制。
本發明方法將二級軟體下載主程序BootLoad存放在伺服器端,BootLoad文件的升級完全在伺服器端進行,當伺服器端和客戶端的軟體接口發生變化時,維護人員只需在伺服器端升級BootLoad下載文件即可,不需要到基站處更換通訊設備功能模塊的固化引導程序,從而大大降低了維護的工作量,提高了系統的可維護性、保證系統工作的可靠性和向後兼容性,減少了操作中人為因素的失誤,節省了人力和降低了升級問題造成通訊網絡中斷事故發生率。
圖1是本發明軟體二級下載方法的消息交互示意圖;圖2是本發明實施例軟體二級下載方法的流程圖。
具體實施例方式
在本發明中,客戶端的軟體包括兩個部分,一部分固化在啟動引導存儲器BOOT中,一部分位於二級軟體下載主程序(BootLoad文件)中,存放在伺服器端。固化在BOOT中的代碼完成的功能比較單一,就是發送一級軟體下載請求到伺服器端,請求下載BootLoad文件並加載該文件到RAM中運行,這一部分代碼可以基本不變。客戶端和伺服器端需要通過消息交互完成的絕大部分工作都放在BootLoad文件中,這部分內容可能由於需求變化或增加新的功能需要修改,而本發明的BootLoad文件存放在伺服器端上,如果需要可以隨時升級。
圖1是本發明軟體二級下載方法伺服器端和客戶端之間消息交互的示意圖,在客戶端請求下載之前,伺服器端先要添加好軟體版本和信息文件,包括二級軟體下載主程序BootLoad文件,並運行軟體下載工具軟體,準備好待下載的文件和其他必要參數。
在下載過程中,客戶端程序發送一級軟體下載請求到伺服器端,請求下載二級軟體下載主程序BootLoad文件;從伺服器端成功下載BootLoad文件後,加載這個BootLoad文件到RAM中運行;二級下載主程序繼續發送二級下載消息給伺服器端,請求所需下載文件的列表;伺服器端接收到二級下載請求後,向客戶端發送所需下載文件的列表,客戶端的二級下載主程序BootLoad根據伺服器端發送的文件列表,從伺服器端下載所列文件。由運行在RAM中的下載主程序完成與伺服器端工具軟體的消息交互和軟體下載,是本發明的特點。
下面以移動通訊中,基站側子系統的主控制模塊(前臺)通過通信網絡到操作維護系統的伺服器端(後臺)下載軟體的方法為例,詳細說明本發明。但本發明的軟體二級下載方法完全可用於其他分布式系統中客戶端節點從伺服器端節點下載軟體。
本實施例的系統結構可分為兩部分前臺的軟體下載模塊和與其連接的後臺的軟體下載模塊(以下簡稱後臺),後臺軟體下載模塊屬於軟體操作維護系統的一部分,完成版本的組織、維護、下載、查詢等,並提供人機界面,供用戶使用。圖2所示是本發明實施例軟體二級下載方法的流程圖,包括以下步驟步驟100,前臺BOOT中的軟體下載模塊(以下簡稱前臺)使用套接口通訊與後臺建立連接;步驟110,連接成功,前臺向後臺發送一級下載的握手消息;步驟120,握手成功,前臺接收到後臺軟體下載模塊(以下簡稱後臺)發來的BootLoad文件的文件名和存放在後臺的路徑名;步驟130,前臺根據BootLoad文件的文件名和存放在後臺的路徑名,使用文件傳輸協議FTP客戶端命令從後臺的FTP伺服器端下載所需的BootLoad文件,並運行;
步驟140,由運行的BootLoad文件與後臺建立連接並發送二級下載的握手消息;步驟150,握手成功,前臺接收到後臺發來的待下載文件的列表,包括文件的文件名和存放在後臺的路徑名;步驟160,根據文件的文件名和存放在後臺的路徑名,使用FTP客戶端命令從後臺的FTP伺服器下載所需的文件;步驟170,將下載的文件存放在前臺硬體模塊的存儲設備中,如果下載失敗,向後臺發送下載失敗消息;步驟180,前臺判斷文件列表中的文件是否全部下載完畢,如果是,執行下一步,否則返回步驟160繼續下載。
步驟190,統計各文件的下載結果,並將統計結果通知後臺,顯示給操作人員。
在步驟120中前臺首先從後臺請求了BootLoad文件的文件名和存放在後臺的路徑名,是為了提供更大的靈活性,對於一個BootLoad文件來說,也可以將其名稱和路徑固化在前臺。
為了防止由於鏈路故障導致前後臺通訊過程中產生任務阻塞或死機現象,前臺運行的下載文件中還設計了一個看門狗程序進行鏈路故障處理,如果出現鏈路中斷,看門狗程序可以復位單板,提醒操作人員檢查鏈路故障。
本實施實例中,使用FTP進行版本文件的下載,而FTP又是採用傳輸控制協議TCP作為四層協議的。TCP協議本身有差錯校驗功能,接收端對收到的每一數據片進行校驗無誤之後才會向發送端回應ACK信號。為了進一步提高下載的可靠性,本實施例還採用了循環冗餘碼CRC校驗機制,即在下載前,後臺先計算每個文件的CRC值,CRC值隨下載文件名列表發送到前臺。前臺在FTP下載後,再計算每個文件的CRC值並進行比較,如果CRC值不符,則自動要求FTP重發,如果3次均不成功,則報告該文件校驗失敗。
綜上所述,本發明方法將軟體下載主程序BootLoad存放在伺服器端,而非固化在硬體存儲器上,BOOT首先下載BootLoad到隨機存儲器RAM中運行,再由BootLoad與伺服器端的工具軟體交互下載所需文件。BootLoad文件的升級完全在伺服器端進行,不需要更新硬體存儲器中的程序。使用本發明方法後,當伺服器端和客戶端的軟體接口發生變化時,維護人員只需在伺服器端升級BootLoad下載文件即可,不需要到基站處更換硬體BOOT,從而大大降低了維護的工作量,減少了操作中人為因素的失誤,節省了人力和降低了升級問題造成通訊網絡中斷事故發生率。
權利要求
1.一種分布式系統中客戶端從伺服器端下載軟體的方法,包括以下步驟(a)客戶端和伺服器端建立連接後,向伺服器端發送一級下載的握手消息;(b)握手成功,客戶端從伺服器端下載二級軟體下載主程序;(c)運行所述的二級軟體下載主程序,與伺服器端建立連接並發送二級下載的握手消息;(d)握手成功,客戶端接收到伺服器端發來的待下載文件的列表;(e)客戶端根據所述列表中文件的文件名和存放路徑,從伺服器端的FTP伺服器上下載所需的文件;(f)客戶端將下載的文件存放在前臺硬體模塊的存儲設備中,如果下載失敗,向伺服器端發送下載失敗消息;(g)客戶端判斷文件列表中的文件是否全部下載完畢,如果是,執行下一步,否則返回步驟(e)繼續下載;(h)客戶端統計文件的下載結果,並將統計結果通知伺服器端。
2.如權利要求1所述的下載軟體的方法,其特徵在於,所述步驟(a)中客戶端與伺服器端握手時,伺服器端還向客戶端發送二級軟體下載主程序的文件名和存放在伺服器端的路徑名,在所述步驟(b)中客戶端根據該信息從伺服器端下載所述二級軟體下載主程序。
3.如權利要求1所述的下載軟體的方法,其特徵在於,所述二級軟體下載程序中設計了一個看門狗程序進行鏈路故障處理,如果出現鏈路中斷,復位客戶端單板,並提醒伺服器端操作人員。
4.如權利要求1所述的下載軟體的方法,其特徵在於,所述客戶端使用文件傳輸協議客戶端命令從伺服器端的文件傳輸協議伺服器端下載所需的文件。
5.如權利要求4所述的下載軟體的方法,其特徵在於,所述客戶端下載文件時還採用了循環冗餘碼CRC校驗機制。
全文摘要
本發明涉及一種分布式系統中客戶端從伺服器端下載軟體的方法,將二級軟體下載主程序BootLoad存放在伺服器端,而非固化在客戶端的硬體存儲器上,客戶端首先下載BootLoad到隨機存儲器RAM中運行,再由BootLoad與伺服器端的工具軟體交互下載所需文件。BootLoad文件的升級完全在伺服器端進行,不需要更新硬體存儲器中的程序。使用本發明方法後,當伺服器端和客戶端的軟體接口發生變化時,維護人員不需要到基站處更換硬體BOOT,從而大大降低了維護的工作量,提高了系統的可維護性、保證系統工作的可靠性和向後兼容性。
文檔編號G06F9/30GK1545363SQ20031011363
公開日2004年11月10日 申請日期2003年11月14日 優先權日2003年11月14日
發明者汪康洪, 金昌盛 申請人:中興通訊股份有限公司