内存缓存加上Google App Engine中的互斥锁?

时间:2017-05-27 20:28:34

标签: google-app-engine caching server scalability wsgi

我正在开展一个非常有趣的项目,我们希望将游戏状态保留在内存中。当服务器启动时,它会从数据库加载游戏状态,这是它从数据库中读取的唯一时间。每当服务器更改其内存中游戏状态时,它将向数据库发出相应的写入。

每个游戏只由一个服务器写入,如果客户端向错误的服务器发送更新,则会告知正确的服务器URL,客户端可以再次尝试。

所以,我正在寻找一种方法让这款游戏状态在App Engine的内存中持续存在,但我很难过。我看到的任何地方都说不应该像这样在内存中存在状态,但这是我们系统的要求。

如何在App Engine服务器中拥有状态?

PS。请不要告诉我改变我的设计,以便我的服务器中没有状态,这是一个很难的要求。

1 个答案:

答案 0 :(得分:0)

每个实例都有自己的实例内存,您可以在设置中指定。

您将要面对的问题:

  1. 将请求路由到"更正"实例
  2. 可以随时重启实例。
  3. 你可以将你的游戏状态保存在Memcache中,它充当"记忆"由您的所有实例共享。通过这种方式,您的实例可能变为“无国籍”状态。 - 每个实例都找到正确的游戏"在Memcache中更新它(然后是数据存储区)。