我使用akka-streams的ActorPublisher演员作为每个连接Source的数据流,这些数据被发送到传入的 WebSocket 或 HTTP 连接。
ActorPublisher的合同是通过提供下游可以接受的元素数量来定期请求数据。如果需求为 0,我不应该发送更多元素。我观察到,如果我缓冲元素,当消费者速度较慢时,缓冲区大小在 1 到 60 之间波动,但大多在 40-50 附近。
为了流式传输,我使用akka-http将 WebSocket 输出和HttpResponse数据设置为 a Sourceof Messages(或ByteStrings)的能力。
我想知道在这种情况下背压是如何工作的——当我通过网络将数据流式传输到客户端时。这些数字究竟是如何计算的?它是否检查网络级别发生的事情?