为什么低延迟会导致低吞吐量?

why low latency gives low throughput?

关于有关 Databricks 的博客上的此声明 SQL

Throughput vs latency trade off
Throughput vs latency is the classic tradeoff in computer systems, meaning that a system cannot get high throughput and low latency simultaneously. If a design favors throughput (e.g. by batching data), it would have to sacrifice latency. In the context of data systems, this means a system cannot process large queries and small queries efficiently at the same time.

根据定义,低延迟不意味着高吞吐量吗?他们为什么建议低延迟提供低吞吐量?

如果ThroughPut指的是在给定时间内完成的请求数,latency指的是服务单个请求的时间,那么肯定每个请求的时间更少意味着我们可以在同一时间范围内处理更多请求。

例如,如果每个请求的延迟为 1 秒,则服务器可以在 10 秒内处理 10 个请求。

如果延迟减少到每个请求 0.5 秒,则服务器的吞吐量是 10 秒内 20 个请求。

根据这个定义,低延迟不应该意味着高吞吐量吗?

你是对的,作为一般概念,低延迟系统将花费更短的时间来处理单个操作,因此可以处理比表现出更长延迟的同一系统更多的消息。

但在实践中,尤其是在编程中,系统的延迟会受到吞吐量的影响。我们可能需要允许清理资源并在周期之间再次准备就绪,其中一些资源可能是强制执行节流限制的数据库或本身具有安全操作限制的其他进程。在某些时候,我们经常会遇到给定处理模型的限制,这将迫使我们改变我们的流程。

如果我们将运算符处理器扩展到更多资源上,您可能会发现每条消息的处理成本会显着增加,即便如此,您仍可能 运行 遇到最大吞吐量问题。

在这些系统中,通常会观察到延迟随着吞吐量要求的增加而增加的模式。在这些系统中,低延迟只能在低吞吐率下观察到。

物联网和实时处理是一个常见领域,我们可能需要实现比低延迟系统更高的吞吐量,这通常是通过实施批处理来实现的。

批处理通常比大多数消息流的延迟要高得多,但总的来说,它可以使用更少的资源处理更多的消息。

在批处理系统中,我们可以通过改变批处理的大小来调整吞吐量,批处理中的更多消息意味着这些消息将需要等待更长的时间才能被处理,因此这会增加延迟,但总体来说批处理更大大小可能会增加总吞吐量。

这种低延迟=低吞吐量的对话通常就是这种批处理场景。此剪辑中提到:https://www.youtube.com/watch?v=PXHLZGp-XMc

It is not that low latency systems can only produce low throughput, but more specifically that low throughput systems can more easily achieve lower latencies.