在Web应用程序中,用户会话管理对于管理用户状态非常重要。在本文中,我们将了解我们在集群环境中管理用户会话的方法是什么,以及如何使用Spring Session以更简单,更可扩展的方式实现它。
通常在生产环境中,我们将有多个服务器节点,其前面有一个负载平衡器,所有客户端流量将通过负载平衡器到达其中一个服务器节点。因此,我们需要一些机制来使用户会话数据可用于群集环境中的每个客户端。
传统上,我们一直使用以下技术来管理会话:
单节点服务器
1.具有负载均衡器和粘滞会话的多节点服务器
2.具有负载均衡器和会话复制的多节点服务器
3.具有负载均衡器和持久数据存储中的会话数据的多节点服务器
4.让我们简要地看一下这些方法。
一.单节点服务器:
大致如图:

2.具有粘滞会话的多节点服务器
为了使我们的应用程序高度可用并满足更多用户,我们可以在负载均衡器后面有多个服务器节点。在Sticky Sessions方法中,我们将负载均衡器配置为将来自同一客户端的所有请求路由到同一节点。

在此模型中,将在所有服务器节点上复制用户会话数据,以便可以将任何请求路由到任何服务器节点。即使一个节点发生故障,客户端请求也可以由另一个节点提供服务。

在此模型中,用户会话数据不会保存在服务器的内存中,而是将其持久保存到数据存储中并将其与SESSION_ID关联。

Spring Session是方法4的实现,它将会话数据存储在持久数据存储中。Spring Session支持多个数据存储,如RDBMS,Redis,HazelCast,MongoDB等,可以透明地保存使用会话数据。像往常一样,使用Spring Session和Spring Boot就像添加依赖项和配置一些属性一样简单。让我们看看如何在Spring Boot应用程序中使用带有JDBC后端存储的Spring Session。
您可以在https://github.com/sivaprasadreddy/spring-session-samples找到本文的源代码。