Потоковая передача данных между узлами кластера akka

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

В качестве альтернативы я мог бы использовать сообщения для передачи одноразовых URL-адресов и использовать http.

Однако я бы предпочел подход с постоянным подключением, поэтому я думал об использовании zeromq и фрагментированных сообщений.

Но вместо того, чтобы использовать свой собственный подход, я хотел бы использовать существующий способ сделать это, но я его не нашел.

Еще одно требование: большую часть времени потребление этого потока идет прямо через Play, поэтому предпочтительнее подход, который создает итерацию, которую можно использовать для проксирования Steam на http.


person Arne Claassen    schedule 09.07.2015    source источник


Ответы (2)


Akka Streams 2.5.12 имеет StreamRefs для того, что я считаю, что это ваш вариант использования.

person akauppi    schedule 15.04.2018

Итераторы не могут взаимодействовать через границы машины, поэтому сами по себе итерации, вероятно, не тот инструмент, который вам нужен.

Я бы придерживался одного из следующих подходов:

  1. Использование удаленных актеров rpc akka для отправки фрагментов ваших данных по сети. Актеры могут использоваться для создания итераций и перечислителей по обе стороны (Enumerator.unicast и Iteratee.foreach) от провода, так что тот факт, что вы используете Актеры, является просто деталью реализации и не отображается в вашем интерфейсе этих потоков.

  2. Используйте Akka Streams. Эта библиотека поддерживает TCP-соединения, и, хотя это отличная от итераций библиотека потоковой передачи, я обнаружил, что она более надежна в поддерживаемых ею потоковых операциях. Похоже, Play хочет перейти к более тесной интеграции с Akka Streams, поскольку они рассматривают возможность замены своего netty HTTP-сервера на Akka Http Streams.

person Asa    schedule 04.08.2015