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