源碼見(jiàn):https://github.com/lovercode/GO_OJ.git吞琐,demo見(jiàn):https://codelover.me/run.html
簡(jiǎn)介
這個(gè)online judge
是我的畢業(yè)設(shè)計(jì),采用go
語(yǔ)言医窿,結(jié)合docker
等技術(shù)實(shí)現(xiàn),主要是為了學(xué)習(xí)相關(guān)的技術(shù),系統(tǒng)還有很多問(wèn)題(尤其是安全方向),僅是為了學(xué)習(xí)而已还绘。
整體流程圖
消息隊(duì)列
使用的開(kāi)源項(xiàng)目Nsq,用于各個(gè)組件相互通信送矩。
Manager
主要是管理編譯docker容器和運(yùn)行docker容器蚕甥,防止退出哪替。同時(shí)為編譯期做文件的準(zhǔn)備栋荸。
Compiler
主要負(fù)責(zé)編譯各種語(yǔ)言,或者進(jìn)行語(yǔ)法檢查凭舶。
Runner
運(yùn)行各種語(yǔ)言晌块,每一種語(yǔ)言都有屬于自己的運(yùn)行環(huán)境的docker容器。