v0.7.0

架構

最後更新

HakoRun 的模組層級與一次請求經過的元件。

系統概覽

graph TB
    Main[cmd/api 進入點] --> Checker[checker 相依檢查]
    Main --> DB[database 初始化]
    Main --> Slice[sandbox.NewSlice]
    Main --> Router[internal 路由]
    Client[客戶端] --> Router
    Router --> Handler[handler Upload / Run / RunNow]
    Handler --> Store[(ToriiDB / Redis)]
    Handler --> Sandbox[sandbox.SandboxCommand]
    Sandbox --> Wrapper[internal/resource wrapper]
    Wrapper --> Handler
    Handler --> Client

分層

層 路徑 職責
進入點 cmd/api/main.go 依序執行相依檢查、儲存初始化、建立 slice、啟動 HTTP;處理訊號與 5 秒關閉
路由 internal/router.go 建立 Gin 引擎,註冊 /upload、/run/*targetPath、/run-now,綁定 HTTP_PORT
Handler internal/handler/ 驗證請求、讀取腳本、選擇一次性或 SSE 執行、標註回應型別
儲存 internal/database/ backend 介面;建置標籤選擇 ToriiDB 或 Redis
沙箱 internal/sandbox/ 依平台組出 systemd-run + bwrap 或 sandbox-exec 指令;Linux 寫入 hakorun.slice
相依檢查 internal/checker/ Linux 偵測並安裝執行環境;macOS 為 no-op
Wrapper internal/resource/ 各語言從 stdin 讀 {code, input} 並執行使用者程式碼

跨切原則

延伸閱讀

EN