【问题标题】:How does stream backpressure behave with multiple stream listeners?多个流侦听器的流背压如何表现?
【发布时间】:2013-12-01 23:55:44
【问题描述】:

假设我有一个可读流sourceStream,它每秒生成约 32KB 的数据。我想将此数据通过管道传输到多个 HTTP 客户端的可写流。

客户端 A 具有良好的互联网连接,可以跟上我的流数据。客户端 B 连接在他/她可信赖的 14.4kbps US Robotics 调制解调器上。

sourceStream.pipe(resClientA); // Pipe to Client A's writable stream
sourceStream.pipe(resClientB); // Pipe to Client B's writable stream

这些是 TCP 连接,Node.js 将能够知道客户端何时落后。我知道 Streams 中内置了少量缓冲,但用不了多久该缓冲区就会满了,Node.js 将不得不对sourceStream 生成的所有数据进行处理。

当客户端 A 继续按预期获取数据时,它会无限期地为客户端 B 缓冲吗?或者,Node 是否会暂停流直到客户端 B 能够赶上,这意味着该流也会为客户端 A 暂停?或者,会发生其他事情吗?

【问题讨论】:

    标签: node.js stream


    【解决方案1】:

    它和最慢的阅读器一样慢。来源:https://github.com/isaacs/stream-multiplexer#the-problem

    大多数时候,您希望读者的速度不超过最慢的作者所能容纳的速度。在 Node v0.10 中,它就是这样工作的。

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 2023-04-04
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      相关资源
      最近更新 更多