У нас есть приложение на базе Spring с многоуровневой архитектурой.
Слои в следующем порядке
Rest
Service
DB Layer
Все они объединены в файл .war
и развернуты внутри Apache Tomcat 7
У нас есть API-интерфейсы Rest, которые выполняют некоторые серии работ на уровне сервиса и возвращают ответ.
Например:
Policy Push API сделаетпроверка соответствия, проверка и отправка данных и запись в БД и показ сообщений пользователю.Этот процесс занимает около 2 секунд.
Несколько дней назад наш сервер начал падать.При проверке мы обнаружили, что мы выполняем около 2000 запросов / сек, которые tomcat
не может обработать.
Чтобы преодолеть это, мы добавили Nginx Loadbalancer
с 3 экземплярами.
в некоторой степени, но я чувствую, что это просто исправление.
Я рассматривал Kafka
, RabbitMQ
как вариант.Но в этом случае проблема будет Запрос будет добавлен в очередь, и ответ будет переадресован пользователю .
Нам нужно показывать статус Политики в реальном времени.
Добавляя его в очередь, вы не гарантируете, что политика выдвинута.
Было бы полезно, если бы кто-то мог помочь с этим вариантом использования, как обращаться?
Является ли добавление дополнительного сервера для балансировки нагрузки единственным вариантом иличто-то еще?