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