何 亞 曾志文

[摘 要]針對網上選課系統因短期高負載而導致性能降低甚至崩潰的問題,提出采用P2P技術將選課的負載分布在客戶端,提高選課系統的性能。對基于P2P和JXTA的選課系統做了總體設計,包括服務器端、客戶端以及數據庫的設計。
[關鍵詞]P2P JXTA 選課系統
[中圖分類號]TP319[文獻標識碼]A[文章編號]1007-9416(2009)11-0004-02
1 前言
目前大部分高校的選課系統是基于B/S架構的,所有的學生都要從服務器獲取學期開課信息以及自己已經修過的課程等信息;同時服務器要對每個學生選擇的課程進行判斷,使得服務器的負擔很重,造成系統響應時間增長,甚至導致系統崩潰。這種短期的高負載特性,使得選課系統無法進行選課,影響選課的正常進行。
基于此,本文設計了一種分布式選課系統,從當前熱門的分布式技術P2P出發,利用P2P網絡中,節點之間可以直接交換資源而不必通過服務器。在客戶端實現相同專業的學生可以從其他的客戶端共享學期開課信息。而對學生個人的已修課程、所得學分學時等信息,這些信息是每個同學都不一樣的,則從服務器下載。將對學生所選課程的檢測轉移到客戶端處理,減輕服務器的負擔。
1.1 P2P技術介紹
P2P技術,也稱對等網絡或點對點(peer to peer)技術,是一種網絡結構的思想,是目前國際計算機網絡技術領域研究的一個熱點。它打破了傳統的客戶端/服務器(C/S)模式,在對等網絡中,每個節點的地位相同,具備客戶端和服務器雙重特性,可以同時作為服務使用者和服務提供者,整個網絡結構中不存在中心節點(或中心服務器)。目前P2P模型可以分為以下幾個種類:
(1)純P2P模型:采用隨機圖的組織方式形成一個松散的網絡,不依賴任何中心服務器,網絡配置簡單。一旦P2P應用程序下載到計算機內存中,網絡中的端就動態地發現其他連接的端,相連端之間的通信完全不需要來自服務器的任何幫助。純P2P模型存在的問題就是網絡上的端發現問題,因為沒有一個中心管理者注冊登錄到網絡上的端,所以用戶必須自己定位其他的端。另外,這種網絡直徑不可控,可擴展性差。
(2)帶有一個簡單發現服務器的P2P :在這種網絡中,服務器僅提供相連端的清單來輔助端,建立連接和通信仍然是端之間的事情。為了查詢某個文件,計算機必須逐個詢問所有的端,直到找到所需的資源或者返回錯誤信息,可見這種網絡的效率很低。
(3)帶有發現和查找服務器的P2P:這種模型中,服務器用來提供相連端的清單和它們的可用資源。這種模型減輕了端的負擔,因為不再需要通過訪問每個端來查找必要的信息。這種模型中的服務器初始化兩個端間的通信,然后這兩個端建立通信、保持連接并執行各種活動。
3 JXTA簡介
JXTA技術是美國Sun公司針對原有P2P系統的缺陷而設計的一種解決現代P2P分布計算的網絡編程和計算平臺。該技術致力于創建一個通用的平臺,提供P2P程序所需的底層服務。JXTA技術的核心在于一套獨立于編程語言、系統平臺和網絡平臺的協議集。JXTA由6個協議組成,這套協議集描述和實現了P2P應用最基本的需求,其中的每一個協議都可以很容易地實現和集成到P2P的服務和應用中。使用這些協議,對等點可以互相合作建立自我組織、自我管理的對等組,不必關心他們在剛絡中的位置,并且不需要集中式的管理機構。
JXTA的體系結構由三層組成:最底層是JXTA核心層,這一層封裝了最根本的東西,包括對等點、對等組、Peer發現、Peer通信、Peer監視和相關的安全原語;服務層擴展了核心層的功能,它包括對于P2P網絡不是必需的、但很通用的功能,如查找、共享、索引、代碼緩存和內容緩存的機制;應用層包括了應用JXTA服務構建出的P2P應用程序。
4 基于P2P和JXTA的選課系統的設計
結合P2P模型的特點,系統中采用帶有發現和查找服務器的P2P模型。系統總體結構如圖1所示。其中,虛線代表登錄消息,它是在客戶端和服務器端之間進行;實線代表選課信息數據的請求和傳輸路徑,在客戶端之間或客戶端和服務器端之間進行。如果沒有該專業在線的客戶端時,服務器就發送學期開課信息和學生本人的己修課程信息到客戶端;有的話,服務器就發送在線節點的信息和學生本人的已修課程信息,請求的客戶端根據在線節點的信息,從中選擇一個鄰近的節點,建立連接去共享學期開課信息。每一個客戶端既能成為數據傳輸服務器,也能成為數據接收客戶端。客戶機從服務器獲取己登錄的客戶端列表,與鄰近客戶機建立連接,完成數據傳輸,傳輸過程不經過目錄服務器,因此可以大大減少服務器的工作量。
4.1 服務器設計
服務器端主要的功能包括消息管理,路由表維護,文件管理,教務管理員和教師模塊。
4.1.1 消息管理模塊
負責與客戶端的通信,向客戶端發送或者接收來自客戶端的消息。服務器接收到的消息有以下幾種:
(1)登錄消息:消息管理器接收到登錄消息后,調用路由表管理模塊,更新路由表,并在路由表中查找相同專業的在線節點的信息,然后把檢索結果發送回客戶端。對應消息的命令是:ListOnlineUserInfo。
(2)獲取選課信息的請求:當客戶端不能在其他在線節點獲得學期開課信息時,向服務器請求獲取學期開課信息,消息管理器調用文件管理模塊,根據學生所在的專業,根據客戶端的輸入管道與客戶端建立通信,發送該專業的學期開課信息。對應消息的命令是:GetCourseData。
(3)接收選課結果信息:當客戶端完成選課后,向服務器提交選課結果,消息管理模塊調用文件管理模塊響應請求,并把數據保存到數據庫中。對應消息的命令是:PostCourseData。
(4)注銷:當學生退出選課時,給服務器發送注銷的消息,消息管理模塊調用路由表管理函數更新路由表,在路由表中刪除該客戶端的信息。
4.1.2 路由表管理
為了記錄所有在線節點的信息,服務器維護一張在線客戶端的信息表,當有學生登錄時,記錄客戶端的信息并且查詢相同專業的在線節點信息返回給客戶端。當學生退出選課系統時,從路由表中刪除學生信息。路由表中記錄的節點信息主要包括學生學號、年級、專業、客戶端的IP地址和輸入通道ID。
4.1.3 文件管理
服務器端需要傳輸的信息包括將學期開課信息和學生個人的已修課程信息發送給客戶端,接收客戶端提交的選課結果。
4.1.4 教務員模塊
教務管理員的功能主要是對學生、班級和課程信息進行管理及查詢,開課審批,批量選課,選課結果審核,數據庫備份和發布公告。
4.1.5 教師模塊
教師模塊的功能主要是開課申請,查看選課學生,打印選課學生和考試成績管理。
4.2 客戶端設計
為了減輕服務器的負擔,系統將對每個學生所選課程的檢測轉移到客戶端處理,采用Java的Applet方式實現。客戶端的功能主要包括文件管理,消息管理和學生選課三個模塊。
4.2.1 文件管理
和服務器端類似,文件管理模塊需要實現XML文件的生成與解析。主要包括將服務器或者其他節點傳輸來的學期開課信息和學生個人的已修課程信息進行XML文件的解析,將選課結果生成XML文件提交給服務器。
4.2.2 消息管理
負責與其他客戶端和服務器進行通信,向其他端發送或者接收來自其他端的消息。當客戶端啟動后,建立一個輸入管道通告,并監聽管道,當接收到消息的時候,就根據消息中的命令調用相應的應答函數,處理完后向其他端發送響應消息。客戶端接收到的消息有以下幾種:
(1)接收用戶列表消息:消息管理器接收到服務器發送來的在線節點信息,從中選擇一個鄰近的節點,建立連接,進行通信。
(2)發送獲取選課信息的請求:向同專業的在線節點發送獲取選課信息的請求。
(3)接收獲取選課信息的請求:當收到其他的客戶端需要獲取學期開課信息的請求時,根據對方的輸入管道ID建立通信,發送選課信息。
(4)提交選課結果:選課完成后,將選課結果提交給服務器保存。
4.2.3 學生選課模塊
為了減輕服務器的負擔,將學生選課的業務處理程序以Applet的方式嵌入在客戶端頁面中。學生選課模塊的功能主要包括:查看開課信息、查看已修課、選課、查看己選課以及退選課。
4.3 數據庫設計
選課系統中的數據庫主要存儲各專業的學期開課信息和選課結果信息,數據庫中主要的表包括:在線節點信息表(學號、IP地址、年級、專業)、管理員表(用戶ID、用戶名、密碼、系部)、教師信息表(教師ID、教師姓名、系別、密碼、教師簡介)、開課信息表(課程編號、課程名稱、開課學期、開課年級、開課專業、主講教師、教師介紹、課程介紹、上課時間、上課地點、先修課、學時、學分)、選課結果表(學號、課程編號、課程名稱、選課學期、學時、學分、上課時間),還要使用教務系統中其他子系統中的數據,如學籍系統中的學生基本信息表等。
5 結語
P2P 技術為互聯網的發展帶來了深遠的影響,也為IT產業帶來了無限的商機,最近幾年,P2P技術更是發展迅速。目前,在文件共享、分布式計算等應用領域P2P顯示出很強的技術優勢。相信隨著對P2P 技術研究的不斷深入,P2P所帶來的技術創新和應用創新還將繼續,它將為社會的發展做出巨大的貢獻。
[參考文獻]
[1] 陳貴海.對等網絡:結構、應用與設計 [M].北京:清華大學出版社,2007.
[2] 孔祥禎. 淺談P2P網絡結構[J].科技廣場,2009,(1):232-234.
[3] Ralf Steinmetz . P2P 系統及其應用 [M].北京:機械工業出版社,2008,9-15.
[4] 陳鋒.基于JXTA的P2P文件共享系統的實現研究[J].計算機科學,2007,34(12):126-128.
[5] 苗坤.基于JXTA的P2 P文件共享系統[J].計算機系統應用,2009,(2):9-13.