Как обрабатывать 1 миллион запросов в час с помощью синхронного приложения SpringBoot [closed]

Контекст
У меня есть сценарий — мне нужно открыть конечную точку отдыха и предоставить метод публикации, который будет использоваться внешним интерфейсом для получения значений формы (имя, электронная почта, адрес). С этими сведениями мне нужно вызвать сторонний API (ответ может занять до 10 секунд).

Кроме того, мне нужно где-то хранить обработанное приложение и ответ в БД, чтобы отслеживать их в целях мониторинга.

Проблема

  1. Моя конечная точка отдыха должна обрабатывать 1 млн запросов в час.
  2. Сторонний API (ответ может занять до 10 секунд — я знаю, что это довольно много, но мы не можем его контролировать).
  3. Данные формы и ответ необходимо сохранить в БД.

Я понимаю, что производительность приложения сильно зависит от оборудования и сервера.

Итак, рассматривая сервер как Tomcat, мы можем обслуживать 200 запросов в секунду (с количеством потоков по умолчанию). Таким образом, нам может потребоваться несколько доступных модулей этой службы. 1 кот может обслуживать 200 запросов в секунду и обрабатывать 1M запрос в первый час нам нужно обработать 1000000/(60*60)= 278 запросов / сек. И каждый из этих запросов может занять 10 секунд, чтобы получить ответ. Итак, допустим, у нас есть мощное оборудование с 278 потоки настроены для Tomcat. Нам нужен минимум 10-11 такие серверы (поды), чтобы иметь возможность обрабатывать этот объем.

Теперь я разработал такую ​​схему архитектуры —

введите описание изображения здесь

Что-то не хватает или какие-либо улучшения в дизайне с точки зрения подхода или инструментов?

Ценю вашу помощь 🙂

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *