Akka流+ Akka群集

时间:2018-11-10 15:43:16

标签: java akka akka-stream akka-cluster

我对Akka Streams和Akka Cluster的使用有疑问。我正在尝试使用Akka Streams和Akka Cluster创建分布式单词计数的版本。

我想构建一个Akka Streams客户端,该客户端读取文本文件作为流I / O并将单词流发送到远程集群。这是客户端的代码:

final Path file = Paths.get("example.txt");
final Source<ByteString, CompletionStage<IOResult>> read = FileIO.fromPath(file);

final Source<Pair<String, Integer>, CompletionStage<IOResult>> counts =
  read
    .via(Framing.delimiter(ByteString.fromString(" "), 256, FramingTruncation.ALLOW))
    .map(i -> i.utf8String())
    .runWith(/* send to Akka cluster */);

我不明白在不丢失Akka Streams基础(反压等)的情况下将流数据发送到Akka集群所必须使用的内容。

我知道Stream ref和Cluster Client的存在,但是我不知道要使用哪个。

2 个答案:

答案 0 :(得分:0)

直接回答

我不认为您正在寻找的功能自版本2.5.18起可用。 inventory of cluster functionality未列出与流相关的任何内容。

间接答案

用例的计算要求必须非常极端,才能证明akka-stream跨越多个服务器。鉴于现代处理器的核心数量激增,单个服务器中可用的并行性数量非常大。因此,流中的每个计算步骤都将需要大量的处理器资源来证明跨网络跨流是合理的。

如果您确实在从事如此大的项目,那么像apache spark这样的工具可能会更好地满足您的需求。

答案 1 :(得分:0)

我不认为您正在寻找什么。但是,有一个类似的streamRefs东西,它使您可以在网络上拥有反应式流。在这里看看:https://doc.akka.io/docs/akka/2.5/stream/stream-refs.html