Я работаю над веб-приложением, которое принимает пользовательский ввод и использует кластер для параллельных вычислений на входе. Акка-кластер используется для облегчения этого.
В настоящее время я использую Play Framework для управления HTTP-запросом в моем веб-приложении. Исходя из этого, я подумываю о том, чтобы передать пользовательский ввод внешнему субъекту Akka, который перенаправляет запрос нескольким внутренним субъектам для параллельного вычисления промежуточных результатов. Затем у меня есть другой субъект, который объединяет промежуточные результаты, прежде чем окончательно вернуть конечный результат пользователю. Каждый расчет может занять от нескольких минут до часа.
(Я получил идею использовать фронтенд и бэкэнд-актер из этого примера )
Меня беспокоит то, что клиент внешнего интерфейса должен принять запрос от каждого пользователя и предоставить отчет о ходе выполнения задания. Моя первая мысль - использовать шаблон 'ask', но я думаю, что это неправильный подход, поскольку это означает, что только один пользователь может быть сервером одновременно. Так что в настоящее время я думаю об использовании асинхронного «рассказать» для обслуживания запроса.
Мои вопросы: правильный ли это подход к проблеме? Если я использую функцию «Рассказать», то как мне уведомить пользователя о завершении работы? Кроме того, поскольку я использую Play Framework, возможно ли интегрировать интерфейсный пользователь с Play, чтобы показать обновление веб-страницы?