鄭成城 柳適
【摘 要】目前,互聯(lián)網(wǎng)的網(wǎng)站及大部分的企業(yè)管理軟件都是采用B/S架構(gòu)模型。大型的網(wǎng)站應(yīng)用對系統(tǒng)的并發(fā)、吞吐量、性能都有較高的要求,因此許多大型網(wǎng)站應(yīng)用都采用了多臺服務(wù)器做負(fù)載均衡的方式來部署。但如果服務(wù)器的數(shù)量較多,會給站點更新帶來很大的不便。為了提高服務(wù)器站點的更新效率,增加更新的準(zhǔn)確性,減輕網(wǎng)站維護(hù)人員的工作量。開發(fā)了一款多站點自動同步更新系統(tǒng)。本文對該系統(tǒng)進(jìn)行了具體的介紹。
【關(guān)鍵詞】自動更新;負(fù)載均衡;網(wǎng)站維護(hù)
【Abstract】At present,the Internets websites and most of the enterprise management software use the B/S architecture model.Large scale web applications have high requirements on the systems concurrency,throughput and performance.So many large web sites are develoyed with multiple servers for load balancing.But number of servers will bring a lot of inconvenience to update the websites.In order to improve the efficiency of the websites updating,increase the accuracy,reduce the workload of websmaster.Design and development a multi site automatic synchronous updating system. The system is introduced in detail in this paper.
【Key words】Automatic update; Load balancing; Website maintenance
0 概述
隨著信息時代的帶來,Internet和Intranet上客戶機數(shù)量以及任務(wù)密集程度的不斷增加。單臺Web服務(wù)器由于受到帶寬、機器性能等因素的限制已經(jīng)無法適應(yīng)當(dāng)前的需求。Web服務(wù)器集群系統(tǒng)可以實現(xiàn)負(fù)載均衡,并且可以大幅度提高系統(tǒng)的性能以及可靠性和擴展性。但隨著Web服務(wù)器集群的普及,新的問題已隨之產(chǎn)生。多臺服務(wù)器的更新不僅要花費管理人員大量的時間,還需要管理員對各臺服務(wù)器的文件拷貝權(quán)限進(jìn)行設(shè)置,并且不能保證拷貝過程中
1 系統(tǒng)的功能需求
(1)需要在網(wǎng)站更新前開啟更新提示,提示用戶保存好手頭工作并退出系統(tǒng);
(2)需要對多個服務(wù)器上的站點文件進(jìn)行刪除及新建操作;
(3)由于網(wǎng)站文件在更新和新建時可能被占用,需要在操作前對多個服務(wù)器上的網(wǎng)站應(yīng)用程序池進(jìn)行回收;
(4)需要對更新的進(jìn)度和完成情況進(jìn)行查看;
(5)更新完成后,關(guān)閉更新提示。
2 方案對比
在使用當(dāng)前方案前,曾經(jīng)試用過其他方案,但是使用效果不理想,最終選擇了當(dāng)前這個方案?,F(xiàn)在對兩種方案進(jìn)行對比。
(1)方案一
通過在服務(wù)器上建立共享文件夾,將發(fā)布好的網(wǎng)站文件放在共享文件夾中。然后,各臺服務(wù)器利用本地的發(fā)布站點從共享文件夾拷貝該文件至本地站點。
問題一:發(fā)布站點在訪問共享文件夾時遇到權(quán)限不足的問題。經(jīng)過查詢資料和網(wǎng)上搜索,需要對.Net用戶設(shè)置較高的權(quán)限。設(shè)置比較繁瑣,并且存在一定的安全隱患。
問題二:拷貝耗時比較長,由于電子病歷、護(hù)理平臺等網(wǎng)站文件都比較多,一般拷貝一份需要花費5分鐘左右的時間。拷貝時會將文件都放在緩存中,在遇到系統(tǒng)資源不足等情況時容易出錯。發(fā)布6臺服務(wù)器耗時往往超過半小時,在此期間用戶無法正常使用系統(tǒng),給用戶帶來非常不好的體驗。
問題三:拷貝一旦開始,程序無法監(jiān)測拷貝是否完成,更新人員無法獲得更新結(jié)果的反饋。
(2)方案二
目前選用的方案。將發(fā)布好的站點文件上傳到數(shù)據(jù)庫。然后,各臺服務(wù)器利用本地的發(fā)布站點從數(shù)據(jù)庫獲取文件然后在本地站點中創(chuàng)建。
相比方案一,從Oracle數(shù)據(jù)庫獲取文件并在本地創(chuàng)建只需要給發(fā)布站點設(shè)置對應(yīng)權(quán)限即可。并且,站點文件更新的速度比文件拷貝要快好幾倍。通常100M的文件創(chuàng)建完只需要1分半鐘的時間。由于Oracle數(shù)據(jù)庫良好的性能,多臺服務(wù)器同時獲取文件幾乎完全不會影響文件讀取的速度。因此,多臺服務(wù)器拷貝100多M大小的文件所花的時間一般都不會超過2分鐘,大大縮短了站點更新的時間,很大程序上改善了用戶的體驗。此外,更新站點在從數(shù)據(jù)庫讀取站點的文件及創(chuàng)建文件時,一旦發(fā)生異常,程序都可以將錯誤信息記錄到數(shù)據(jù)庫中。這樣發(fā)布人員就可以根據(jù)錯誤進(jìn)行及時的處理。
3 系統(tǒng)的設(shè)計
系統(tǒng)分為三個部分,B/S結(jié)構(gòu)的更新站點及C/S結(jié)構(gòu)的更新程序以及文件上傳程序。
3.1 B/S結(jié)構(gòu)的發(fā)布站點
(1)自定義操作站點及應(yīng)用池類:IISmanager。該類定義了3個靜態(tài)函數(shù)來操作網(wǎng)站站點和IIS的應(yīng)用程序池。分別是StartWebSite、StopWebSite、RecyclePool,其中StartWebSite和StopWebSite 函數(shù)負(fù)責(zé)站點的啟用、停止操作,RecyclePool函數(shù)負(fù)責(zé)程序池的停止、啟用及回收操作。
(2)使用遞歸的方法,刪除站點目錄下所有文件。函數(shù)名稱:DeleteFile。
從數(shù)據(jù)庫讀取該站點所有文件的路徑及文件內(nèi)容,根據(jù)文件路徑動態(tài)創(chuàng)建各個文件。創(chuàng)建文件函數(shù)CreatrFile。調(diào)用該函數(shù)需要兩個參數(shù),文件路徑和文件內(nèi)容。文件內(nèi)容以二進(jìn)制流的方式創(chuàng)建。創(chuàng)建步驟如下,首先需要定義文件流:
FileStream fs = new FileStream(ls_path, FileMode.Create)。然后定義二進(jìn)制流,BinaryWriter bw = new BinaryWriter(fs); 最后將該文件使用方法bw.Write(file) 寫出來。
B/S發(fā)布站點是自動更新系統(tǒng)的最核心部分。是架設(shè)在需要發(fā)布網(wǎng)站的應(yīng)用服務(wù)器上的一個站點,主要負(fù)責(zé)本服務(wù)器站點文件的更新。更新程序時,該站點根據(jù)參數(shù)確定需要更新的站點,調(diào)用.NET提供的IISmanager類對需要更新站點的應(yīng)用池進(jìn)行回收并停止。然后,將站點下面的文件全部刪除。從數(shù)據(jù)庫下載最新的程序文件并在站點路徑下生成文件。生成文件完成后,最后重新啟動應(yīng)用池并將更新日志寫入到數(shù)據(jù)庫。更新出錯時也將更新日志寫入到數(shù)據(jù)庫。
3.2 C/S結(jié)構(gòu)的更新程序
(1)負(fù)責(zé)更新前后站點更新提示的操作
操作者輸入用戶名及密碼,點擊開啟更新提示或者關(guān)閉更新提示,程序后臺會通過發(fā)包的形式,自動登錄需要更新的站點,并開啟站點的中原先設(shè)計好的更新提示功能。開啟提示之后,系統(tǒng)會每隔一分鐘彈出系統(tǒng)公告提醒用戶保存好手頭工作。
(2)根據(jù)用戶選擇的需要更新的站點,調(diào)用B/S的站點對站點文件進(jìn)行更新。每隔3秒鐘從系統(tǒng)獲取本日最新的更新日志,并利用webbrowser控件將本日所有服務(wù)器的更新情況顯示出來。用戶還可以對任何應(yīng)用、任何時間的更新日志進(jìn)行查詢。
3.3 文件上傳程序
上傳程序主要由以下幾個功能:
(1)各個應(yīng)用程序文件的上傳。用戶可以選擇需要上傳的應(yīng)用,然后填寫本地文件所存放的路徑。最后點擊上傳就可以將所遠(yuǎn)應(yīng)用的文件上傳至數(shù)據(jù)庫。
(2)用戶還可以根據(jù)文件名查找已上傳的文件,并可以點擊查詢結(jié)果中的文件名來查看文件的內(nèi)容。還可以在選擇上傳形式為單個文件替換來替換該文件。
(3)可以選擇要下載的應(yīng)用,并填寫下載路徑,從數(shù)據(jù)庫中下載該應(yīng)用文件。
4 總結(jié)
自動更新系統(tǒng)的應(yīng)用不但節(jié)省了文件拷貝的時間,避免了手工誤操作可能導(dǎo)致的各種錯誤。并且在更新時,用戶可以實時查看到更新的狀態(tài)。一旦發(fā)生更新錯誤,用戶可以及時發(fā)現(xiàn)并采取相應(yīng)的措施。該系統(tǒng)的應(yīng)用大大提高了多臺服務(wù)器站點文件更新的效率,減輕了網(wǎng)站程序維護(hù)人員的工作量。
[責(zé)任編輯:楊玉潔]