Просто просматриваю старые сообщения SO для поддержки Spring Session Pivotal GemFire, поэтому приношу свои извинения, на ваш вопрос так и не был дан своевременный ответ.
Короче говоря, Spring Session использует UUID для создания "уникальных" идентификаторов сеанса. Например, см. здесь или, в более общем смысле, здесь.
ПРИМЕЧАНИЕ. Redis данных сеанса Spring поддерживает использует/обертывает класс MapSession
для хранения состояния сеанса в Redis по умолчанию.
Похоже, существует множество обсуждение эффективности или, скорее, уникальности UUID
для JVM в кластере. Этот конкретный, хотя и устаревший, привлек мое внимание, поскольку исходил из Oracle Форумы сообщества Java.
Однако имейте в виду, что использование Spring Session вашим приложением в конечном итоге определяет, являются ли идентификаторы сеанса уникальными; то есть это не зависит от количества узлов в кластере GemFire, поскольку отдельные узлы GemFire не генерируют идентификатор сеанса (приложения, использующие Spring Session).
Таким образом, если только одно приложение (вероятно, маловероятно в мире микросервисов) когда-либо присутствует с используемой Spring Session, то вероятностно гарантируется, что UUID будут уникальными. Даже тогда, на основе ссылки доступны, маловероятно, что 2 или более узлов "приложений", использующих Spring Session, когда-либо будут генерировать конфликтующие идентификаторы (хотя (почти?) все возможно ;-).
Хотя, я полагаю, если это имеет первостепенное значение/важность, следуя прекрасной традиции Spring, было бы просто расширить GemFireOperationsSessionRepository
и переопределить createSession(), вызвав соответствующий GemFireSession
конструктор для передачи нужного идентификатора сеанса.
Однако во всех случаях (GemFire, Redis и т. д.) проблема уникальности идентификатора сеанса не зависит от базового хранилища данных.
Надеюсь это поможет...
Ваше здоровье!
person
John Blum
schedule
15.06.2016