扩展有状态服务器

时间:2020-06-16 14:03:22

标签: architecture scaling stateful

我现在有点建筑难题。我正在构建一个Texas Holdem Poker应用程序,并且正在尝试一种扩展状态服务器的方法。

该服务器位于节点js中,并且可与Pomelo一起使用(如果我没记错的话,该库建立在Socket.io之上)。服务器管理所有游戏逻辑,因此是有状态的。

我正在考虑使用像redis这样的“缓存即服务”解决方案,但是我不确定它是否能完成这项工作。

如果有人可以给我指导或向我推荐有关该主题的漂亮文章,我真的很感兴趣。如今,扩展无状态服务简直是小菜一碟,但是(几乎)从来没有说过它们的有状态服务。

谢谢!

编辑:显然,这是一个基于意见的问题,所以让我重新表述...如何扩展有状态的socket.io服务器,该服务器在缓存中维护表数据(针对每个扑克游戏)?目前,我想到了两种解决方案。可以使用redis的pub / sub功能,也可以使用像Amazon的ElastiCache这样的缓存作为服务提供者。任何人都可以向我推荐文章或任何可以帮助我阐明并更好地理解此问题的东西?

2 个答案:

答案 0 :(得分:1)

对于我来说,目前尚不清楚您的应用程序体系结构到底是什么,但请看以下两个示例:

https://docs.microsoft.com/en-us/samples/azure-samples/scaling-stateful-java-web-app-on-azure/scaling-stateful-apps-java-sample/

https://medium.com/walkme-engineering/horizontal-scaling-of-a-stateful-server-with-redis-pub-sub-fc56c875b1aa

如果您正在使用云,则任务可能会更容易。

如果您描述更多组件,我会尽力帮助您。

答案 1 :(得分:0)

您拥有哪些数据?

是否正在使用外部数据库?

我将使用缓存来保持会话持久性,并使用DB来存储长期数据(SQL或NoSQL)。

将其移至这些服务可以使您将服务移至kubernetes或lambda。因为您的所有应用程序都是无状态的。

致谢