Ответ, как и во всех вопросах, связанных с производительностью / масштабированием: это зависит.
В ваших предпочтениях нет ничего, что заставило бы меня думать, что оно не сможет справиться с большим количеством пользователей. Но не зная, что именно вы хотите сделать или каков ваш бюджет, невозможно выбрать технологию.
Чтобы ваше приложение масштабировалось / работало, я бы рассмотрел следующее:
- Сохраняйте объем памяти каждого сеанса на низком уровне. Например, кеширование в
HttpSession
может работать, когда у вас 50, но не очень хорошая идея, когда у вас 5000 сеансов.
- Делайте как можно больше работы в базе данных, чтобы уменьшить объем перемещаемых данных (например, при просмотре таблиц с большим количеством строк убедитесь, что у вас есть подкачка, которая выполняется в базе данных (скорее чем вернуть 10000 строк в Tomcat, а затем выбрать первые 10 ...)
- Старайтесь минимизировать состояние, которое должно храниться внутри
HttpSession
, это упрощает кластеризацию.
Вероятно, самые важные рекомендации:
- Используйте инструменты нагрузочного тестирования, чтобы смоделировать вашу пиковую нагрузку и не только и провести тестирование. JMeter - инструмент, который я использую для тестирования производительности / нагрузки.
При нагрузочном тестировании убедитесь, что:
- То, что вы на самом деле используете 5000 пользователей (для создания 5000
HttpSession
с) и используете широкий спектр данных (чтобы всегда не попадать в кэш).
РЕДАКТИРОВАТЬ:
Я не думаю, что 5000 пользователей не так много, и вы можете обнаружить, что (с точки зрения производительности) вам нужен только один сервер (в зависимости от размера сервера и результатов нагрузочного тестирования, конечно, и в любом случае вы можете рассмотреть кластерное решение для отработки отказа ...) для обработки нагрузки (т. е. не каждый из 5000 пользователей будет одновременно нажимать кнопку, утром вы обнаружите, что нагрузка возрастает (т. е. все входят в систему) .