端到端的反应流RESTful服务(例如,HTTP上的背压)

时间:2015-05-18 09:01:54

标签: scala rest akka akka-stream reactive-streams

我一直试图在网上澄清这个问题一段时间没有成功,所以我会试着在这里问一下。

我想找到一些资源或示例,其中显示了我如何构建端到端完全反压的REST服务+客户端。我的意思是,我希望看到这一点,给定一个实现Reactive Streams的REST客户端(无论是在Akka,JS还是其他),我将拥有(并且能够"可视化")在整个构建的REST服务器中处理压力,例如与Akka-Http。

要说清楚,我正在寻找类似下面的话题(但我找不到幻灯片或视频来确认):http://oredev.org/2014/sessions/reactive-streaming-restful-applications-with-akka-http

我对大多数示例的疑问是关于这样一个事实:我可以找到很多案例,其中REST服务(服务器)使用Akka Http和Akka流作为后端,但我不确定背压是&# 34;连通"通过HTTP和REST,如果客户端正在实现Reactive Streams。在这种情况下,我会有一个"流"桥接TCP / HTTP或只有2个独立的流?这是我的主要怀疑和困惑。

希望我足够清楚,有人能够对此事有所了解 无论如何,谢谢!

1 个答案:

答案 0 :(得分:9)

你到了正确的地方询问Akka的问题: - )

我知道有两个演讲,演示了使用http时背压机制是如何工作的演示。

1)一个是Roland Kuhn’s talk on ScalaDays SF 2015: http演示的反压开始于本次演讲的第44分钟。

2)My talk from ScalarConf Warsaw 2015。溪流部分开始于18分钟左右, 并且在第24分钟左右看到了背压演示。它显示了一个“快速处理”和“慢速处理”服务器,您可以在其中看到 当文件被上传时卷曲客户端被反压(我使用文件作为例子,因为它是一个很好的“大请求”)。

由于TCP内置机制,背压传播到客户端 - 在服务器端,我们根本无法从套接字读取 直到需求可用,这会导致背压正常传播。

我希望这有帮助!