【问题标题】:Designing web application: Session or session-less设计 Web 应用程序:会话或无会话
【发布时间】:2012-04-23 06:09:17
【问题描述】:

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

无会话设计 IMO 更可取:

优点:

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

缺点:

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

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

【问题讨论】:

  • Stack Overflow 不是公开讨论的好地方。见stackoverflow.com/faq
  • 以更恰当的形式重新陈述了这个问题。

标签: session cookies web application-design session-less


【解决方案1】:

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

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

【讨论】:

  • 我认为您不必为 mySQL 带来更多流量 - 只需将所有用户保留在内存中(例如,按用户 ID 的大哈希表 - 这是绝对可行的)。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多