我应该为每个游戏室产生一个新的节点进程吗?

问题描述 投票:0回答:1

我正在node.js上制作纸牌游戏,我正在考虑为每个游戏室产生一个新进程。我计划使用fork()进行连接。经过一番研究后,我发现这不是最好的方法,因为每个物理核心都应该有一个节点进程。但是,对于可扩展性和模块化,我的方法不是更好吗?如果让我们说游戏室崩溃,那么它们就不会崩溃。有人能帮我分析一下情况好一点吗?我计划在aws EC2实例上运行游戏,并期望最多1500个并发用户,在4人的房间玩,并与socket.io消息通信。

node.js socket.io scalability
1个回答
0
投票

单个Node实例可以处理这种类型的负载,因为NodeJS的一个强点是实时通信和许多并发连接。

关于崩溃,你需要计划那些。一些初步提示:

  • 捕获错误并记录错误消息,以便您的Node实例不会完全失败。通常,错误可能会阻止特定功能链正确完成,但不会终止您的进程。
  • 将您的游戏状态保留到另一个服务(如数据库),以便事物(如连接)可以恢复。用例示例:“用户失去连接并重新登录,他们重新连接到房间,可以看到游戏处于当前状态”
  • 您可以通过运行诸如forever或PM2(还有其他)之类的东西来自动恢复您的Node进程。这些将监视并重新启动进程失败(尽管这不应该经常发生)。
© www.soinside.com 2019 - 2024. All rights reserved.