【问题标题】:Number of sessions with node.js/express for a game游戏中使用 node.js/express 的会话数
【发布时间】:2014-12-11 08:14:00
【问题描述】:

我想使用 Node.js/Express/Passport 创建一个基于选择的文本冒险游戏,客户端是带有 jQ​​uery 的 HTML5。为了更好地理解我想要什么,以下是游戏目前的运作方式:

  • 客户端的浏览器通过 jQuery 向服务器发送一个 JSON 对象来设置一个新游戏。
  • 服务器启动一个新的 Express 会话并发送一个带有场景文本和选择按钮数据的 JSON 对象。
  • 客户端单击一个选项,将 JSON 对象发送到服务器,其中包含接下来要调用的场景等信息。

这会贯穿整个游戏,并且服务器会每隔一段时间访问会话数据以修改玩家的库存、健康状况等。

如果我希望游戏能够同时支持数百名玩家,我如何让 Express 一次处理这么多会话?我主要关心的是 node.js 服务器的整体速度,以及 RAM 使用情况。

【问题讨论】:

  • 为什么不自己试试看呢?模拟它应该不难。
  • 我敢肯定,如果你投入足够的 CPU 速度和 RAM,任何这样的测试都会奏效,但我更关心的是 正确的 方法。我似乎找不到任何有关处理数百个会话的正确方法的文档。
  • 嗯,这与您最初提出的问题不同。如果你还没有尝试过,你怎么知道你找到的解决方案是“错误的”?
  • 谢谢,我已经更新了我的问题。我发现的大多数解决方案都是关于水平和垂直缩放的,我没有遇到任何描述处理大量会话数据的正确方法的方法。

标签: javascript jquery json node.js session


【解决方案1】:

100s 不是很多 :) 在那个量下,您可能不需要特别考虑这一点 - 在解决它之前看看您是否有问题。文件 I/O 可能是这里的主要瓶颈,因此请尽可能将全局游戏数据缓存在内存中。如果您确实发现遇到了规模问题,请首先使用节点 cluster 模块在同一台机器上利用多个 CPU……如果这还不够,您可以在多台服务器上运行节点代码并坚持使用他们面前的负载均衡器。扩展的关键是将会话状态存储在任何服务器都可以访问的数据库中。

【讨论】:

  • 感谢您的回答。我已经考虑将会话数据保存在数据库中,我将尝试使用 MongoDB 的 Passport。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2014-09-14
  • 1970-01-01
相关资源
最近更新 更多