我创建了一个在线游戏,使用 java-appengine 作为后端。// 我的游戏使用 websocket ,使用通道 API 但我的一些对象需要持久性存在于应用程序上。
- 静态对象很好,但在 appengine 中很糟糕,因为无法管理实例的启停
- - Memcache 是一样的,无法控制它何时 exp(有办法让它永远不会 exp 吗?)
- - 数据存储非常慢且昂贵
我在 appengine java 上寻找解决方案保存游戏对象
我创建了一个在线游戏,使用 java-appengine 作为后端。// 我的游戏使用 websocket ,使用通道 API 但我的一些对象需要持久性存在于应用程序上。
我在 appengine java 上寻找解决方案保存游戏对象
您可以在后端运行,但它确实不能扩展。
您可能需要做的是确定 App Engine 是否真的是您要用于构建游戏的平台。如果数据存储性能不适合您,您可能需要另一种架构。您很可能需要更传统的客户端/服务器架构。
此外,如果没有关于游戏架构的更多信息,很难回答您的问题。
Memcached 是要走的路,你无法控制它,但如果你想使用应用程序引擎,就会有妥协。我在 python 上使用 Memcache 的经验是,大多数情况下,当实例运行时,缓存是有效的。即使在关闭的实例之间,它似乎也不会经常过期。当我检查我的日志时,我通常只会在实例之间有很长一段时间(小时+)时看到 Memcache 创建过期对象。
您应该在 Java 和 Python 上分析您的代码,因为具有更快启动时间的 Python 可能更适合您的应用程序。或者,如果您必须使用 java,您可能希望保留几个空闲实例,以便能够在没有启动延迟的情况下处理请求。您也许可以使用 Cron 任务来保持 memcache 新鲜我还没有尝试过这个,因为我的代码通常不是那么敏感。