我有一个关于使用Akka Streams和Akka集群的问题。我正在尝试做一个使用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流的基础(背压等)的情况下将流数据发送到Akka集群。
我知道Stream refs和Cluster Client的存在,但我不知道该使用哪一个。
发布于 2018-11-11 21:31:54
直接应答
我不认为你正在寻找的功能在2.5.18版本中是可用的。inventory of cluster functionality不会列出任何与流相关的内容。
间接回答
您的用例的计算需求必须相当极端,才能证明跨越多个服务器的akka-stream是合理的。考虑到现代处理器上核心数量的爆炸性增长,单个服务器中可用的并行度是相当大的。因此,流中的每一步计算都必须需要大量的处理器资源,才能证明跨越网络的流是合理的。
如果您真的在处理这样一个大型项目,那么像apache spark这样的工具可能更适合您的需求。
发布于 2018-11-12 08:11:23
我不认为你目前正在寻找的东西是存在的。然而,有一个类似的东西叫做streamRefs,它允许你在网络上有反应式的流。看看这里:https://doc.akka.io/docs/akka/2.5/stream/stream-refs.html
https://stackoverflow.com/questions/53240558
复制相似问题