编辑
2026-08-19
undefined
00

目录

NAS下载器服务端模块拆解图
一、服务端总体模块图
二、分层拆解图
三、核心模块职责表
四、建议的服务拆分(615版本)
4.1 单体守护进程方案(推荐)
4.2 原因
五、615 版本建议的代码目录拆分
六、最小可落地模块边界

NAS下载器服务端模块拆解图

一、服务端总体模块图

flowchart TB
    UI[Web / App / NAS本地界面] --> GW[API Gateway / BFF]
    GW --> AUTH[认证鉴权层]
    GW --> ORCH[Download Orchestrator\n下载编排服务]
    GW --> WS[WebSocket Push\n状态推送服务]

    ORCH --> TASK[Task Service\n统一任务服务]
    ORCH --> ROUTER[Protocol Router\n协议识别路由]
    ORCH --> POLICY[PT Safety Guard\nPT安全策略]
    ORCH --> CONFLICT[Conflict Resolver\n重复任务/冲突处理]
    ORCH --> SCHED[Scheduler / Queue Manager\n调度与队列]
    ORCH --> EVENT[Event Bus\n事件总线]
    ORCH --> FILE[File Link Service\n打开目录/文件联动]
    ORCH --> NOTICE[Notification Service\n通知服务]
    ORCH --> LOG[Log & Diagnostics\n日志诊断服务]
    ORCH --> SETTING[Settings Service\n设置中心]

    ROUTER --> QBADAPTER[qB Adapter\nBT/PT/Magnet适配层]
    ROUTER --> ARIA2ADAPTER[aria2 Adapter\nHTTPS适配层]
    ROUTER --> SHAREADAPTER[Share Adapter\n品牌分享适配层]

    QBADAPTER --> QB[qBittorrent-nox]
    ARIA2ADAPTER --> ARIA2[aria2 daemon]
    SHAREADAPTER --> SHAREAPI[品牌分享系统接口]

    TASK --> DB[(SQLite / Task DB)]
    EVENT --> DB
    LOG --> DB
    SETTING --> DB
    CONFLICT --> DB

    FILE --> FS[文件系统 / NAS目录权限]
    QB --> FS
    ARIA2 --> FS
    SHAREAPI --> FS

    NOTICE --> NC[系统通知中心]
    WS --> UI

二、分层拆解图

flowchart LR
    subgraph 接入层
        A1[REST API]
        A2[WebSocket]
        A3[鉴权中间件]
    end

    subgraph 业务编排层
        B1[统一任务模型]
        B2[任务创建流程]
        B3[任务控制流程\n暂停/恢复/删除/重试]
        B4[状态机管理]
        B5[错误码标准化]
        B6[多端状态同步]
    end

    subgraph 协议能力层
        C1[qB Adapter]
        C2[aria2 Adapter]
        C3[Share Adapter]
    end

    subgraph 基础能力层
        D1[权限校验]
        D2[目录检查]
        D3[通知]
        D4[日志与埋点]
        D5[设置中心]
        D6[任务恢复]
    end

    subgraph 持久化与外部依赖
        E1[(SQLite)]
        E2[qBittorrent-nox]
        E3[aria2]
        E4[品牌分享接口]
        E5[文件系统]
        E6[通知中心]
    end

    A1 --> B1
    A2 --> B6
    A3 --> D1
    B1 --> C1
    B1 --> C2
    B1 --> C3
    B2 --> D2
    B3 --> C1
    B3 --> C2
    B3 --> C3
    B4 --> E1
    B5 --> E1
    B6 --> A2
    C1 --> E2
    C2 --> E3
    C3 --> E4
    D2 --> E5
    D3 --> E6
    D4 --> E1
    D5 --> E1
    D6 --> E1

三、核心模块职责表

模块职责关键输入关键输出
API Gateway / BFF给 Web/App 提供统一接口请求、用户身份REST 响应、WebSocket 订阅
Auth / AuthZ登录态、目录权限、任务可见范围校验用户、目录、任务allow / deny
Download Orchestrator总控创建、调度、状态流转、错误收敛创建请求、控制请求、引擎回调统一任务事件
Task Service维护统一任务模型引擎状态、用户操作task record
Protocol Router识别 magnet / torrent / https / share link原始输入路由到对应 adapter
PT Safety Guardprivate torrent 风险策略控制torrent metadata、系统设置PT 安全策略快照
Conflict Resolver重复任务、同名冲突处理infohash、文件名、保存目录冲突处理策略
Scheduler / Queue Manager活跃下载数/做种数限制全局设置、当前任务集waiting / active 调度结果
qB Adapter对接 qB API,处理 BT/PT/Magnet任务命令torrent 状态、tracker、ratio
aria2 Adapter对接 aria2 RPC,处理 HTTPS任务命令下载状态、续传信息
Share Adapter对接品牌分享接口分享链接、提取码转存结果 / 降级下载
Notification Service完成/失败通知任务事件系统通知
File Link Service打开目录、跳转文件管理save_path文件管理联动动作
Log & Diagnostics聚合日志、错误快照、诊断信息引擎日志、系统事件最近日志、错误摘要
Settings Service管理默认目录、限速、并发、端口、做种规则配置请求生效配置
Recovery Service重启后任务恢复、引擎对账DB 快照、引擎当前状态恢复后的统一状态

四、建议的服务拆分(615版本)

4.1 单体守护进程方案(推荐)

615 更建议先做成 单体服务 + 内部模块化

  • download-orchestrator
    • 内含:API / 任务编排 / 状态机 / 通知 / 恢复 / 设置 / 日志聚合
  • 外挂 daemon:
    • qbittorrent-nox
    • aria2

4.2 原因

  • 部署简单
  • 调试简单
  • 机型适配成本低
  • 更适合 NAS 首版
  • 后续仍可以平滑拆分为独立微服务

五、615 版本建议的代码目录拆分

text
server/ ├─ cmd/ │ └─ downloaderd/ ├─ internal/ │ ├─ api/ │ │ ├─ http/ │ │ ├─ websocket/ │ │ └─ middleware/ │ ├─ app/ │ │ ├─ task/ │ │ ├─ orchestrator/ │ │ ├─ scheduler/ │ │ ├─ policy/ │ │ ├─ conflict/ │ │ ├─ notify/ │ │ ├─ filelink/ │ │ ├─ settings/ │ │ └─ recovery/ │ ├─ adapter/ │ │ ├─ qb/ │ │ ├─ aria2/ │ │ └─ share/ │ ├─ domain/ │ │ ├─ task/ │ │ ├─ event/ │ │ ├─ enum/ │ │ └─ errorcode/ │ ├─ infra/ │ │ ├─ db/ │ │ ├─ logger/ │ │ ├─ config/ │ │ └─ eventbus/ │ └─ bootstrap/ └─ migrations/

六、最小可落地模块边界

615 真正必须先做好的,不是全部模块,而是下面 8 个:

  1. API Gateway / BFF
  2. Download Orchestrator
  3. Task Service
  4. Protocol Router
  5. qB Adapter
  6. aria2 Adapter
  7. Share Adapter
  8. Recovery + Notification

其余模块可以先内嵌在 orchestrator 中,以后再独立抽出。

本文作者:oyph

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!