如何跨同一个 Web 应用程序的多个实例存储会话信息? [复制]

Posted

技术标签:

【中文标题】如何跨同一个 Web 应用程序的多个实例存储会话信息? [复制]【英文标题】:How can i store session information across multiple instances of the same web application? [duplicate] 【发布时间】:2022-01-21 05:03:08 【问题描述】:

look at the architecture first.

假设我有一个 monolith 在线电子商务网络应用程序,我使用会话 ID 来存储他/她以后想购买的用户物品。

由于请求量大,我决定在负载均衡器后面的同一应用程序的多台机器上创建多个实例,假设负载均衡器随机将请求重定向到实例。

有哪些方法可以跨机器记住用户? 因为我根本无法使用基于 HTTP cookie 的身份验证。(因为所有实例都在不同的 Web 服务器上运行) 在这种情况下,什么方法在 IT 界流行?

【问题讨论】:

***.com/questions/48293319/…这可能已经回答了 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:

简单,但肮脏:如果您使用的是 k8s 或 openShift,请配置粘性会话(通过 cookie,一个客户端将始终植根到同一个后端 pod,请参阅 this question by migueltaoliveira)。

正确的实现:使用持久层来存储基于会话的信息。这种层的主要候选者是redis (redis.io)和memcached (memcached.org)等服务。

【讨论】:

以上是关于如何跨同一个 Web 应用程序的多个实例存储会话信息? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET 中跨多个 Web 应用程序维护相同的会话 ID

跨页面存储会话数据最佳实践

硒;如何运行多个实例并维护不同的会话

Blazor Server 如何跨多个选项卡和刷新保存数据

JAX-WS 客户端:跨多个服务维护会话/cookie

CakePHP多个会话