Какое хорошее решение для репликации сеанса сервлета Java FOSS

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

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


person Community    schedule 10.08.2009    source источник


Ответы (1)


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

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

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

person ZZ Coder    schedule 10.08.2009