在最近的一次面试中,我被要求设计一个文件上传功能。在最初的讨论之后,面试官问我是否可以设计多个线程。我的想法是,由于网络带宽有限,而互联网是通过串行数据连接的,网络瓶颈将在CPU瓶颈之前很久出现,而多线程实现的性能提升将是有限的。但面试官在多线程方法上简直是地狱的折弯。支持多线程上传方法的论据是什么?(我最近了解到AWS有一个允许在多个线程上进行上传的库。因此,应该有一些我不知道的优点。)
发布于 2018-10-16 17:57:35
即使在高速网络上,由于bandwidth delay product的原因,TCP连接的速率也会受到限制。
在诸如传输控制协议的协议的设计中,高带宽延迟乘积是关于
调整的重要问题情况,因为只有在要求发送者发送足够大量的数据之前,要求发送者停止和等待,直到从接收者接收到确认消息,确认该数据的成功接收,该协议才能实现最佳吞吐量。如果与带宽延迟乘积相比,发送的数据量不足,则链路没有处于繁忙状态,协议的运行效率低于链路的峰值效率。
在大带宽延迟产品的连接上绕过TCP限制的一种简单方法是并行处理多个流。
https://stackoverflow.com/questions/52812324
复制相似问题