Контекст
У меня есть сценарий — мне нужно открыть конечную точку отдыха и предоставить метод публикации, который будет использоваться внешним интерфейсом для получения значений формы (имя, электронная почта, адрес). С этими сведениями мне нужно вызвать сторонний API (ответ может занять до 10 секунд).
Кроме того, мне нужно где-то хранить обработанное приложение и ответ в БД, чтобы отслеживать их в целях мониторинга.
Проблема
- Моя конечная точка отдыха должна обрабатывать 1 млн запросов в час.
- Сторонний API (ответ может занять до 10 секунд — я знаю, что это довольно много, но мы не можем его контролировать).
- Данные формы и ответ необходимо сохранить в БД.
Я понимаю, что производительность приложения сильно зависит от оборудования и сервера.
Итак, рассматривая сервер как Tomcat, мы можем обслуживать 200 запросов в секунду (с количеством потоков по умолчанию). Таким образом, нам может потребоваться несколько доступных модулей этой службы. 1 кот может обслуживать 200 запросов в секунду и обрабатывать 1M запрос в первый час нам нужно обработать 1000000/(60*60)= 278 запросов / сек. И каждый из этих запросов может занять 10 секунд, чтобы получить ответ. Итак, допустим, у нас есть мощное оборудование с 278 потоки настроены для Tomcat. Нам нужен минимум 10-11 такие серверы (поды), чтобы иметь возможность обрабатывать этот объем.
Теперь я разработал такую схему архитектуры —
Что-то не хватает или какие-либо улучшения в дизайне с точки зрения подхода или инструментов?
Ценю вашу помощь 🙂
![Как обрабатывать 1 миллион запросов в час с помощью синхронного приложения SpringBoot [closed] TheFAQ.ru](https://thefaq.ru/wp-content/uploads/2023/01/logo-250.png)
