6

我希望其他人向我解释,哪种方法更好:使用会话或设计无会话。我们正在开始开发一个新的 Web 应用程序,但尚未决定要遵循的路径。

无会话设计 IMO 更可取:

优点:

  1. 可扩展性。我们可以拥有任意数量的服务器,而无需共享用户会话。它们中的每一个都可以处理请求(例如通过循环进行负载平衡)。
  2. 节省服务器资源。我们不需要在服务器端分配内存(再次 - 可伸缩性)。
  3. 服务器重启后无需恢复。

缺点:

  1. 必须在 cookie 中保留一些与用户相关的信息(非关键)。
  2. 需要更多的编码(但不是真正的编码)。

在做出最终决定之前,我们需要注意哪些话题?

4

2 回答 2

4

今天的应用程序可以很快变得非常大(看看所有那些“小而简单”的工具,如 pastebin、jsfiddle 等!)。并且在某些时候一台 16 核的高端机器是不够的(有些人可能会说“你必须重新编码你的应用程序才能节省 cpu 功率 bla-bla”,但是每个服务器的 http-connection-limit 也是一个问题) . 因此,如果您计划构建一个可能比预期更受欢迎的公共应用程序,那么开始“无会话”是要走的路!老实说,这只会影响那些写出真正大事的人。

会话的杀手锏是:mySQL 数据库的流量更少,编码更容易。但是当您的应用程序变大时,您将不得不重写整个系统。

于 2012-06-16T23:59:21.430 回答
0

使用内存数据解决方案(如 REDIS 和基于 spring 的抽象来处理会话),我认为这个问题在今天的上下文中甚至都不成立。尝试保持应用程序会话较少显然更好,但根据需要,不需要对自己如此苛刻。集中式会话管理也不会导致缩放问题。

于 2019-09-16T07:37:35.010 回答