Что такое хорошее решение для репликации сеансов Java-сервлетов FOSS? - PullRequest
0 голосов
/ 10 августа 2009

Я работаю на общедоступном веб-сайте очень большого объема, работающем на Tomcat 5.5. В настоящее время нам требуется привязанность к конкретному серверу, чтобы поддерживать сеанс. Я хотел бы начать репликацию сеанса, но у меня возникли проблемы с поиском хорошего решения FOSS. Я написал свой собственный диспетчер (используя memcached в качестве хранилища), но у меня возникают проблемы с условиями гонки, если более одного сервера обрабатывает запросы для одного и того же пользователя.

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

1 Ответ

0 голосов
/ 10 августа 2009

Это сложная проблема. По моему мнению, сеансы сервлетов в Tomcat вообще не работают, если у вас несколько серверов и геораспределение.

Наше решение состоит в том, чтобы сделать наш сервер полностью без сохранения состояния. Все сеансы хранятся только в базе данных. Мы используем локализованный MySQL с механизмом памяти, и производительность намного выше, чем у старых методов, использующих репликацию сеансов Tomcat.

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

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