我发现 Slick 3.0 引入了一个新功能,叫做streaming
http://slick.typesafe.com/doc/3.0.0-RC1/database.html#streaming
我对阿卡不熟悉。streaming
似乎是一个惰性或异步值,但我不太清楚为什么它有用,什么时候有用..
有人对此有想法吗?
我发现 Slick 3.0 引入了一个新功能,叫做streaming
http://slick.typesafe.com/doc/3.0.0-RC1/database.html#streaming
我对阿卡不熟悉。streaming
似乎是一个惰性或异步值,但我不太清楚为什么它有用,什么时候有用..
有人对此有想法吗?
因此,让我们想象以下用例:
“慢”客户端希望从服务器获取大型数据集。客户端向服务器发送请求,服务器从数据库中加载所有数据,将其存储在内存中,然后将其传递给客户端。
在这里我们遇到了问题:客户端处理数据的速度没有我们想要的那么快=>我们无法释放内存=>这可能会导致内存不足错误。
反应式流通过使用背压解决了这个问题。我们可以将 Slick 的发布者包裹在 Akka 源代码周围,然后通过 Akka HTTP 将其“提供”给客户端。
问题是这种背压通过 TCP 通过 Akka HTTP 传播到代表数据库查询的发布者。
这意味着我们只能以客户端可以使用数据的速度从数据库中读取数据。
PS这只是可以应用反应流的一个小方面。
您可以在这里找到更多信息: