s3桶大量数据下载

如果数据在境外,国内直连慢,可以尝试香港等亚太服务器进行中转,或尝试利用网盘进行中转

flowchart LR
    subgraph CONTROL["调度与观测中心"]
        UI["统一管理界面<br/>设备、速度、进度、异常"]
        SCH["调度器<br/>一级切片与任务分配"]
        DB[("状态数据库<br/>切片状态、租约、检查点")]
        REC["超时回收器<br/>回收断联和过期租约"]

        UI <--> SCH
        SCH <--> DB
        REC <--> DB
    end

    subgraph EXECUTORS["分布式执行器"]
        direction TB

        E1["执行器 A"]
        E2["执行器 B"]
        E3["执行器 C"]

        P1["内部细分<br/>多连接并行下载"]
        P2["内部细分<br/>多连接并行下载"]
        P3["内部细分<br/>多连接并行下载"]

        E1 --> P1
        E2 --> P2
        E3 --> P3
    end

    SOURCE[("数据源<br/>S3、HTTP、对象存储")]

    subgraph PIPELINE["独立处理流水线"]
        VERIFY["切片校验<br/>大小、范围、校验和"]
        RETRY["失败重新排队"]
        MERGE["完整文件合并"]
        CHECK["整片校验"]
        PUBLISH["原子发布"]
    end

    subgraph STORAGE["最终存储"]
        TEMP[("临时切片区<br/>保留已验证切片")]
        DISK1[("目标硬盘 1")]
        DISK2[("目标硬盘 2")]
    end

    SCH -->|"事务领取一级切片<br/>执行器 ID + 租约令牌"| E1
    SCH -->|"事务领取一级切片<br/>执行器 ID + 租约令牌"| E2
    SCH -->|"事务领取一级切片<br/>执行器 ID + 租约令牌"| E3

    E1 -.->|"心跳续租"| SCH
    E2 -.->|"心跳续租"| SCH
    E3 -.->|"心跳续租"| SCH

    P1 -->|"范围请求"| SOURCE
    P2 -->|"范围请求"| SOURCE
    P3 -->|"范围请求"| SOURCE

    P1 -->|"保存检查点"| TEMP
    P2 -->|"保存检查点"| TEMP
    P3 -->|"保存检查点"| TEMP

    TEMP --> VERIFY
    VERIFY -->|"失败"| RETRY
    RETRY -->|"释放租约并重新领取"| SCH
    VERIFY -->|"通过"| MERGE
    MERGE --> CHECK
    CHECK -->|"失败,保留切片"| RETRY
    CHECK -->|"通过"| PUBLISH

    PUBLISH --> DISK1
    PUBLISH --> DISK2
    PUBLISH -->|"发布成功后清理"| TEMP

    REC -->|"租约过期<br/>切片回到等待队列"| SCH