有2个主要问题:
- 每个种子(通常)都需要定期向跟踪器宣布,这最终可能会使用大量带宽。
- bittorrent 客户端本身需要以一种可扩展大量种子的方式编写
至于跟踪器流量,假设您有 100 万个种子,典型的重新发布间隔为 30 分钟,但某些跟踪器将其设置为 1 小时。让我们保守一点,假设您的跟踪器使用 1 小时宣布间隔。您必须每小时发出 100 万个 GET 请求,假设每个请求向上 400 字节,向下 100 字节(假设大多数响应不包含任何对等点),大约 111 kB/s 向上和 28 kB/s 向下不断。这还不错,但请记住,TCP 需要额外的往返来建立连接,因此又要减少 40 字节和增加 40 字节。
这可以通过仅使用UDP 跟踪器来缓解。那么您只需要一个连接消息,并且您可以为每个通知重用连接 ID。然后每个宣布消息将是 100 字节,返回的消息也会更紧凑,假设 60 字节。这将使您的速度提高 28 kB/s,降低 16kB/s,只是为了让种子保持公布。为此,您需要一个具有良好 udp 跟踪器支持的客户端(例如缓存连接 ID 的客户端)。
还不错,假设与您的种子发送的实际数据相比,这微不足道。
但是,您不一定需要将种子分散到不同的数据中心,您也可以使用 HTTP 服务器来播种种子。所有主要的 bittorrent 客户端都支持 http 播种,您不必担心向跟踪器宣布(URL 被烧录到 .torrent 本身)。
至于可以很好地扩展种子的客户端,我不确定,我没有做过任何测量。生成一百万个随机种子并尝试加载它应该是相当简单的。
我在libtorrent rasterbar中做了一些优化工作,以使其能够很好地适应许多种子,但我还没有尝试过数百万。
我已经写了一篇关于这个主题的博文,在这里。