fluxdown 中文文档 下载 App

令牌桶全局限速器 — 让下载不抢占整个带宽

为什么需要全局限速

默认情况下,FluxDown 会把所有可用带宽榨干——对于独占带宽下载场景是好事,但如果下载同时你还要看视频、远程桌面、或者浏览器访问,就需要限速。

传统限速器有两种:

  1. 每个任务单独限速 — 简单但不灵活,多个任务合起来还是会吃满。
  2. 全局限速 + 队列调度 — 一个桶管所有任务,配合队列的并发数控制更自然。

FluxDown 采用第二种。

令牌桶的工作方式

全局限速器是一个令牌桶:

设置总限速 5 MB/s:
每秒放入 5 MB 令牌 → 所有任务共享 → 谁先取谁用
桶容量一般设为总限速 × 2 秒 = 10 MB 缓冲

和队列调度的配合

全局限速器 + 每个队列的并发数控制 = 精细化调度。常见用法:

场景限速设置队列并发效果
独享带宽不限制16榨干
同时看视频总限速 30%8下载占剩余 70% 以下
后台安静下载夜间自动开启16 (每日 22:00 起)白天低调、晚上全速
NAS 上跑总限速 20 MB/s4不影响其他设备

设置入口

限速的开关与数值在「设置 → 下载 → 总带宽限制」。值为 0 表示不限速。这个设置直接作用于令牌桶的补充速率。

注意:BT 和 eD2K 协议的限速是整个客户端级别,不是任务级别——它们天然适合放全局桶里。HTTP/FTP/HLS/DASH 是任务内多线程,也从同一个桶取令牌。所有协议在一个桶里公平竞争。

为什么不是每个任务独立限速

因为 Work Stealing 需要引擎能自由地把空闲连接的带宽让给别的分段。如果每个任务自己有一个限速桶,一个任务快结束时它的桶会闲置——这部分带宽就浪费了。全局桶让任何任务随时可以吃掉其他任务释放的带宽。