gpt4 book ai didi

spring - 如何制作无状态的 Web 应用程序?特别是对于 Spring MVC?

转载 作者:行者123 更新时间:2023-12-04 23:53:14 26 4
gpt4 key购买 nike

The stateless web application seems promising .如何制作一个?特别是对于 Spring WebMvc?有什么指导方针吗?

以下是我的一些想法:

  • 避免创建 session
  • 对状态信息使用集中存储,并在网络应用程序实例之间共享。

添加 1

我认为这不是是否保留状态信息的问题。如果您想做一些有用的事情,状态信息始终是必需的。这实际上是一个问题,在哪里/如何保存状态信息。这article很有用。它提到了进程内/进程外 session 、数据缓存以及为什么不使用 session 。

相关:

Use Spring MVC for Stateless web application development (暂无回应)

Stateless Spring MVC

How to make a java web application fully stateless

How do I make my Web Application stateless yet still do something useful?

http://brockallen.com/2012/04/07/think-twice-about-using-session-state/

最佳答案

这里有一些贡献。我不熟悉 Java 和 Spring,但我相信无论您的技术堆栈如何,这些指南都是有效的。

远离身份验证 session

正如您在问题中预期的那样,避免使用 session 来验证用户身份。 session 是强制性的,很难在分布式、可扩展的基础架构中一致地复制它。

此外,负载平衡器不能很好地处理 session :参见 Problem with Session State timeing out on Load Balanced Servers .

使用基于 token 的身份验证系统

无状态应用程序最好使用基于 token 的身份验证系统。 Firebase是一个很好的例子。将从 token 中提取的不可变用户 ID 映射到您要使用的任何存储机制中持久保存的用户数据。由于此用户 ID 不会更改,因此您可以在分布式数据库中使用。

不要将无状态与“无数据持久性”混淆

有时人们认为,通过将用户 ID 映射到数据库中的用户数据,您正在制作一个有状态的应用程序。这不是真的。让我说清楚:

将用户信息保存在数据库中并对经过身份验证的用户进行动态响应的应用程序不一定是有状态的。无状态意味着应用不必在多个服务器之间分发可变身份验证 session ,也不会根据 session 数据将其内部状态更改为特定客户端。

无状态的诀窍是:一旦用户通过登录验证其 token ,服务器就不必在数据库服务器之间分发任何新内容,也不会更改其状态到该客户端。它可以从 token 中提取用户信息并执行响应请求所需的操作。如果 token 过期,客户端将需要新的身份验证,这将生成一个新的 token ,但这与应用服务器隔离,因为用户 ID 将保持不变。

在保持无状态的情况下使用 cookie 进行缓存

如果在 cookie 中缓存一些经常请求的数据会提高性能,那很好,继续缓存。只需确保 cookie 未连接到任何服务器状态,如果客户端丢失 cookie,您的应用程序就不会中断。

关于spring - 如何制作无状态的 Web 应用程序?特别是对于 Spring MVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651801/

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