networking - 在并发下载器中实现最佳性能
问题描述
我正在开发一个必须从大量服务器下载大量微小数据块的应用程序。我有一组数据块要下载,并且可以同时运行下载任务。这里的问题是如何动态管理下载过程以实现最佳性能。例如,在具有 1 GBit 网络链接的机器上,我运行 100 个并发下载任务以达到最佳效果。但是对于运行 100 个任务而不是例如 4 个任务的 1 Mbit 网络,将在客户端计算机上引起显着的网络问题,并且不会导致最佳结果。下载过程的实现可以在底层(使用套接字)完成,以实现对过程的最大控制。值得注意的是,我的网络吞吐量永远是瓶颈。无需考虑庞大的目标服务器的性能。这里唯一的目标是尽可能快地下载块。我正在寻找可以解决问题的算法或在类似软件中实现的成功解决方案的示例。
解决方案
推荐阅读
- c# - 如何在 .NET CORE 2.2 中通过代码优先方法使用 linq2db 在 Microsoft SQL Server 中创建数据库
- php - Laravel api.php 中间件
- python-3.x - 多个版本的 Anaconda & Python 安装
- java - Firestore 按文档 ID 或文档字段搜索和排序,哪个更好?
- python - matplotlib 在 pyqt5 中如何使用 qt 设计器
- php - 计算范围之间的值
- mysql - MySQL:尝试根据 CASE 选择表,收到错误代码:1241 操作数应包含 1 列
- r - 使用 MatchIt 的粗化精确匹配返回错误
- go - 如何控制 gin 1.4.0+ 中缺少 URL 参数的行为?
- html - 如何在自定义 Django 模板标签中动态呈现 Vue.js 指令