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