Есть ли способ указать другое хранилище сеансов с Tomcat? - PullRequest
4 голосов
/ 17 сентября 2008

Tomcat (версия 5 здесь) сохраняет информацию о сеансе в памяти. При кластеризации эта информация периодически передается на другие серверы в кластере для обеспечения синхронизации. Вы можете использовать хранилище базы данных, чтобы сделать сеансы постоянными, но эта информация также записывается только периодически и действительно используется только для восстановления после сбоев, а не для замены сеансов в памяти.

Если вы не хотите использовать липкие сессии (наша конфигурация, к сожалению, этого не позволяет), это поднимает проблему срыва сеансов из синхронизации.

На других языках веб-платформы, как правило, позволяют использовать базу данных в качестве основного хранилища сеансов. Хотя это приводит к потенциальной проблеме масштабирования, оно делает управление сеансами очень простым. Мне интересно, есть ли способ заставить tomcat использовать базу данных для сеансов таким образом (технически это также устранит необходимость в любой конфигурации кластеризации в tomcat server.xml).

Ответы [ 4 ]

3 голосов
/ 17 сентября 2008

Там определенно есть способ. Хотя я бы решительно проголосовал за липкие сессии - экономит так много нагрузки для ваших серверов / базы данных (если что-то не получается) ...

http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html содержит информацию о конфигурации и настройке SessionManager для Tomcat. В зависимости от ваших конкретных требований вам может потребоваться реализовать собственный менеджер сеансов, но эта отправная точка должна предоставить некоторую помощь.

2 голосов
/ 12 апреля 2011

Другой альтернативой может быть memcached-session-manager , решение для восстановления сеансов на основе memcached и репликации сеансов для tomcat 6.x / 7.x. Он поддерживает как липкие сессии, так и не липкие сессии.

Я создал этот проект для достижения максимальной производительности и надежности, а также для возможности масштабирования, просто добавив больше узлов Tomcat и Memcached.

2 голосов
/ 29 июля 2010

Я всегда был поклонником техники сессий Rails: сохраняйте сессии (в архиве + зашифрованные + подписанные) в куки пользователя. Таким образом, вы можете сделать балансировку нагрузки для вашего сердца, и вам не придется беспокоиться о зависающих сессиях или попадании в базу данных для ваших данных сеанса и т. Д. Я просто не уверен, что вы могли бы легко реализовать это в Java-приложении без какого-либо переписать ваш код сеанса доступа. Во всяком случае, просто мысль.

2 голосов
/ 17 сентября 2008

Взгляните на Терракотовую , я думаю, что она может решить ваши проблемы с масштабированием без серьезного изменения дизайна приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...