使用 nodejs 处理 Websockets 通道状态
Handling Websockets channel states with nodejs
我正在尝试创建一个同时进行多个游戏会话的在线游戏。我当前的设置有一个 NODEJS 服务器处理所有会话状态。如果我希望它具有可扩展性,我该怎么做呢?我相信在同时发生一定数量的事情后,服务器可能会不堪重负。我不确定是否有办法在每个游戏会话或其他类型的方法中实例化一个 Nodejs 服务器。我将不胜感激能为我指明正确方向的任何信息。
谢谢!
您可以通过多种方式实现可扩展性。
一种方法是拥有多个服务器实例并使用负载平衡器将流量重定向到一个服务器。
如果状态仅在服务器内存中,而不存储在服务器之间的共享存储中,则有一些方法可以使给定用户始终访问同一服务器。
我建议阅读有关该主题的这篇文章(来自可能用于该主题的 haproxy):https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/.
对于更高级的配置,有一些工具可以根据负载启动和停止实例。
话虽这么说,但我建议您牢记这一点,但现在需要进行最少的设置。 Over-engineering 虽然简单的解决方案可行,但往往不是一个好主意。
我正在尝试创建一个同时进行多个游戏会话的在线游戏。我当前的设置有一个 NODEJS 服务器处理所有会话状态。如果我希望它具有可扩展性,我该怎么做呢?我相信在同时发生一定数量的事情后,服务器可能会不堪重负。我不确定是否有办法在每个游戏会话或其他类型的方法中实例化一个 Nodejs 服务器。我将不胜感激能为我指明正确方向的任何信息。
谢谢!
您可以通过多种方式实现可扩展性。
一种方法是拥有多个服务器实例并使用负载平衡器将流量重定向到一个服务器。
如果状态仅在服务器内存中,而不存储在服务器之间的共享存储中,则有一些方法可以使给定用户始终访问同一服务器。
我建议阅读有关该主题的这篇文章(来自可能用于该主题的 haproxy):https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/.
对于更高级的配置,有一些工具可以根据负载启动和停止实例。
话虽这么说,但我建议您牢记这一点,但现在需要进行最少的设置。 Over-engineering 虽然简单的解决方案可行,但往往不是一个好主意。