首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分布式环境中会话ID的唯一性?

分布式环境中会话ID的唯一性?
EN

Stack Overflow用户
提问于 2016-01-04 10:22:08
回答 1查看 1.5K关注 0票数 1

对于在分布式环境中运行的Spring应用程序,我们使用Spring会话(由关键的Gemfire备份)。

在这样一个分布式的环境中,

Spring会话是否确保为跨不同JVM创建的新会话使用唯一的会话id?

EN

回答 1

Stack Overflow用户

发布于 2016-06-15 22:01:08

只是回顾一下Spring会话关键GemFire支持的旧SO帖子,所以我很抱歉您的问题没有得到及时的回答。

简而言之,Session使用UUID类生成“唯一”会话ID。例如,请参阅这里,或者更一般地看这里

注意:缺省情况下,Session支持使用/包装 MapSession类来存储会话状态。

对于集群中跨JVM的讨论的有效性(或者说唯一性),似乎有很多UUID。这个特别是一个虽然过时了,但引起了我的注意,因为它起源于Oracle社区论坛。

但是,请记住,最终确定会话ID是否唯一的是应用程序对Session的使用;也就是说,它不依赖于GemFire集群中的节点数量,因为单个GemFire节点没有生成会话ID(使用Session的应用程序)。

因此,如果只有一个应用程序(可能在世界的Microservices状态中不太可能)出现在Spring会话中,那么UUID就有可能被保证是唯一的。即便如此,基于参考文献可用,使用Spring会话的2个或更多“应用程序”节点生成冲突的ID(虽然,(几乎?)一切皆有可能;-)

不过,我想,如果它是最重要的,遵循Spring的美丽传统,那么扩展 GemFireOperationsSessionRepository并覆盖createSession()方法,调用适当的GemFireSession 构造函数来传递所需的会话ID将是一件简单的事情。

但是,在所有情况下(GemFire、Redis等),会话ID唯一性问题都与底层备份数据存储无关。

希望这能帮上忙。

干杯!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34588960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档