У меня есть веб-сервис, который выполняет ряд запросов к базе данных (в MongoDB), а затем выполняет нетривиальное количество обработки записей, возвращаемых этими запросами базы данных. Каждый веб-запрос должен запускать около 15-45 из этих запросов, что вызывает неприемлемое время отклика страницы, так как каждый запрос + обработка занимает около 20 мс. Кэширование не будет работать, так как скорость кэширования будет высокой, и данные должны быть как можно более свежими.Параллелизация/потоки внутри веб-запроса в Scala/Java?
Я планировал использовать Scala + Akka и актеров для распараллеливания класса, выполняющего и обрабатывающего запросы, но я знаю, что создание потоков внутри контейнера сервлетов не рекомендуется. Каков рекомендуемый способ выполнения потоковой обработки/распараллеливания внутри веб-запроса в Scala?
Я не отвечаю на ваш вопрос, потому что, если у вас не может быть более одного потока, я понятия не имею, как вы распараллеливаете что-либо. Я бы сказал, что использование Аккой Актеров, вероятно, не будет отличной идеей. Akka Futures - это путь сюда. –
@Derek Я думаю, что это мой вопрос, можно ли использовать Актеры в моем коде внутри веб-запроса в Scala + Akka? Я хочу иметь более одного потока, обертывая класс, который выполняет запрос и обработку в Актере. Я рассматриваю Futures, но также хотел узнать, могу ли я использовать Актеры. –
Я успешно написал высоконадежные и масштабируемые приложения с Mist - надстройкой HTTP в Akka, которая ставит актерскую прокладку между вашей бизнес-логикой и веб-контейнером. Поэтому я не понимаю, почему с этим возникли проблемы. –