Акка Потоки + Акка Кластер - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть вопрос об использовании Akka Streams и Akka Cluster. Я пытаюсь сделать версию распределенного подсчета слов, используя Akka Streams и Akka Cluster.

Я хотел бы создать клиент Akka Streams, который считывает текстовый файл как потоковый ввод-вывод и отправляет поток слов в удаленный кластер. Это код клиента:

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 Streams (обратное давление и т. Д.).

Я знаю о существовании Stream refs и Cluster Client, но не понимаю, какой из них использовать.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Я не думаю, что вы ищете в настоящее время существует. Однако есть такая похожая вещь, называемая streamRefs, которая позволяет вам иметь реактивные потоки по сети. Взгляните сюда: https://doc.akka.io/docs/akka/2.5/stream/stream-refs.html

0 голосов
/ 11 ноября 2018

Прямой ответ

Не думаю, что необходимая вам функциональность доступна с версии 2.5.18. Инвентаризация функциональности кластера не перечисляет ничего, связанного с потоками.

Косвенный ответ

Вычислительные требования для вашего варианта использования должны быть весьма экстремальными, чтобы оправдать akka-stream, охватывающий несколько серверов. Количество параллелизма, доступного на одном сервере, довольно велико, учитывая рост числа ядер на современных процессорах. Поэтому для каждого шага вычислений в вашем потоке потребуется огромное количество процессорных ресурсов, чтобы оправдать охват потока по сети.

Если вы действительно работаете над таким крупным проектом, то такой инструмент, как apache spark , может лучше удовлетворить ваши потребности.

...