Как управлять сеансом пользователя на сервере AWS?

У меня есть бэкэнд в JAVA, а веб-сайт размещен на сервере AWS (2 или более). Каков наилучший способ обработки пользовательской сессии на моем сайте?

Посмотрел в HTTPSession но недостатком является то, что сеанс одного сервера не будет иметь те же атрибуты, что и сеанс другого сервера. Итак, что является лучшим решением для обработки пользовательского сеанса?

PS: я использую Struts2.

1 ответ

Решение

Существует два основных подхода к работе с состоянием сеанса, когда у вас есть несколько серверов приложений, которые могут обрабатывать запросы:

  1. Ваш балансировщик нагрузки должен выполнять "липкие" сессии. Здесь балансировщик нагрузки отправляет все запросы от одного и того же клиента на один и тот же сервер приложений. Сеанс поддерживается там локально, и все работает так, как если бы был только один сервер приложений. Когда сервер приложений выходит из строя, все сеансы, которые были привязаны к этому серверу, теряются.

  2. Иметь общее хранилище сеансов, доступное для всех серверов приложений. Когда сервер приложений получает запрос, он захватывает состояние сеанса из хранилища сеансов, а когда он завершает изменение состояния сеанса для этого запроса, он записывает его обратно в хранилище. Хранилище сеансов может быть общей базой данных или, возможно, кэшем в памяти, к которому удаленно обращаются все серверы приложений. Если сервер приложений выходит из строя, сеансы не теряются. Однако при каждом запросе чтения / записи сеанса по сети возникают дополнительные издержки.

Чтобы решить, какой подход использовать, вам нужно будет учитывать важность того, чтобы не прерывать сеансы при потере сервера, размера состояния сеанса и т. Д. На мой взгляд, общее хранилище сеансов почти всегда желательно, так как с точки зрения работы намного проще справиться - вы всегда можете взломать сервер, когда захотите, не убивая сессии.

Я не буду рассуждать о возможном выборе продуктов для поддержки реализации, поскольку это будет исключительно основано на мнении и не по теме для этого сайта. Достаточно сказать, что есть много хороших вариантов - выбор, который будет правильным для вас, будет зависеть от ваших конкретных требований и опыта.

Другие вопросы по тегам