玩WS最大连接

Play WS max connection

我们有三个组件(A、B 和 C)。 "A" 将数据发送到 "B","B" 处理数据,然后 post 使用 play WS 将其发送到 "C"。我们遇到 "C" 处理数据缓慢的情况,超时发生在 "B"。但是"B"里面有很多数据流入,一直post到"C"导致整个系统运行内存不足,最后崩溃。有没有办法限制 "B" 中 WS 请求的数量?搜索了 WS API 但没有成功。这应该如何处理?请提出建议。

考虑 Akka 和一些节流算法:http://letitcrash.com/post/28901663062/throttling-messages-in-akka-2

问题与最大连接数无关,与其他 api 无关。这个问题在分布式系统中很常见,命名为"Fast producer and slow consumer"。有更多的解决方案然后我可以写在这里但一个简短的列表将是:

  • 消息队列(对于 ActiveMQ,请参阅 Slow Consumer Handling
  • BackPressure(这是一种可以用一句话解释的方法;"Producer sends data only when consumer asks",顺便说一句,Akka Streams 以一种优雅的方式提供了它)
  • 扩展(最直接的方法,如果你想让你的系统更快,只需增加你的消费者数量和他们之间的负载平衡请求,或者让消费者更快)

编辑: 根据 Documentation you can set a max. connection per host or total for client library, as I mentioned above the right way is improving architecture but this may also help and save the day. Also check reference.conf 所有配置选项。