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