anmolkapil/plexo

# 中文学习卡:Plexo

一、一句话定位


Plexo 是一款利用多网络接口(Wi‑Fi、以太网、USB 网络共享等)同时并行下载同一文件,从而聚合带宽、加速下载的跨平台下载管理器。

二、核心技术/架构亮点


1. HTTP Range 分片 + 动态工作窃取队列
将文件切成 8 MB 固定块,使用 HTTP 206 分片请求,通过集中队列让快接口“偷”更多任务,避免慢接口拖累整体。

2. 多接口绑定(localAddress)
借助 Node.js 的 `localAddress` 选项,让不同 TCP 连接绑定到各自网卡的 IP,无需虚拟适配器、内核扩展或 root 权限。

3. 安全断点续传
暂停时保留各块文件;恢复前校验 ETag/Last‑Modified,若服务器文件变化则拒绝续传,防止数据损坏。

4. 实时监控与染色网格
提供实时吞吐图、ETA 计算,并以 8 MB 颗粒度展示每个块由哪个网卡下载,支持自定义网卡名称和颜色。

5. 异常自愈机制
自动重试失败分片(指数退避,最多 5 次)、检测 >20s 无数据连接并重新入队、透明跟随 3xx 重定向。

三、适用场景与目标用户


- 目标用户:拥有多个网络连接(如公司内网+手机热点、双宽带)的开发者、运维或下载重度用户。
- 适用场景:下载大文件(ISO、数据集、固件)时希望充分利用闲置网卡带宽;在 USB 网络共享或线程不稳定的环境下实现容错。

四、可动手动作


1. Clone 并运行
`git clone https://github.com/anmolkapil/plexo.git && cd plexo && npm install && npm start`,在 Windows/macOS 上实践。
2. 借鉴核心思路
在自己项目中复用 `http.request({ localAddress })` 实现多网卡负载分发,或实现一个简单的 work‑stealing 队列。
3. 接入现有工具
将 Plexo 作为下载后端,通过其 CLI 或 API 集成到脚本/流程中(需查看是否有 CLI,README 未明确,但可自行扩展)。

五、学习优先级


P1(排期尝试)
理由:该项目用纯 JS 实现,无系统级依赖,代码简洁(约数千行),可在 1~2 天内跑通并理解分片+localAddress 核心机制,对提升多网环境下大文件下载速度有立竿见影的效果,适合加入个人工具箱。
赣ICP备2026023170号-1
⌂