Auto-Translate 系統架構

佇列系統、Worker Pool 與翻譯引擎架構說明

系統架構

概述

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 檔案輸出

設計模式

  1. 依賴注入 (Dependency Injection)

    • 所有組件通過介面注入依賴
    • 易於測試和擴展
  2. 工廠模式 (Factory Pattern)

    • createDefaultQueueSystem() 建立預設系統配置
  3. 策略模式 (Strategy Pattern)

    • 可抽換的儲存策略
    • 可抽換的翻譯引擎

並發處理

  • 使用 Worker Pool 管理並發
  • 可通過 API 動態調整線程數
  • 預設線程數: 2(來自環境變數 THREADS)

錯誤處理

  • 任務失敗自動重試機制
  • 詳細的錯誤日誌
  • 失敗任務可手動重試
使用 Hugo 建立
主題 StackJimmy 設計