设计 Web 应用程序:会话或无会话



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

IMO更可取的无会话设计:

优点:

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

缺点:

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

在做出最终决定之前,我们需要考虑什么主题吗?

今天的应用程序可以迅速变得非常大(看看所有那些"微小,简单"的工具,如pastebin,jsfiddle等!在某些时候,一台 16 核高端机器是不够的(有些人可能会说"你必须重新编码你的应用程序才能节省 CPU 功耗",但每台服务器的 http-connection-limit 也是一个问题)。因此,如果您计划构建一个可能比预期更流行的公共应用程序,那么开始"无会话"是要走的路!老实说,这只会影响那些写真正大东西的人。

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

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

最新更新