在哪里存储用户特定的在线游戏数据

时间:2016-07-16 20:03:12

标签: playframework memcached online-game

我正在尝试使用Play框架创建一个在线棋盘游戏。这是我的第一个这样的申请。为最终用户提供良好的响应时间非常重要。 让我们想象一个像垄断这样的游戏,其中多个用户玩游戏,购买不同的位置,在该位置建造房屋或酒店等。 用户在每次转动时都会对该用户特定的电路板外观进行一些更改。例如,如果董事会有40个位置,当user1购买location1时,在他的下一个回合中,董事会应该以他已经购买location1的方式向他看。 董事会的观点因不同的用户而不同,因为他们根据他们的行动类型来玩游戏。

所以问题是,在游戏进行过程中,我在哪里存储用户特定数据,而不会影响每次检索电路板数据的响应时间? 如果它是缓存,那么可以为每个用户放入缓存的可接受的数据限制是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

解决方案强制取决于您的环境。对于缓存,您需要指出策略和实现。

如果您的Web应用程序仅在一台服务器上运行,您的任务很简单,您可以使用进程内缓存并使用.Net Cache(如果您使用.Net)或可在大多数框架中使用的memcache实现它。但是,如果您有多个服务器要共享和访问缓存数据,则需要使用进程外缓存,您可以使用内存缓存或任何其他缓存提供程序,这些缓存提供程序可以让您从内存缓存中访问内存缓存。应用。

您将游戏模型存储在缓存中,并在玩家更改时更新它。在这种方法中,您可以始终保持模型的状态并从缓存中读取它。

当你的应用程序依赖于缓存时要小心它可能有风险,因为如果缓存不可用则整个游戏都会丢失。尝试将模型保留在数据库中。您可以将游戏数据保存在数据库中,但在特定数量的操作后更新,而不是每次操作都会更新。

您还可以使用比SQL数据库快得多的No-Sql数据库(不比内存缓存快)并且与缓存相比具有很强的持久性。您可以将实时游戏数据存储在No-sql数据库中,并将其他数据保存在sql数据库中。所以你可以有一个混合解决方案。