廣東財(cái)經(jīng)大學(xué)華商學(xué)院 譚良舟
教務(wù)管理系統(tǒng)性能優(yōu)化研究
廣東財(cái)經(jīng)大學(xué)華商學(xué)院譚良舟
基于計(jì)算機(jī)應(yīng)用的實(shí)踐與研究,從應(yīng)用環(huán)境、傳統(tǒng)優(yōu)勢(shì)技術(shù)、高新IT技術(shù)等角度出發(fā),探討教務(wù)管理系統(tǒng)的性能優(yōu)化策略。
計(jì)算機(jī)應(yīng)用;信息管理系統(tǒng);教務(wù)系統(tǒng);優(yōu)化策略
隨著信息技術(shù)的高速發(fā)展,各高校的教學(xué)管理也走向了信息化,其中教務(wù)系統(tǒng)是最基本、應(yīng)用最廣泛的信息管理系統(tǒng)。然而隨著在校學(xué)生人數(shù)的不斷增加,學(xué)分制改革的不斷推進(jìn),歷史數(shù)據(jù)的不斷疊加,教務(wù)管理系統(tǒng)在處理由于大量學(xué)生同時(shí)訪(fǎng)問(wèn)而產(chǎn)生的高并發(fā)、大流量的數(shù)據(jù)時(shí),已顯露出諸多的瓶頸與局限,嚴(yán)重地影響了學(xué)校的教學(xué)工作進(jìn)度,制約了教學(xué)管理信息化的發(fā)展,有學(xué)校投入大量的資金采購(gòu)新型的硬件設(shè)備,希望以此來(lái)提高系統(tǒng)的高并發(fā)事件處理能力,可是由于系統(tǒng)架構(gòu)本身就存在缺陷,使得單純地拓展硬件設(shè)施并不能獲得系統(tǒng)處理性能的線(xiàn)性提高。因此,應(yīng)該從軟件架構(gòu)和應(yīng)用環(huán)境出發(fā),結(jié)合先進(jìn)的計(jì)算機(jī)科學(xué)技術(shù)和成熟的傳統(tǒng)優(yōu)勢(shì)技術(shù),探索出一套能支持高并發(fā)、響應(yīng)速度快、分析執(zhí)行能力強(qiáng)的系統(tǒng)優(yōu)化策略。
云計(jì)算是最新的IT技術(shù)之一,它通過(guò)把互聯(lián)網(wǎng)上的計(jì)算資源連結(jié)起來(lái),形成一個(gè)虛擬的超級(jí)計(jì)算機(jī)集群,為用戶(hù)提供按需即取的計(jì)算服務(wù)。云計(jì)算具有虛擬化、通用性強(qiáng)、超大規(guī)模、極其廉價(jià)、高可擴(kuò)展性、高可靠性等特點(diǎn)。把教務(wù)管理系統(tǒng)放到“云端”,則可讓云中數(shù)以百萬(wàn)計(jì)的計(jì)算機(jī)群為教務(wù)管理系統(tǒng)提供所需的網(wǎng)絡(luò)、儲(chǔ)存、應(yīng)用軟件、服務(wù)器等資源,使各種量大復(fù)雜的數(shù)據(jù)分析和數(shù)據(jù)處理不會(huì)再受牽制于應(yīng)用環(huán)境中可能導(dǎo)致系統(tǒng)瓶頸的軟硬條件,不用去擔(dān)心機(jī)房服務(wù)器不夠、配置不足、版本不高、安全薄弱等硬性條件的不足,更不用去擔(dān)心維護(hù)系統(tǒng)的人力資源、專(zhuān)業(yè)技能、費(fèi)用開(kāi)支等等,并且始終享有資源充足、高效快捷的系統(tǒng)環(huán)境。可是,由于教務(wù)系統(tǒng)里含有許多私隱信息,如學(xué)生學(xué)籍檔案、教師信息等等,所以服務(wù)器必須處在自己學(xué)??晒芸氐念I(lǐng)域,有些甚至還要通過(guò)內(nèi)網(wǎng)隔離,所以在運(yùn)用云技術(shù)之前,必須先準(zhǔn)備一套可靠的網(wǎng)絡(luò)安全方案,或者可以像浙江大學(xué)那樣建設(shè)自己的云計(jì)算中心,中心有多個(gè)計(jì)算集群、數(shù)據(jù)庫(kù)集群,提供的服務(wù)也是相當(dāng)穩(wěn)定的。
選課高峰期出現(xiàn)的系統(tǒng)癱瘓是各大高校常見(jiàn)的頑疾。因?yàn)橐话氵x課系統(tǒng)都是將所有的數(shù)據(jù)庫(kù)操作語(yǔ)句直接寫(xiě)在應(yīng)用服務(wù)器上,而選課期間的高并發(fā)訪(fǎng)問(wèn)需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行非常頻繁的操作,而此時(shí)需要對(duì)數(shù)據(jù)庫(kù)操作語(yǔ)句進(jìn)行解析和編譯,當(dāng)有成千上萬(wàn)的人同時(shí)選課時(shí),操作數(shù)成幾何倍數(shù)增加,此時(shí)CPU的使用率已經(jīng)是100%,由于遇上系統(tǒng)反應(yīng)遲滯,用戶(hù)還會(huì)重復(fù)地點(diǎn)擊,導(dǎo)致服務(wù)器無(wú)法響應(yīng),隨著操作用戶(hù)的增加,等待處理的進(jìn)程增多,而CPU資源和內(nèi)存資源無(wú)法及時(shí)釋放,最終導(dǎo)致內(nèi)存耗盡,服務(wù)器癱瘓。針對(duì)這種瓶頸,可以把數(shù)據(jù)庫(kù)操作語(yǔ)句寫(xiě)成存儲(chǔ)過(guò)程,將一個(gè)或多個(gè)SQL操作語(yǔ)句寫(xiě)成一個(gè)代碼塊發(fā)送給服務(wù)器,在運(yùn)行這些操作語(yǔ)句之前,數(shù)據(jù)庫(kù)就已經(jīng)對(duì)其進(jìn)行了解析與編譯,并得出了優(yōu)化后的執(zhí)行方案。由于這個(gè)過(guò)程很大一部分工作就是對(duì)操作語(yǔ)句進(jìn)行解析與編譯,而這些工作在前期已經(jīng)完成,所以這種已經(jīng)編譯好的過(guò)程可以以極快的速度執(zhí)行,提高了系統(tǒng)的性能。PL/SQL(Procedural Language/SQL)就是一個(gè)很好的過(guò)程性語(yǔ)言,用于從各種環(huán)境中訪(fǎng)問(wèn)Oracle數(shù)據(jù)庫(kù)。與SQL相比,PL/SQL可以通過(guò)增加變量、類(lèi)型、過(guò)程、循環(huán)控制結(jié)構(gòu)等,在其它過(guò)程性語(yǔ)言中進(jìn)行結(jié)構(gòu)的擴(kuò)展,從而達(dá)到優(yōu)化數(shù)據(jù)庫(kù)運(yùn)行的目的。總的來(lái)說(shuō),存儲(chǔ)過(guò)程有如下優(yōu)點(diǎn):(1)一般情況下數(shù)據(jù)庫(kù)要執(zhí)行一個(gè)動(dòng)作,需要先進(jìn)行編譯,然后再執(zhí)行。而存儲(chǔ)過(guò)程則是把動(dòng)作寫(xiě)成一組已經(jīng)編譯過(guò)的代碼,所以執(zhí)行速度比普通的數(shù)據(jù)庫(kù)語(yǔ)句要快得多。(2)由于存儲(chǔ)過(guò)程是將一大堆SQL語(yǔ)句組合成一組語(yǔ)句塊來(lái)進(jìn)行傳輸?shù)模栽诰W(wǎng)絡(luò)傳輸過(guò)程中能降低網(wǎng)絡(luò)通信量,提高傳輸速度。(3)存儲(chǔ)過(guò)程可以避免沒(méi)有權(quán)限的用戶(hù)直接訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),而改為在控制下間接地訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),從而提了數(shù)據(jù)的安全性。
有統(tǒng)計(jì)表明,單純地對(duì)硬件或者其他外部條件入手進(jìn)行優(yōu)化所獲得的性能提升,只能占到所有優(yōu)化的40%左右,而其他60%則需要對(duì)系統(tǒng)內(nèi)部包括軟件架構(gòu)進(jìn)行優(yōu)化。對(duì)教務(wù)管理系統(tǒng)的優(yōu)化同樣可以從應(yīng)用程序的框架搭建來(lái)展開(kāi),選用一個(gè)最合適的多層體系框架可以獲得不俗的優(yōu)化效果。不熟悉軟件架構(gòu)搭建的朋友可以從SSh(struts+spring+hibernate)入手,雖然現(xiàn)在做Java web的基本都沒(méi)使用SSh了,但是作為入門(mén)來(lái)說(shuō)SSH仍然是不二之選。從SSH出發(fā),再拓展到其他如Spring MVC+Ibatis/MyBatis+Oracle等,研究一套最適合本校系統(tǒng)的軟件架構(gòu)。SSH框架中,Struts 主要做控制操作,就是頁(yè)面請(qǐng)求到Struts的Action,在A(yíng)ction中接收請(qǐng)求數(shù)據(jù)并且處理,然后返回結(jié)果再應(yīng)答給JSP頁(yè)面,Struts就是一個(gè)很完美的MVC結(jié)構(gòu)的開(kāi)發(fā)框架。Spring的主要技術(shù)是IOC和AOP(依賴(lài)注入和面向切面),IOC技術(shù)主要是幫助類(lèi)初始化和實(shí)例化,并且在Spring中每個(gè)類(lèi)都可以有對(duì)應(yīng)的Bean,在配置文件中,然后把Bean逐層注入到其他應(yīng)用類(lèi)。AOP技術(shù)主要是做事物處理,一般聲明式事物和編程式事物較通用。Hibernate:就是數(shù)據(jù)持久化,將數(shù)據(jù)庫(kù)中的表映射為相應(yīng)的實(shí)體,以便對(duì)實(shí)體的操作。在這里struts擔(dān)當(dāng)控制器,就好比你要做車(chē)去深圳,要先跟售票員買(mǎi)票,拿到票后才能去坐車(chē),struts就是售票員,它接到你的請(qǐng)求之后就去Hibernate那里取票,然后再給你票,spring就是車(chē)站的保安,負(fù)責(zé)管理買(mǎi)賣(mài)票,像struts擔(dān)任控制器的有(struts1/2,webwork,servlet,JSF),Hibernate處理后臺(tái)(增刪改查)和JDBC,類(lèi)似的框架有JPA,spring管理,依賴(lài)注入/AOP 事物等等。在教務(wù)管理系統(tǒng)中采用這種框架為系統(tǒng)提供了一個(gè)更高級(jí)的應(yīng)用程序體系架構(gòu),使系統(tǒng)具更高的可靠性、擴(kuò)展性和可維護(hù)性。
虛擬化技術(shù)(Virtualization)是將各種計(jì)算機(jī)資源如CPU、內(nèi)存、硬盤(pán)、服務(wù)器等進(jìn)行虛擬擴(kuò)展的一種技術(shù)。例如把一臺(tái)計(jì)算機(jī)虛擬為多臺(tái)計(jì)算機(jī),每臺(tái)虛擬計(jì)算機(jī)又可以運(yùn)行各自的應(yīng)用程序,而各臺(tái)計(jì)算機(jī)和各個(gè)應(yīng)用程序之間又是相互獨(dú)立運(yùn)行,互不干擾的,這樣就得以打破物理架構(gòu)的限制,擴(kuò)展了原有的軟硬件環(huán)境,使用戶(hù)可以更充分地運(yùn)用這些資源。針對(duì)教務(wù)系統(tǒng),我們可對(duì)其進(jìn)行硬件虛擬化和軟件虛擬化。在硬件方面,可選取在高并發(fā)事件中仍有空閑資源的服務(wù)器進(jìn)行虛擬化,如VMware Workstation,Xen,KVM等虛擬化產(chǎn)品都具有較為成熟的虛擬化技術(shù)方案,對(duì)這些服務(wù)器進(jìn)行虛擬化使這些空閑資源可以用到其他進(jìn)程上,緩解了系統(tǒng)的壓力。另外,我們不僅可以挖掘利用服務(wù)器的剩余空閑資源,還可以對(duì)舊設(shè)備進(jìn)行再利用,節(jié)約了硬件設(shè)備的資金投入同時(shí)還實(shí)現(xiàn)了現(xiàn)有資源的充分利用。虛擬化技術(shù)可以使不同配置不同版本的服務(wù)器設(shè)備在虛擬的運(yùn)行環(huán)境中得到統(tǒng)一,使他們能夠相互兼容,共同協(xié)作,從而優(yōu)化了整個(gè)硬件環(huán)境。在軟件方面,可以在操作系統(tǒng)層面增添虛擬服務(wù)器功能,如Oracle數(shù)據(jù)庫(kù)運(yùn)行的操作系統(tǒng)Solaris,就可以采用Solaris Container技術(shù),它將Solaris系統(tǒng)虛擬化為多個(gè)虛擬系統(tǒng),每個(gè)系統(tǒng)都運(yùn)行著獨(dú)立的用戶(hù)賬戶(hù)和應(yīng)用程序,他們都擁有獨(dú)立的資源,運(yùn)行著相互獨(dú)立的Oracle數(shù)據(jù)庫(kù),這就相當(dāng)于有多個(gè)數(shù)據(jù)庫(kù)在同時(shí)運(yùn)作,從而提高了整個(gè)系統(tǒng)并發(fā)處理事務(wù)的能力。
內(nèi)存的讀寫(xiě)速度要遠(yuǎn)遠(yuǎn)快于硬盤(pán)等存儲(chǔ)媒介,有報(bào)告稱(chēng)內(nèi)存的讀取速度比硬盤(pán)快一萬(wàn)多倍。在內(nèi)存資源有剩余的情況下,運(yùn)用Oracle緩存技術(shù)把在選課期間需要頻繁訪(fǎng)問(wèn)的、數(shù)據(jù)量比較少的目標(biāo)表(如choose_credit,choose_need_course等)存放在Oracle自身管理的內(nèi)存中,避免了文件系統(tǒng)的I/O,提高了數(shù)據(jù)的訪(fǎng)問(wèn)速度,因而提高了系統(tǒng)的響應(yīng)時(shí)間。特別是在集中選課期間,小的目標(biāo)數(shù)據(jù)庫(kù)表通常是每個(gè)學(xué)生選課時(shí)需要訪(fǎng)問(wèn)的選課條件和參數(shù),利用緩存技術(shù)來(lái)提高響應(yīng)時(shí)間是非常必要的。采用以下命令將表緩存到Oracle內(nèi)存中,如把Choose_credit放入內(nèi)存中。使用語(yǔ)句alter table choose_credit storage(buffer_pool keep)。在進(jìn)行全校性選課或者其他會(huì)造成訪(fǎng)問(wèn)量突增的活動(dòng)前,采用這一緩存技術(shù),將需要經(jīng)常訪(fǎng)問(wèn)到的數(shù)據(jù)量比較少的目標(biāo)表預(yù)先存放在內(nèi)存里,則可以大大地提升系統(tǒng)的響應(yīng)速度。
教務(wù)管理系統(tǒng)的優(yōu)化建設(shè),能在緩解高并發(fā)事件頑疾的基礎(chǔ)上,推進(jìn)學(xué)分制改革等新型的高校人才培養(yǎng)模式,進(jìn)而全面提高教學(xué)質(zhì)量,推動(dòng)我國(guó)教育事業(yè)的發(fā)展。所以,完善和優(yōu)化教務(wù)管理系統(tǒng),是推進(jìn)高校質(zhì)量工程和教學(xué)改革工程必不可少的一個(gè)重要環(huán)節(jié)。
[1]高杰欣.教務(wù)系統(tǒng)應(yīng)用瓶頸及優(yōu)化策略研究[J].中國(guó)管理信息化.
[2]譚艷.高校教務(wù)管理系統(tǒng)優(yōu)化方案研究[D].南華大學(xué).
[3]蔡炳躍.教務(wù)管理系統(tǒng)的系統(tǒng)管理設(shè)計(jì)和性能優(yōu)化研究[D].廈門(mén)大學(xué).