gpt4 book ai didi

java - AWS, Spring 启动,Tomcat : Session replication

转载 作者:行者123 更新时间:2023-11-28 22:49:23 24 4
gpt4 key购买 nike

我有一个 spring boot 应用程序,它使用嵌入式 tomcat。该应用程序托管在多个 EC2 实例上,如果需要,这些实例会自动缩放,其中一些可能会被终止/重新启动。因此,实际上有 3 个应用程序实例在运行,并且请求从负载均衡器路由到这些实例中的任何一个。

我正在尝试在我的应用程序上跟踪用户 session 。我开始使用 tomcat HttpSession 实现容器级 session 管理。但它无法跨实例跟踪 session 。经过一番研究,我知道我需要像 session 复制这样的东西。

我的应用程序没有运行 tomcat 集群,它有 3 个独立的 API 实例,它们无论如何都不会相互通信。我不打算改变它,也不确定 AWS 是否可行,因为它不鼓励为此目的进行多播通信。

此外,我不想为此目的设置/管理一个单独的数据库(如 redis with spring session),因为我只需要 session IDs 进行日志记录,我需要以一种轻量级的方式来做到这一点。

还有其他方法可以跨实例管理 session 吗?或者为了我的目的,只实现一些可以检查在前端和后端之间来回传递的 session ID/ token 的自定义代码会更好吗?

最佳答案

目标是从您的应用程序服务器外部化 session ,以便您可以自动缩放、重新启动、负载平衡等,而不必担心中断用户的 session 。

老实说,在 AWS 上使用 Spring 堆栈,我会推荐 Spring Session + Redis .我已经用过无数次了,而且很容易实现。您可以利用 AWS Elasticache它为您管理 Redis 集群(就像 RDS 为关系数据库所做的那样)。

您可以使用 S3、Dynamo 等后备存储编写您自己的 Spring Session 自定义实现。但这真的比 Redis 实现好吗?我会推荐阻力最小的路径。

关于java - AWS, Spring 启动,Tomcat : Session replication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45327456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com