file-upload - 使用多个线程进行文件上传有什么好处吗?
问题描述
我最近在一次采访中被要求设计一个文件上传功能。经过初步讨论,面试官问我是否可以设计多线程。我的想法是,由于网络带宽有限,并且互联网是通过串行数据连接连接的,网络瓶颈将在 CPU 瓶颈之前出现,并且多线程实现的性能提升有限。但是面试官对多线程方法非常不屑一顾。支持多线程上传方法的论据是什么?(我最近才知道 AWS 有一个允许在多个线程上上传的库。所以应该有一些我不知道的优势。)
解决方案
由于带宽延迟积,即使在高速网络上,TCP 连接的速率也会受到限制。
高带宽延迟产品是协议设计中的一个重要问题案例,例如传输控制协议(TCP)在 TCP 调整方面,因为该协议只有在发送方发送足够多的数据之前才能达到最佳吞吐量。需要停止并等待,直到收到来自接收方的确认消息,确认成功接收到该数据。如果与带宽延迟产品相比,发送的数据量不足,则说明链路没有保持忙碌,并且协议在链路的峰值效率以下运行。
解决 TCP 对具有大带宽延迟产品的连接的限制的一种简单方法是并行执行多个流。
推荐阅读
- python - 长度为 1 的字符串的索引超出范围
- openlayers-6 - 在 OpenLayers 中加载和渲染的最有效的矢量源格式?
- r - 在 R 中解析 ascii-art
- mysql - 充当 PK 和 FK(子类型关系)的列命名约定
- c# - 如何统一使用委托来通知firebase已检索到文档
- java - Getter 用于在 dynamoDB 中添加值
- linux - 有没有办法自动化键盘按下并在 bash 脚本中发回其他击键?
- scala - 使用 Scala 生成随机序列
- c++ - 一个线程结束后如何让两个线程轮流执行各自的临界区
- javascript - moment.tzguess() 的所有可能结果是什么?