首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理分布式应用程序中的会话

管理分布式应用程序中的会话
EN

Stack Overflow用户
提问于 2010-09-03 23:19:28
回答 3查看 7.7K关注 0票数 8

我正在开发分布式web应用程序,我们决定将web模块从业务服务中分离出来,以使其更具可扩展性。

情况是这样的:我们有一个服务器实例,用来保存web应用程序(控制器、JSP等),还有许多服务器实例和业务服务。如果web应用程序需要任何数据,它会通过Hessian向任何现有的业务服务器询问,然后获得响应并显示数据。

目前我们基于登录的用户从数据库中检索数据,这是不能改变的,所以每个服务器都应该知道是哪个用户要求做这项工作。

我的问题是:您是否知道跨多个独立应用程序保持用户会话的解决方案?

例如,其中一个解决方案可以是随每个请求发送用户名,但这对我们来说不是一个很好的主意。

非常感谢

EN

回答 3

Stack Overflow用户

发布于 2010-09-03 23:27:03

有两种方法可以解决这个问题:

1)将所有会话信息存储在中央memcached服务器中

2)使用会话感知负载均衡器,将相同的用户指向相同的节点。

票数 9
EN

Stack Overflow用户

发布于 2010-09-05 08:57:28

使用分布式哈希表从任何服务器存储和检索会话。例如,尝试使用Hazelcast。它是开放源码的,而且非常简单;请参见下面的示例。

代码语言:javascript
复制
Map<String, Session> mapSessions  = Hazelcast.getMap("sessions");
// session is created or updated so put it into the sessions map
mapSessions.put(sessionId, session);
// any server needing to access a session should just retrieve
// it from the map. 
// Map is distributed/shared so any JVM running Hazelcast can
// read the sessions.
Session session = mapSessions.get(sessionId);

Hazelcast是点对点的。只需包含一个单独的jar并开始共享您的会话。

票数 4
EN

Stack Overflow用户

发布于 2019-11-27 16:12:59

分布式Memcached服务器将是更好的选择,因为它可以优雅地管理存储。另一种替代解决方案是使用Redis,因为它比Memcached快得多,可以存储不同类型的数据,还可以用作数据库

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

https://stackoverflow.com/questions/3637161

复制
相关文章

相似问题

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