系統架構
概述
Auto-Translate 採用依賴反轉設計,支援多種儲存後端和可配置的並發處理。
核心組件
1. 佇列系統 (Translation Queue)
位於 src/queue/core/TranslationQueueService.js
職責:
- 管理翻譯任務的生命週期
- 任務優先級排序
- 並發控制
主要方法:
submitJob()- 提交翻譯任務getJobStatus()- 查詢任務狀態cancelJob()- 取消任務
2. Worker Pool
位於 src/queue/workers/TranslationWorkerPool.js
職責:
- 管理多個工作線程
- 動態調整線程數量
- 任務分配與負載均衡
3. 翻譯執行器 (Translation Executor)
位於 src/queue/executors/TranslationExecutor.js
職責:
- 執行實際的翻譯工作
- 調用 OpenAI API
- 處理翻譯錯誤與重試
4. 儲存層
位於 src/queue/storage/
類型:
MemoryJobStorage- 記憶體儲存(當前使用)- 可擴展: PostgreSQL, MongoDB 等
資料流程
前端請求
↓
app.js (Express)
↓
TranslationQueueService
↓
PriorityQueueManager
↓
Worker Pool
↓
TranslationWorker
↓
TranslationExecutor
↓
OpenAI API
↓
SRT 檔案輸出
設計模式
-
依賴注入 (Dependency Injection)
- 所有組件通過介面注入依賴
- 易於測試和擴展
-
工廠模式 (Factory Pattern)
createDefaultQueueSystem()建立預設系統配置
-
策略模式 (Strategy Pattern)
- 可抽換的儲存策略
- 可抽換的翻譯引擎
並發處理
- 使用 Worker Pool 管理並發
- 可通過 API 動態調整線程數
- 預設線程數: 2(來自環境變數 THREADS)
錯誤處理
- 任務失敗自動重試機制
- 詳細的錯誤日誌
- 失敗任務可手動重試