HUSTOJ隨筆7-SAE部署

SAE(sina application engine) 是新浪的雲計算平臺,最大的特點是跟LAMP平臺幾乎無縫的兼容性。

因此在SAE上部署HUSTOJ的Web部分是完全沒有問題的,只需在db_info.inc.php設置

static  $OJ_SAE=true; 

然後參考

http://code.google.com/p/hustoj/wiki/HTTPJudge

進行judged的配置。

這裏需要說明的是,新浪雲平臺具有較多的安全限制,支持的計算平臺僅限web,並不能支持編譯、運行、監控等操作。

所以,必須另行架設判題機運行judged/judge_client,但是由於SAE已經提供了公網Web出口,所以對於沒有自己互聯網出口的學校來說就是非常難得的資源。

而judged可以在內網運行,甚至可以不必24小時在線,比如只在8-16點(上班時間)在線,老師可以用自己辦公室的機器上裝個虛擬機的方式來解決。

實際上HTTPJudge的運行機制正是爲SAE量身打造的。

因爲傳統的judged必須連接mysql來輪詢和完成任務,而SAE沒有提供外部網絡連接mysql的機制,這就逼迫我思考如何讓judged能夠連接到SAE的數據庫上去。

因爲SAE唯一的對外出口就是Web(HTTP),因此在HTTP基礎上實現一套判題任務的查詢、更新機制就是最直接的答案。

當然有很多標準可以採納,如WebService,XML-RPC,json-rpc等,但是由於我比較懶、也比較笨,所以就自行定製了一套最爲簡化的實現,類似Unix的管道流的文本界面。


此外,由於SAE不支持文件操作API,所以類似圖片上傳等功能都不能正常運行。有能力的用戶可以自行修改代碼,使用SAE的Storage功能實現模擬文件操作。

沒有開發能力的用戶可以在本地搭建完全相同題庫和數據的OJ,在加題後採用SAE的SVN界面進行上傳同步,可以最大化減少SAE的維護工作量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章