做了个下载器 FluxDown ,Rust 写引擎,Flutter 做界面。不打算在这儿铺功能列表,讲一个我自己制造又自己修掉的 bug ,觉得挺有意思。 多线程下载收尾的时候会有落后者问题:快的连接下完闲着,整体时间由最慢那条决定。常规解法是把剩余最多的那段从中点再切一刀给空闲连接。但切分有成本(一次 HTTP 往返),所以要设下限,我设的是 2MB ,按实时吞吐往下调到最低 512KB 。 然后发现一个漏网场景:1GB 文件 16 段,最后一段剩 1.5MB ,门槛 2MB 切不动,15 个 worker 干等 1 个。于是加了个「尾部微拆分」——常规切不动时降到 64KB 再试一次。 上线之后 99% 那里掉得更狠了。 排查出来是这样:50MB 的下载收尾时 48 个 worker ,每段都只剩约 66KB 。66KB > 64KB ,所以每段都「可以」被微拆。于是 worker 们互相把对方手里的段切成 33KB 碎片,切完发现再也找不到 ≥64KB 的段可切,集体退休,活跃 worker 从 48 直接掉到 16 。我为了修「最后 1% 慢」,造出了一个...