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

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

Делаю небольшое приложение на SpringBoot - агрегатор метрик. Одной из задач является получение определённых метрик из другого сервиса (сервис метрик) за указанный в настройках агрегатора лимит времени. То есть пользователь делает запрос в агрегатор, который в свою очередь должен, например, за 500 мс сделать как можно больше запросов в сервис метрик, отбросить все, которые не он не успел получить за указанное время и произвести над результатом определённую обработку и отдать пользователю. Изначально я планировал использовать executorService и Future объекты, чтобы проверять через метод get(), есть ли результат от запроса и далее агрегировать это всё по определённой логике. Непонятно сколько потоков генерить в executor при старте приложения, можно ли как-то это рассчитать? Вопрос какие проблемы в такой архитектуре, как сделать лучше?
  • Вопрос задан
  • 363 просмотра
Подписаться 3 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Академия Эдюсон
    Java-разработчик: тариф Базовый
    8 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Java-разработчик + ИИ
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
petejones83
@petejones83
Если запросы проходят быстро, то стоит начать с количества тредов, равного количеству ядер. Кодирование/декодирование запросов все равно будет лимитировано на ядра.
Если длительность запросов может быть разной, то стоит поглядеть на NIO -- там можно добиться сильно большей параллельности, но обработку все равно ограничить количеством ядер.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Казань
от 75 000 ₽
ИТРУМ Ростов-на-Дону
от 75 000 ₽
Яндекс Москва
от 180 000 до 350 000 ₽