【问题标题】:In-memory cache plus mutex in Google App Engine?Google App Engine 中的内存缓存和互斥锁?
【发布时间】:2017-10-28 12:20:06
【问题描述】:

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

每个游戏只由一个服务器写入,如果客户端将更新发送到错误的服务器,它会被告知正确的服务器的 url,客户端可以重试。

所以,我正在寻找一种方法让这个游戏状态在 App Engine 的内存中持续存在,但我遇到了困难。我看到的每一个地方都说不应该在内存中拥有这样的状态,但这是我们系统的要求。

如何在 App Engine 服务器中设置状态?

附言。请不要告诉我更改我的设计以使我的服务器中没有状态,这是一个硬性要求。

【问题讨论】:

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


    【解决方案1】:

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

    你将要面对的问题:

    1. 将请求路由到“正确”的实例。
    2. 可以随时重新启动实例。

    您可以将游戏状态保存在 Memcache 中,它充当所有实例共享的“内存”。这样,您的实例可能会变成“无状态”——每个实例在 Memcache 中找到正确的“游戏”并更新它(然后是 Datastore)。

    【讨论】:

    • 谢谢!所以如果我理解正确的话,有实例内存,还有内存缓存。我将在未来某个时候探索切换到与 memcache 更兼容的模型,但现在,我将尝试使用实例内存方法。在设置中哪里可以找到?我看到了内存缓存设置和云存储桶设置,但没有看到实例内存...
    • 您在部署描述中定义“实例类”,例如appengine-web.xml 或 app.yaml(取决于您的运行时)。见:cloud.google.com/appengine/docs/standard/#instance_classes
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多