在akka群集节点之间传输数据

时间:2015-07-09 06:08:04

标签: scala playframework-2.0 akka iterate akka-cluster

我需要在akka群集节点之间的几百KB和多MB之间传输数据。最简单的方法是将其拆分为分块消息,但这似乎是可取的,因为它可能会干扰群集的内务处理聊天。

或者,我可以使用消息来传达一次性网址并使用http。

但是,我更喜欢持久连接方法,所以我在考虑使用zeromq和chunked消息。

但我不是采用自己的方法,而是想用现有的方法来实现这一目标,但我还没找到。

还有一个要求:大多数情况下,通过Play直接消耗该流,因此创建可用于将蒸汽代理到http的迭代的方法将更可取。

2 个答案:

答案 0 :(得分:1)

Akka Streams 2.5.12有StreamRefs用于我认为是你的用例。

答案 1 :(得分:0)

Iteratees无法跨越机器边界进行通信,因此单独的迭代可能不是您正在寻找的工具。

我会采用以下方法之一:

  1. 使用远程rpc akka Actors通过线路发送数据块。可以使用Actor在线路的任意一侧(Enumerator.unicastIteratee.foreach)创建迭代器和枚举器,这样您使用Actors的事实只是一个实现细节,在您的接口中不可见流。

  2. 使用Akka Streams。这个库支持TCP连接,虽然这是一个与迭代器不同的流式库,但我发现它在它支持的流操作中更加健壮。看起来Play正在寻找与Akka Streams一起移动towards a tighter integration,因为他们正在寻找用Akka Http Streams替换他们的netty HTTP后端