Задать вопрос

Какие best practices выбрать для архитектуры многопоточного java сервиса?

Делаю небольшое приложение на SpringBoot - агрегатор метрик. Одной из задач является получение определённых метрик из другого сервиса (сервис метрик) за указанный в настройках агрегатора лимит времени. То есть пользователь делает запрос в агрегатор, который в свою очередь должен, например, за 500 мс сделать как можно больше запросов в сервис метрик, отбросить все, которые не он не успел получить за указанное время и произвести над результатом определённую обработку и отдать пользователю. Изначально я планировал использовать executorService и Future объекты, чтобы проверять через метод get(), есть ли результат от запроса и далее агрегировать это всё по определённой логике. Непонятно сколько потоков генерить в executor при старте приложения, можно ли как-то это рассчитать? Вопрос какие проблемы в такой архитектуре, как сделать лучше?
  • Вопрос задан
  • 361 просмотр
Подписаться 3 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Хекслет
    Java-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
petejones83
@petejones83
Если запросы проходят быстро, то стоит начать с количества тредов, равного количеству ядер. Кодирование/декодирование запросов все равно будет лимитировано на ядра.
Если длительность запросов может быть разной, то стоит поглядеть на NIO -- там можно добиться сильно большей параллельности, но обработку все равно ограничить количеством ядер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы