基於訊號處理的線上雲評測+社群系統( 1)
2017年5月-6月,本小組做山東大學軟體工程專業專案實訓。我們做的專案是“基於訊號處理的線上雲評測+社群系統”,我和另一位組員zhan010g負責資料庫後臺方面。
首先我根據專案報告做了E-R圖。
實訓專案背景(明確的應用領域和實際背景)
業務背景:
OJ(Online Judge)是一個線上的程式評測系統,學生通過該系統可以充分鍛鍊自身的程式設計水平。以往的評測系統往往存在資源分配不均等多種問題,我們團隊希望在過去的基礎上,在伺服器底層進行優化,通過對伺服器處理資源的合理使用,以及使用輪詢佇列對大量併發請求的處理,再通過系統訊號同步進行精確的判斷,建立一個更為優質的線上雲評測系統。
技術背景:
技術上,使用
· 二、實訓目標
通過小組團隊合作完成本次“基於訊號處理的線上雲評測系統“實訓,熟練掌握Python、HTML和JavaScript語言,瞭解並會使用當前流行的架構搭建Web應用,最終實現一個B/S架構的線上程式評測系統。通過不斷的迭代優化,建立一個效率表現優異的線上雲評測平臺,能夠處理大規模的程式處理請求並準確返回結果,並具備一定的安全性。
· 三、系統功能
系統主要劃分為以下四個功能,具體業務需求描述如下:
1.評判核心
處理客戶端傳送來的程式執行請求,基於伺服器使用的Linux系統,通過訊號同步來獲取每一個執行緒的執行結果,呼叫Linux核心的API來操作,監視每一個執行緒直到其執行結束,對於返回狀態進行邏輯判斷,獲得該執行緒的真實終止訊號。對於使用者提交的程式返回合適的結果,並對程式正確性進行判斷。
2.保證系統安全性
安全性是OJ最大的問題,因為需要使用者在我們的系統上編譯程式並執行,這時要防範惡意程式碼對系統造成影響。我們將會對使用者提交的程式碼進行安全性檢測,要用低許可權執行程式、有可能的話使用沙箱限制更多的許可權;保證網站安全,防sql注入等;防範編譯器修改:去掉不安全的.h和obj;進行原始碼分析,定義一些危險關鍵字,實現關鍵詞過濾。
3.建立佇列保證系統在大流量下正常使用
為應對未來系統投入使用之後,使用者量增大,或者一桶作為做大型比賽的載體,需要在伺服器要做佇列,並實現多伺服器評判。
4.前端建設
建立一個美觀簡潔的前端介面,保證系統有一定美感的同時,清晰的向用戶提供我們的題目列表,以及提供給使用者直觀方便的做題介面。
· 四、技術方案
該專案可以分為兩個部分來實現:
第一部分是針對伺服器設計的核心程式,也是整個專案的核心,該程式負責處理客戶端傳送來的程式執行請求,初步設計是使用輪詢佇列儲存所有的待處理請求,核心程式逐一從中取出,平均分配給伺服器的每一個運算核心,執行結束後放回返回佇列並繼續下一個處理。
基於伺服器使用的Linux系統,我們可以通過訊號同步來獲取每一個執行緒的執行結果,具體的實現就是呼叫Linux核心的API來操作,監視每一個執行緒直到其執行結束,對於返回狀態進行邏輯判斷,獲得該執行緒的真實終止訊號