3

我使用akka-streamsActorPublisher演员作为每个连接Source的数据流,这些数据被发送到传入的 WebSocket 或 HTTP 连接。

ActorPublisher合同是通过提供下游可以接受的元素数量来定期请求数据如果需求为 0,我不应该发送更多元素。我观察到,如果我缓冲元素,当消费者速度较慢时,缓冲区大小在 1 到 60 之间波动,但大多在 40-50 附近。

为了流式传输,我使用akka-http将 WebSocket 输出和HttpResponse数据设置为 a Sourceof Messages(或ByteStrings)的能力。

我想知道在这种情况下背压是如何工作的——当我通过网络将数据流式传输到客户端时。这些数字究竟是如何计算的?它是否检查网络级别发生的事情?

4

1 回答 1

2

对于您的问题“在这种情况下背压如何工作”,我能找到的最接近的来自文档

Akka HTTP 一直是流式传输的,这意味着 Akka Streams 启用的背压机制通过所有层暴露出来——从 TCP 层,通过 HTTP 服务器,一直到面向用户的 HttpRequest 和 HttpResponse 和他们的 HttpEntity API。

至于“这些数字是怎么计算出来的”,我相信是在配置设置中指定的

于 2017-09-06T13:02:25.390 回答