文舉
【摘 要】本文主要就上海外語教育出版社的“新理念外語網(wǎng)絡(luò)教學(xué)平臺(tái)”的服務(wù)器負(fù)載均衡技術(shù)方案進(jìn)行討論,以此解決在高負(fù)載、高并發(fā)、大流量網(wǎng)絡(luò)環(huán)境下出現(xiàn)的性能瓶頸問題。本研究具有一定的推廣價(jià)值,具有成本投入少、可靠性高、易于操作維護(hù)的特點(diǎn),特別適合高校核心信息管理系統(tǒng)的技術(shù)改造。
【關(guān)鍵詞】網(wǎng)絡(luò)學(xué)習(xí) 負(fù)載均衡 英語教學(xué) 新理念外語網(wǎng)絡(luò)教學(xué)平臺(tái)
一、新理念外語網(wǎng)絡(luò)教學(xué)平臺(tái)
“新理念外語網(wǎng)絡(luò)教學(xué)平臺(tái)”(以下稱教學(xué)平臺(tái))是上海外語教育出版社根據(jù)教育部頒布的《大學(xué)英語課程教學(xué)要求》,配套《全新版大學(xué)英語綜合教程》等教材而設(shè)計(jì)開發(fā)的網(wǎng)絡(luò)教學(xué)系統(tǒng)。在嚴(yán)格遵循現(xiàn)代外語教學(xué)理念、充分運(yùn)用先進(jìn)信息技術(shù)的基礎(chǔ)上,教學(xué)平臺(tái)注重為學(xué)生營造全方位、自主式、個(gè)性化學(xué)習(xí)環(huán)境,全面培養(yǎng)學(xué)生的英語綜合應(yīng)用能力。
教學(xué)平臺(tái)基于微軟的.Net 2.0技術(shù)和SQL Server 2005數(shù)據(jù)庫,由三個(gè)相互獨(dú)立而又相互聯(lián)系的模塊組成:1.系統(tǒng)管理員模塊;2.教師管理模塊;3.學(xué)生網(wǎng)絡(luò)學(xué)習(xí)模塊。其中管理員和教師管理模塊采用B/S(Browser/Server,瀏覽器/服務(wù)器)架構(gòu),學(xué)生學(xué)習(xí)模塊采用B/S和C/S(Client/Server,客戶端/服務(wù)器)結(jié)合的架構(gòu)。學(xué)生可以通過瀏覽器進(jìn)行在線學(xué)習(xí)和測(cè)試,由于系統(tǒng)功能的更新,新發(fā)布的5.5版中必須使用客戶端才能參加在線測(cè)試。
二、現(xiàn)有問題及解決方案
現(xiàn)有大多數(shù)高校均采用單臺(tái)服務(wù)器來運(yùn)行本系統(tǒng),集數(shù)據(jù)庫、Web、文件服務(wù)器于一身。這是一種低成本的方式,適合并發(fā)訪問壓力較小的環(huán)境使用。但其缺點(diǎn)也是顯而易見的:系統(tǒng)性能會(huì)隨著并發(fā)訪問的增加出現(xiàn)直線的下滑,所有重要數(shù)據(jù)在同一個(gè)地方有安全隱患。簡(jiǎn)單直接的解決方法是增加服務(wù)器,分別用于Web、Database、NFS,如圖一所示:
圖1
這種方案解決了數(shù)據(jù)安全和用戶上傳文件獨(dú)立存儲(chǔ)的問題,但在高并發(fā)的環(huán)境下,Web服務(wù)器和數(shù)據(jù)庫服務(wù)器將會(huì)成為系統(tǒng)的瓶頸。在硬件配置確定的前提下,通過增加Web服務(wù)器的數(shù)量,可以明顯緩解高并發(fā)帶來的服務(wù)器壓力。然而,這樣的結(jié)構(gòu)卻帶來了新的問題:多臺(tái)web服務(wù)器對(duì)于訪問者而言相互獨(dú)立,造成沒有統(tǒng)一的網(wǎng)絡(luò)訪問入口,且各臺(tái)服務(wù)器所承受的訪問量可能存在巨大差異,缺乏統(tǒng)一協(xié)調(diào)和分配訪問的機(jī)制。
因此,問題的解決需要引入新的方案,實(shí)現(xiàn)程序自動(dòng)根據(jù)服務(wù)器負(fù)責(zé)分配、引導(dǎo)訪問者到負(fù)載最低的服務(wù)器,并且要做到對(duì)用戶透明,即系統(tǒng)邏輯上對(duì)用戶而言就是一臺(tái)服務(wù)器,從而保證其獲得最佳訪問體驗(yàn)(圖二)。要實(shí)現(xiàn)上述功能,可以購買如F5 BIG-IP、Citrix NetScaler等專業(yè)負(fù)載均衡設(shè)備,優(yōu)點(diǎn)是可以支持動(dòng)態(tài)智能分配用戶訪問,缺點(diǎn)是價(jià)格昂貴。在高性價(jià)比的解決方案中,由俄羅斯軟件工程師Igor Sysoev開發(fā)的開源高性能HTTP和反向代理服務(wù)器Nginx可以滿足這樣的需求,該軟件可以運(yùn)行于Linux和Windows操作系統(tǒng)之上,但在生產(chǎn)環(huán)境中,建議采用Linux作為Nginx運(yùn)行的平臺(tái)。
圖2
現(xiàn)有的教學(xué)平臺(tái)使用ViewState來保存訪問者的狀態(tài)信息,啟用Nginx負(fù)載均衡后,可以實(shí)現(xiàn)動(dòng)態(tài)智能分配用戶訪問,但是會(huì)出現(xiàn)用戶狀態(tài)無法保存,從而導(dǎo)致用戶無法登陸訪問的問題。在Nignx中啟用IP_hash后,程序根據(jù)用戶的IP進(jìn)行hash計(jì)算,生成唯一的訪問標(biāo)識(shí),確保同一IP地址用戶始終對(duì)應(yīng)同一臺(tái)Web服務(wù)器,可以保存用戶的狀態(tài),但此時(shí)的負(fù)載均衡在很大程度上就失去了作用,無法實(shí)時(shí)動(dòng)態(tài)調(diào)節(jié)資源。解決方法是使用微軟提供的ASP.Net State Service(aspnet_state.exe)方案,SessionState中可實(shí)現(xiàn)ViewState共享的方式有StateServer和SQL Server兩種模式,本文主要討論基于SQL Server數(shù)據(jù)庫的方式。
方案的具體實(shí)施主要將會(huì)涉及Web服務(wù)器、Nginx反向代理服務(wù)器、SQL Server數(shù)據(jù)庫服務(wù)器的配置,關(guān)鍵步驟包括首先需要啟用nginx中的upstream:
upstream webServers
{ server 192.168.0.14;
server 192.168.0.15;
server 192.168.0.16;
server 192.168.0.17;}
在SQL Server中創(chuàng)建用于保存用戶狀態(tài)信息的數(shù)據(jù)庫,可以通過執(zhí)行WinDir\Microsoft.Net\Framework\Version文件夾中的InstallSqlState.sql腳本實(shí)現(xiàn)。在加入集群的各臺(tái)web服務(wù)器根目錄中找到web.config,修改sessionState節(jié)點(diǎn)的模式為SQLServer,完成數(shù)據(jù)庫連接信息等相應(yīng)的配置后,同步各臺(tái)服務(wù)器中web.config配置文件。
需要注意的是,在同步各web.config配置文件前,需要設(shè)置統(tǒng)一的MachineKey,以保證集群中各個(gè)web服務(wù)器擁有共同的密鑰,使得系統(tǒng)對(duì)ViewState數(shù)據(jù)加密解密的結(jié)果一致,從而實(shí)現(xiàn)ViewState的共享。
此外,還需要在數(shù)據(jù)庫集群里配置好數(shù)據(jù)的同步,以及對(duì)Web集群服務(wù)器的單一訪問接口。如有必要,可以啟用NFS或是分布式存儲(chǔ)方案,來應(yīng)對(duì)日益增加的用戶上傳文件。
三、結(jié)論及思考
以上方案經(jīng)過實(shí)際應(yīng)用的檢驗(yàn),在不增加投入或投入很小的情況下,很好地滿足了高負(fù)載、高并發(fā)、大流量的網(wǎng)絡(luò)環(huán)境。此方案可以應(yīng)用于所有基于.Net技術(shù)的信息管理系統(tǒng),比如高校教務(wù)管理系統(tǒng)、在線辦公自動(dòng)化OA系統(tǒng)、圖書情報(bào)檢索系統(tǒng)、網(wǎng)絡(luò)教學(xué)平臺(tái)等。與此同時(shí),也需要注意幾個(gè)存在的問題:1.ViewState數(shù)據(jù)安全問題,由于ViewState信息以hidden的方式直接嵌入在網(wǎng)頁中,雖然已經(jīng)加密,但依然存在泄漏用戶信息的隱患。2.在高負(fù)荷情況下ASP.net State服務(wù)器和Nginx服務(wù)器有可能成為瓶頸,從而使這個(gè)方案的性能受到影響,應(yīng)根據(jù)訪問壓力及時(shí)優(yōu)化、調(diào)整系統(tǒng)的軟、硬件配置,保證用戶的訪問體驗(yàn)。
【參考文獻(xiàn)】
[1]教育部. 大學(xué)英語課程教學(xué)要求[ M ]. 上海:上海外語教育出版社, 2004.
[2]Microsoft. Session-State Modes [EB/OL].
[3]Nginx. Module ngx_http_upstream_module [EB/OL].
[4]外教社. 新理念外語網(wǎng)絡(luò)教學(xué)平臺(tái) [ CP ]. 上海:上海外語教育出版社, 2012.